<?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>155005</bug_id>
          
          <creation_ts>2016-03-03 19:56:12 -0800</creation_ts>
          <short_desc>Remove &quot;virtual&quot; from all lines that have both &quot;virtual&quot; and &quot;override&quot;</short_desc>
          <delta_ts>2016-03-11 01:04:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fred.wang</cc>
    
    <cc>ggaren</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170469</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 19:56:12 -0800</bug_when>
    <thetext>Remove &quot;virtual&quot; from all lines that have both &quot;virtual&quot; and &quot;override&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170471</commentid>
    <comment_count>1</comment_count>
      <attachid>272821</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 20:02:42 -0800</bug_when>
    <thetext>Created attachment 272821
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170472</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 20:03:27 -0800</bug_when>
    <thetext>Wow, 3 MB patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170474</commentid>
    <comment_count>3</comment_count>
      <attachid>272821</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 20:06:38 -0800</bug_when>
    <thetext>Comment on attachment 272821
Patch

Not sure why the patch doesn’t apply. Let me try to rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170476</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 20:08:56 -0800</bug_when>
    <thetext>The content of attachment 272821 has been deleted by
    Darin Adler &lt;darin@apple.com&gt;
without providing any reason.

The token used to delete this attachment was generated at 2016-03-03 20:08:53 PST.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170477</commentid>
    <comment_count>5</comment_count>
      <attachid>272822</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-03 20:09:59 -0800</bug_when>
    <thetext>Created attachment 272822
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170478</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-03 20:12:43 -0800</bug_when>
    <thetext>Attachment 272822 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/DrawingAreaProxyImpl.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h:77:  The parameter name &quot;bufferedTime&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1778:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1804:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1831:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2021:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:2046:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/html/HTMLLinkElement.h:87:  The parameter name &quot;sheet&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:110:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:127:  The parameter name &quot;volume&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WTF/wtf/WorkQueue.h:72:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:56:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit2/UIProcess/API/gtk/WebKitColorChooser.h&quot;
ERROR: Source/WebCore/inspector/InspectorReplayAgent.h:107:  The parameter name &quot;segmentState&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h:48:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:64:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/mac/WebCoreSupport/WebInspectorClient.h:120:  The parameter name &quot;height&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/platform/graphics/transforms/SkewTransformOperation.h:49:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/graphics/transforms/MatrixTransformOperation.h:54:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/platform/graphics/transforms/RotateTransformOperation.h:56:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:65:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:71:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:76:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:156:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:48:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:84:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:87:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Cocoa/UIDelegate.h:88:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 31 in 1432 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>1170482</commentid>
    <comment_count>7</comment_count>
      <attachid>272822</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-03 20:23:27 -0800</bug_when>
    <thetext>Comment on attachment 272822
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170678</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-04 08:47:56 -0800</bug_when>
    <thetext>Committed r197563: &lt;http://trac.webkit.org/changeset/197563&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170756</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-04 09:20:44 -0800</bug_when>
    <thetext>Committed r197566: &lt;http://trac.webkit.org/changeset/197566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170931</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-03-04 10:26:18 -0800</bug_when>
    <thetext>Why is it beneficial to not have both virtual &amp; override?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171078</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-04 15:27:53 -0800</bug_when>
    <thetext>Did you read either of the threads on webkit-dev about this? We discussed it at length. Antti originally suggested it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>272821</attachid>
            <date>2016-03-03 20:02:42 -0800</date>
            <delta_ts>2016-03-03 20:08:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155005-20160303200203.patch</filename>
            <type>text/plain</type>
            <size>0</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64"></data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272822</attachid>
            <date>2016-03-03 20:09:59 -0800</date>
            <delta_ts>2016-03-03 20:23:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155005-20160303200923.patch</filename>
            <type>text/plain</type>
            <size>3079306</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tCmluZGV4IDcyMzY4NzcxZGNjNWQ1ODNhODg3YzUxMzcz
NTEwMmMwMGM4ZmFiYzkuLmFjZTQ4OTg2NjVlM2VhOWYwNTk1NDA3N2FmNzUxZWM4MjRiMTNiY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1t
CkBAIC0zNiw4ICszNiw4IEBACiAKIGNsYXNzIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVy
IDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKikgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0LCBKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7
CiB9OwogCiBzdGF0aWMgSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIqIGpzQVBJV3JhcHBl
ck9iamVjdEhhbmRsZU93bmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNNYW5hZ2VkVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTTWFuYWdl
ZFZhbHVlLm1tCmluZGV4IDFjMWY3YTJlNDBmMjIwMzNkNDQxMzI3NGMyZDI0ZTdlNzdkNWMwOTcu
LmU3ODhiNWMwYTQxMTBhYTBiOGQzM2M0NmY4NmMwOGY2YWNiNDQ5ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNNYW5hZ2VkVmFsdWUubW0KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU01hbmFnZWRWYWx1ZS5tbQpAQCAtNDIsOCArNDIsOCBAQAogCiBj
bGFzcyBKU01hbmFnZWRWYWx1ZUhhbmRsZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQq
IGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmFsaXpl
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOworICAg
IGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3du
Piwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpIG92ZXJyaWRlOwogfTsKIAogc3Rh
dGljIEpTTWFuYWdlZFZhbHVlSGFuZGxlT3duZXIqIG1hbmFnZWRWYWx1ZUhhbmRsZU93bmVyKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rp
b24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1t
CmluZGV4IGNhYTUyOTRmMjBkNTViNmU2YWMxZDJhNzIwNzVjMGE5YzkzMmQxODYuLjYxOTljNzlh
NDJjZjhlN2NhNWIwNGQ1YWMxMWJkMmFkOTY5ZGIxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpAQCAtNTcsNyArNTcsNyBAQCBD
YWxsYmFja0FyZ3VtZW50Ojp+Q2FsbGJhY2tBcmd1bWVudCgpCiB9CiAKIGNsYXNzIENhbGxiYWNr
QXJndW1lbnRCb29sZWFuIDogcHVibGljIENhbGxiYWNrQXJndW1lbnQgewotICAgIHZpcnR1YWwg
dm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1i
ZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiop
IG92ZXJyaWRlCisgICAgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVn
ZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVu
dCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBib29sIHZhbHVlID0gSlNW
YWx1ZVRvQm9vbGVhbihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBhcmd1bWVudCk7CiAg
ICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVt
YmVyXTsKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgQ2FsbGJhY2tBcmd1bWVudEJvb2xlYW4gOiBw
dWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBD
YWxsYmFja0FyZ3VtZW50SW50ZWdlciA6IHB1YmxpYyBDYWxsYmFja0FyZ3VtZW50IHsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgTlNJbnRlZ2VyIGFyZ3Vt
ZW50TnVtYmVyLCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYgYXJndW1lbnQsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikgb3ZlcnJpZGUKKyAgICB2b2lkIHNldChOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24sIE5TSW50ZWdlciBhcmd1bWVudE51bWJlciwgSlNDb250ZXh0ICpjb250ZXh0LCBK
U1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBUIHZhbHVlID0gKFQpSlNDOjp0b0ludDMyKEpTVmFsdWVUb051bWJlcihbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBhcmd1bWVudCwgZXhjZXB0aW9uKSk7CiAgICAgICAg
IFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVtYmVyXTsK
QEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgQ2FsbGJhY2tBcmd1bWVudEludGVnZXIgOiBwdWJsaWMg
Q2FsbGJhY2tBcmd1bWVudCB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBDYWxsYmFj
a0FyZ3VtZW50RG91YmxlIDogcHVibGljIENhbGxiYWNrQXJndW1lbnQgewotICAgIHZpcnR1YWwg
dm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1i
ZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKSBvdmVycmlkZQorICAgIHZvaWQgc2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlv
biwgTlNJbnRlZ2VyIGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVS
ZWYgYXJndW1lbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIFQgdmFsdWUgPSAoVClKU1ZhbHVlVG9OdW1iZXIoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgYXJndW1lbnQsIGV4Y2VwdGlvbik7CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3Vt
ZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVtYmVyXTsKQEAgLTgzLDcgKzgzLDcgQEAgY2xh
c3MgQ2FsbGJhY2tBcmd1bWVudERvdWJsZSA6IHB1YmxpYyBDYWxsYmFja0FyZ3VtZW50IHsKIH07
CiAKIGNsYXNzIENhbGxiYWNrQXJndW1lbnRKU1ZhbHVlIDogcHVibGljIENhbGxiYWNrQXJndW1l
bnQgewotICAgIHZpcnR1YWwgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0lu
dGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1
bWVudCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRlCisgICAgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwg
SlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6YXJndW1lbnQg
aW5Db250ZXh0OmNvbnRleHRdOwogICAgICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomdmFs
dWUgYXRJbmRleDphcmd1bWVudE51bWJlcl07CkBAIC05MSw3ICs5MSw3IEBAIGNsYXNzIENhbGxi
YWNrQXJndW1lbnRKU1ZhbHVlIDogcHVibGljIENhbGxiYWNrQXJndW1lbnQgewogfTsKIAogY2xh
c3MgQ2FsbGJhY2tBcmd1bWVudElkIDogcHVibGljIENhbGxiYWNrQXJndW1lbnQgewotICAgIHZp
cnR1YWwgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1l
bnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1
ZVJlZiopIG92ZXJyaWRlCisgICAgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBO
U0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBh
cmd1bWVudCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZCB2YWx1ZSA9
IHZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnQpOwogICAgICAgICBbaW52b2NhdGlvbiBz
ZXRBcmd1bWVudDomdmFsdWUgYXRJbmRleDphcmd1bWVudE51bWJlcl07CkBAIC0xMDYsNyArMTA2
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgc2V0KE5T
SW52b2NhdGlvbiAqaW52b2NhdGlvbiwgTlNJbnRlZ2VyIGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRl
eHQgKmNvbnRleHQsIEpTVmFsdWVSZWYgYXJndW1lbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikg
b3ZlcnJpZGUKKyAgICB2b2lkIHNldChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdl
ciBhcmd1bWVudE51bWJlciwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBKU0dsb2Jh
bENvbnRleHRSZWYgY29udGV4dFJlZiA9IFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl07CiAK
QEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgQ2FsbGJhY2tBcmd1bWVu
dE5TTnVtYmVyIDogcHVibGljIENhbGxiYWNrQXJndW1lbnQgewotICAgIHZpcnR1YWwgdm9pZCBz
ZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpT
Q29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKSBvdmVycmlkZQorICAgIHZvaWQgc2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgTlNJ
bnRlZ2VyIGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYgYXJn
dW1lbnQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlk
IHZhbHVlID0gdmFsdWVUb051bWJlcihbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBhcmd1
bWVudCwgZXhjZXB0aW9uKTsKICAgICAgICAgW2ludm9jYXRpb24gc2V0QXJndW1lbnQ6JnZhbHVl
IGF0SW5kZXg6YXJndW1lbnROdW1iZXJdOwpAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIENhbGxi
YWNrQXJndW1lbnROU051bWJlciA6IHB1YmxpYyBDYWxsYmFja0FyZ3VtZW50IHsKIH07CiAKIGNs
YXNzIENhbGxiYWNrQXJndW1lbnROU1N0cmluZyA6IHB1YmxpYyBDYWxsYmFja0FyZ3VtZW50IHsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgTlNJbnRlZ2Vy
IGFyZ3VtZW50TnVtYmVyLCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYgYXJndW1lbnQs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikgb3ZlcnJpZGUKKyAgICB2b2lkIHNldChOU0ludm9jYXRp
b24gKmludm9jYXRpb24sIE5TSW50ZWdlciBhcmd1bWVudE51bWJlciwgSlNDb250ZXh0ICpjb250
ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBpZCB2YWx1ZSA9IHZhbHVlVG9TdHJpbmcoW2NvbnRleHQgSlNHbG9i
YWxDb250ZXh0UmVmXSwgYXJndW1lbnQsIGV4Y2VwdGlvbik7CiAgICAgICAgIFtpbnZvY2F0aW9u
IHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVtYmVyXTsKQEAgLTE0NSw3ICsx
NDUsNyBAQCBjbGFzcyBDYWxsYmFja0FyZ3VtZW50TlNTdHJpbmcgOiBwdWJsaWMgQ2FsbGJhY2tB
cmd1bWVudCB7CiB9OwogCiBjbGFzcyBDYWxsYmFja0FyZ3VtZW50TlNEYXRlIDogcHVibGljIENh
bGxiYWNrQXJndW1lbnQgewotICAgIHZpcnR1YWwgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNW
YWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBvdmVycmlkZQorICAgIHZv
aWQgc2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgTlNJbnRlZ2VyIGFyZ3VtZW50TnVtYmVy
LCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYgYXJndW1lbnQsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlkIHZhbHVlID0gdmFsdWVUb0RhdGUo
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgYXJndW1lbnQsIGV4Y2VwdGlvbik7CiAgICAg
ICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4OmFyZ3VtZW50TnVtYmVy
XTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBjbGFzcyBDYWxsYmFja0FyZ3VtZW50TlNEYXRlIDogcHVi
bGljIENhbGxiYWNrQXJndW1lbnQgewogfTsKIAogY2xhc3MgQ2FsbGJhY2tBcmd1bWVudE5TQXJy
YXkgOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7Ci0gICAgdmlydHVhbCB2b2lkIHNldChOU0lu
dm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdlciBhcmd1bWVudE51bWJlciwgSlNDb250ZXh0
ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pIG92
ZXJyaWRlCisgICAgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIg
YXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWQgdmFsdWUg
PSB2YWx1ZVRvQXJyYXkoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgYXJndW1lbnQsIGV4
Y2VwdGlvbik7CiAgICAgICAgIFtpbnZvY2F0aW9uIHNldEFyZ3VtZW50OiZ2YWx1ZSBhdEluZGV4
OmFyZ3VtZW50TnVtYmVyXTsKQEAgLTE2MSw3ICsxNjEsNyBAQCBjbGFzcyBDYWxsYmFja0FyZ3Vt
ZW50TlNBcnJheSA6IHB1YmxpYyBDYWxsYmFja0FyZ3VtZW50IHsKIH07CiAKIGNsYXNzIENhbGxi
YWNrQXJndW1lbnROU0RpY3Rpb25hcnkgOiBwdWJsaWMgQ2FsbGJhY2tBcmd1bWVudCB7Ci0gICAg
dmlydHVhbCB2b2lkIHNldChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIE5TSW50ZWdlciBhcmd1
bWVudE51bWJlciwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmIGFyZ3VtZW50LCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pIG92ZXJyaWRlCisgICAgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwg
SlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWQgdmFsdWUgPSB2YWx1ZVRvRGljdGlvbmFyeShbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdLCBhcmd1bWVudCwgZXhjZXB0aW9uKTsKICAgICAgICAgW2ludm9jYXRpb24g
c2V0QXJndW1lbnQ6JnZhbHVlIGF0SW5kZXg6YXJndW1lbnROdW1iZXJdOwpAQCAtMTc3LDcgKzE3
Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBz
ZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJndW1lbnROdW1iZXIsIEpT
Q29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNWYWx1ZVJlZiopIG92ZXJy
aWRlCisgICAgdm9pZCBzZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uLCBOU0ludGVnZXIgYXJn
dW1lbnROdW1iZXIsIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiBhcmd1bWVudCwgSlNW
YWx1ZVJlZiopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IFtKU1Zh
bHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6YXJndW1lbnQgaW5Db250ZXh0OmNvbnRleHRdOwogICAg
ICAgICBbbV9jb252ZXJzaW9uSW52b2NhdGlvbiBpbnZva2VXaXRoVGFyZ2V0OnZhbHVlXTsKQEAg
LTI2OSwxNCArMjY5LDE0IEBAIHB1YmxpYzoKIH07CiAKIGNsYXNzIENhbGxiYWNrUmVzdWx0Vm9p
ZCA6IHB1YmxpYyBDYWxsYmFja1Jlc3VsdCB7Ci0gICAgdmlydHVhbCBKU1ZhbHVlUmVmIGdldChO
U0ludm9jYXRpb24gKiwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1ZhbHVlUmVmKikgb3ZlcnJpZGUK
KyAgICBKU1ZhbHVlUmVmIGdldChOU0ludm9jYXRpb24gKiwgSlNDb250ZXh0ICpjb250ZXh0LCBK
U1ZhbHVlUmVmKikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKICAgICB9CiB9OwogCiBjbGFz
cyBDYWxsYmFja1Jlc3VsdElkIDogcHVibGljIENhbGxiYWNrUmVzdWx0IHsKLSAgICB2aXJ0dWFs
IEpTVmFsdWVSZWYgZ2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgSlNDb250ZXh0ICpjb250
ZXh0LCBKU1ZhbHVlUmVmKikgb3ZlcnJpZGUKKyAgICBKU1ZhbHVlUmVmIGdldChOU0ludm9jYXRp
b24gKmludm9jYXRpb24sIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBpZCB2YWx1ZTsKICAgICAgICAgW2ludm9jYXRpb24gZ2V0UmV0dXJu
VmFsdWU6JnZhbHVlXTsKQEAgLTI4Niw3ICsyODYsNyBAQCBjbGFzcyBDYWxsYmFja1Jlc3VsdElk
IDogcHVibGljIENhbGxiYWNrUmVzdWx0IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNz
IENhbGxiYWNrUmVzdWx0TnVtZXJpYyA6IHB1YmxpYyBDYWxsYmFja1Jlc3VsdCB7Ci0gICAgdmly
dHVhbCBKU1ZhbHVlUmVmIGdldChOU0ludm9jYXRpb24gKmludm9jYXRpb24sIEpTQ29udGV4dCAq
Y29udGV4dCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRlCisgICAgSlNWYWx1ZVJlZiBnZXQoTlNJbnZv
Y2F0aW9uICppbnZvY2F0aW9uLCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYqKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgVCB2YWx1ZTsKICAgICAgICAgW2ludm9jYXRpb24gZ2V0UmV0
dXJuVmFsdWU6JnZhbHVlXTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBjbGFzcyBDYWxsYmFja1Jlc3Vs
dE51bWVyaWMgOiBwdWJsaWMgQ2FsbGJhY2tSZXN1bHQgewogfTsKIAogY2xhc3MgQ2FsbGJhY2tS
ZXN1bHRCb29sZWFuIDogcHVibGljIENhbGxiYWNrUmVzdWx0IHsKLSAgICB2aXJ0dWFsIEpTVmFs
dWVSZWYgZ2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgSlNDb250ZXh0ICpjb250ZXh0LCBK
U1ZhbHVlUmVmKikgb3ZlcnJpZGUKKyAgICBKU1ZhbHVlUmVmIGdldChOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24sIEpTQ29udGV4dCAqY29udGV4dCwgSlNWYWx1ZVJlZiopIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBib29sIHZhbHVlOwogICAgICAgICBbaW52b2NhdGlvbiBnZXRSZXR1cm5WYWx1
ZTomdmFsdWVdOwpAQCAtMzEyLDcgKzMxMiw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgSlNWYWx1ZVJlZiBnZXQoTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
LCBKU0NvbnRleHQgKmNvbnRleHQsIEpTVmFsdWVSZWYqKSBvdmVycmlkZQorICAgIEpTVmFsdWVS
ZWYgZ2V0KE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiwgSlNDb250ZXh0ICpjb250ZXh0LCBKU1Zh
bHVlUmVmKikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFtpbnZvY2F0aW9uIGdldFJldHVyblZh
bHVlOm1fYnVmZmVyXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludEJhc2UuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BZGFwdGl2ZUluZmVycmVkUHJvcGVydHlWYWx1ZVdh
dGNocG9pbnRCYXNlLmgKaW5kZXggM2ZkMDIyMzAzZTY3MDYxOGZlNzRkZjFlNGMwZTYzODM2YmU5
MDM5ZC4uYjQzYmEzYWM4MjlkNGJkMDQ3MTk5OGE3NTc0NTlmNzg2Yzg2NjMzNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0
eVZhbHVlV2F0Y2hwb2ludEJhc2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oCkBAIC01NCwx
MyArNTQsMTMgQEAgcHJpdmF0ZToKICAgICBwdWJsaWM6CiAgICAgICAgIFN0cnVjdHVyZVdhdGNo
cG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50
ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGZpcmVJbnRl
cm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgfTsKICAgICBjbGFzcyBQcm9w
ZXJ0eVdhdGNocG9pbnQgOiBwdWJsaWMgV2F0Y2hwb2ludCB7CiAgICAgcHVibGljOgogICAgICAg
ICBQcm9wZXJ0eVdhdGNocG9pbnQoKSB7IH0KICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGZpcmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgfTsK
IAogICAgIHZvaWQgZmlyZShjb25zdCBGaXJlRGV0YWlsJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDdjZmQ0NzQzZjFiMWQxMDY4YWIxM2Iw
ZDM0ZDJlZjcwNzk2OWRmMjYuLjZmZDcxNjAyYzUyNTE3Y2M3NmM0ZWMxYjU3YjNlYWUwNjRiY2Qx
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBA
IC0xNzI0LDcgKzE3MjQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgb3V0
LnByaW50KCJMaW5raW5nIHB1dF90b19zY29wZSBpbiAiLCBGdW5jdGlvbkV4ZWN1dGFibGVEdW1w
KGpzQ2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihtX2NvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCkpKSwgIiBmb3IgIiwgbV9pZGVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IDk2Y2VlNDBjNzZhMzcwNzVmYWE2OTE2YWUwZjY2OTRl
YmYyYjRmYTUuLmUzMGY3YTZjNTY1NTVlMGFjNWNmZTkyNWNjZmI4YzJlMzUwMzU3ZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKQEAgLTk1LDExICs5NSwx
MSBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgVW5jb25kaXRpb25hbEZpbmFsaXpl
ciA6IHB1YmxpYyBKU0M6OlVuY29uZGl0aW9uYWxGaW5hbGl6ZXIgeyAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3Mg
V2Vha1JlZmVyZW5jZUhhcnZlc3RlciA6IHB1YmxpYyBKU0M6OldlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIgewotICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRv
ciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0
b3ImKSBvdmVycmlkZTsKICAgICB9OwogCiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBv
aW50LmgKaW5kZXggYjVlNmRkMzMwZWIwMjY0OGExNTg0ZDZlMmFkNDk2MGZjOTU0MmZlMC4uOTk0
NDY3NDE3NzA0NWM1Nzg5M2I4MmQ2NDdmZjQwODhmMDdiZGYwMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0pldHRpc29uaW5nV2F0Y2hwb2ludC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tKZXR0aXNvbmlu
Z1dhdGNocG9pbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50ZXJuYWwoY29uc3QgRmlyZURldGFpbCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVhcmluZ1dh
dGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50LmgKaW5kZXggMzc2NjhjM2I5ODg4NTZhNmU0OTlkYWQwNzJiYjIy
YTA2ZGUyMjYwNS4uZTg0OTMxOWJmMGNkMTQ5MWM0YmYzODYwMDZjOTA3NDgxZDk4ZDhhYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJDbGVh
cmluZ1dhdGNocG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3Ry
dWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFN0cnVjdHVyZVN0dWJDbGVhcmluZ1dhdGNocG9pbnQ+
JiBoZWFkKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBmaXJlSW50ZXJuYWwoY29u
c3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlyZUludGVybmFsKGNvbnN0IEZp
cmVEZXRhaWwmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBPYmplY3RQcm9wZXJ0eUNvbmRp
dGlvbiBtX2tleTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9W
YXJpYWJsZVdyaXRlRmlyZURldGFpbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1ZhcmlhYmxlV3JpdGVGaXJlRGV0YWlsLmgKaW5kZXggNjY0ZjY5Y2JiN2IyYzM4Y2U0OGFlZmZm
NmU4OTJkZmQzMGFjNGRkMy4uMzFiOTIwMDQzYWQwN2U4Mjk4YzM5ZTZhZjBjZTk4MWJhYjA0NjZl
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhcmlhYmxlV3Jp
dGVGaXJlRGV0YWlsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zhcmlh
YmxlV3JpdGVGaXJlRGV0YWlsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKICAgICAK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCB0b3VjaChXYXRjaHBvaW50U2V0Kiwg
SlNPYmplY3QqLCBjb25zdCBQcm9wZXJ0eU5hbWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKaW5kZXggODY5ZTkwOGM4MjZmODhjYWNjZjBmMDI1OGU5
NzNkNGY0ZTM5ZDNmMS4uNTZmZTFmMzc3YjUyNDUzMjAwNWE3MDJjZjZkZGVhYTk4MmFhYjM1YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2ludC5oCkBAIC01Nyw3
ICs1Nyw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBk
dW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBjaGFy
KiBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FkYXB0aXZlSW5mZXJyZWRQcm9wZXJ0eVZhbHVlV2F0Y2hwb2ludC5oCmlu
ZGV4IDJlZDRjM2IxODkwMDNhMTJmMTYzMzdjOWVlYjJmMDI2N2VlOTlmNjQuLmMyYzI1MDFhMzI5
NGJlZmE5ZGI1MGY3NDVmODAyYTUyMjVlMjkzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2ZUluZmVycmVkUHJvcGVy
dHlWYWx1ZVdhdGNocG9pbnQuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAgICAgQWRhcHRp
dmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uJiwgQ29kZUJsb2NrKik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUZpcmUoY29uc3QgRmlyZURldGFpbCYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRmlyZShj
b25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2Nr
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkYXB0
aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5oCmluZGV4IGYxNTNlMjNjNTFjNWMxOTNjMTFkN2M0OTRi
MDhjMGI5NDYzMzgyNDAuLjdmMDJhMDZkY2I0OGNhMGNlMjk0Y2E3MWIyNmJmYzJmMjJlYmRiODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRhcHRpdmVTdHJ1Y3R1
cmVXYXRjaHBvaW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBZGFwdGl2
ZVN0cnVjdHVyZVdhdGNocG9pbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbnN0YWxsKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZUludGVybmFs
KGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpcmVJbnRlcm5hbChjb25z
dCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gbV9rZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDBjNWRjMmE5M2I3ODQxYmRjN2Ji
Mjg4NDIxZTBhMDJjMmIxMTExNDYuLjQ2MTU5NjZlZjUyYzViNWY5ZmE3NDNiY2Q5MzE3ZTk1OGJj
ZTQ4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlT
bG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJy
YXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCkBAIC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB9
CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3Bl
Y3VsYXRpdmVKSVQqIGppdCkgb3ZlcnJpZGUKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3Bl
Y3VsYXRpdmVKSVQqIGppdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGxpbmtGcm9tKGppdCk7
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCmluZGV4IDEyNzM5
YWJkNjY0Y2Q0MTNkNzQ5YmRjYjg5MTE0MTY4ZGQxYTFhNDYuLmNhNTU5MWU0NzhmODJkMTk4MzNk
MWNjMjNhMTAzN2JjY2ZmOTI1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9y
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRl
CisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBsaW5rRnJvbShqaXQpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9wbGFucy5zaXplKCk7ICsraSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgog
ICAgIH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFsKFNw
ZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBsaW5rRnJvbShqaXQp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wbGFucy5zaXplKCk7ICsraSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmFpbGVkRmluYWxpemVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZhaWxlZEZpbmFsaXplci5oCmluZGV4
IDFhZmJlMGRjYjY2MWI1ZTkyNmNjNzVmZDRlZjA1NjBkZWE4YmIyNTQuLjI0NGZlNTA1NmQyZGQz
ODk2MDc5OWQwYTYxYjIyY2EwM2QzMWFkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRmFpbGVkRmluYWxpemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGYWlsZWRGaW5hbGl6ZXIuaApAQCAtMzcsOSArMzcsOSBAQCBwdWJsaWM6CiAgICAg
RmFpbGVkRmluYWxpemVyKFBsYW4mKTsKICAgICB2aXJ0dWFsIH5GYWlsZWRGaW5hbGl6ZXIoKTsK
ICAgICAKLSAgICB2aXJ0dWFsIHNpemVfdCBjb2RlU2l6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBmaW5hbGl6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBmaW5hbGl6ZUZ1
bmN0aW9uKCkgb3ZlcnJpZGU7CisgICAgc2l6ZV90IGNvZGVTaXplKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBmaW5hbGl6ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgZmluYWxpemVGdW5jdGlvbigpIG92
ZXJyaWRlOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5oCmluZGV4IGE4Yjk2NjZmMTEyZjNiYzkyMTU1NDljYTY4NGFiODk1OTYx
MzAxNzIuLjVlYzY1YjkwOWM5Y2Y2OWYzOWE2ZDc1NzBiZTIzM2QzNmZiZGYyNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTc4NSw3ICs3ODUsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCByZWdpc3RlckZyb3plblZhbHVlcygpOwogICAgIAotICAgIHZpcnR1YWwg
dm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNp
dENoaWxkcmVuKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgTk9fUkVUVVJOX0RV
RV9UT19DUkFTSCB2b2lkIGhhbmRsZUFzc2VydGlvbkZhaWx1cmUoCiAgICAgICAgIHN0ZDo6bnVs
bHB0cl90LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCmluZGV4IDI0M2UzNTNhMzEwOTk3
OWE2Y2UxYjk1MTg2NTNkMTdmNzczYmRlMDAuLjA1ODc5ZGRlOGM2ZjM3NGU1MThhMjg0NWVkOWY1
ZTY3NjhmMWE5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZS5oCkBAIC01
Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICBKSVRDb2RlKCk7CiAgICAgdmlydHVhbCB+SklUQ29k
ZSgpOwogICAgIAotICAgIHZpcnR1YWwgQ29tbW9uRGF0YSogZGZnQ29tbW9uKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBKSVRDb2RlKiBkZmcoKSBvdmVycmlkZTsKKyAgICBDb21tb25EYXRhKiBk
ZmdDb21tb24oKSBvdmVycmlkZTsKKyAgICBKSVRDb2RlKiBkZmcoKSBvdmVycmlkZTsKICAgICAK
ICAgICBPU1JFbnRyeURhdGEqIGFwcGVuZE9TUkVudHJ5RGF0YSh1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCB1bnNpZ25lZCBtYWNoaW5lQ29kZU9mZnNldCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRGaW5hbGl6ZXIuaAppbmRleCAxMTA0NDJmZTQ4YWVlOTk0NzA5MTll
NGFiZTM3ZjU0NDdhMTM2OGQ4Li43OTEzMTJhOWQzODMyNmQzZDFlMDY3Njc4N2M5OTlkOGU5ZGY5
Zjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXpl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmgKQEAg
LTQwLDkgKzQwLDkgQEAgcHVibGljOgogICAgIEpJVEZpbmFsaXplcihQbGFuJiwgUGFzc1JlZlB0
cjxKSVRDb2RlPiwgc3RkOjp1bmlxdWVfcHRyPExpbmtCdWZmZXI+LCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgd2l0aEFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyOjpFbXB0eVZhbHVlKSk7CiAgICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7CiAg
ICAgCi0gICAgdmlydHVhbCBzaXplX3QgY29kZVNpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgZmluYWxpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZmluYWxpemVGdW5j
dGlvbigpIG92ZXJyaWRlOworICAgIHNpemVfdCBjb2RlU2l6ZSgpIG92ZXJyaWRlOworICAgIGJv
b2wgZmluYWxpemUoKSBvdmVycmlkZTsKKyAgICBib29sIGZpbmFsaXplRnVuY3Rpb24oKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbmFsaXplQ29tbW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRCeVZhbFNsb3dQYXRo
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhbmVTdHJpbmdHZXRC
eVZhbFNsb3dQYXRoR2VuZXJhdG9yLmgKaW5kZXggNTY4Yzg3ODk1ZTljOTNhYzI1ODZmZjM2NDYx
MzMzZGU4ODkxMGNhYi4uODU5OGQ0Y2Y4MGNlYjE0ODQzNzkwZWY3YzQyY2EwNDgxYTI1NTk2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYW5lU3RyaW5nR2V0QnlW
YWxTbG93UGF0aEdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U2FuZVN0cmluZ0dldEJ5VmFsU2xvd1BhdGhHZW5lcmF0b3IuaApAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0
ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCisgICAgdm9pZCBnZW5lcmF0
ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBs
aW5rRnJvbShqaXQpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2xvd1BhdGhHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU2xvd1BhdGhHZW5lcmF0b3IuaAppbmRleCBlNTk1YzM4M2M2OTI0NDRkODdmYWU1YmRiYTQ0
NDQwN2FkZDM5MTQzLi4zMzdjM2M5MmNkNzM1NmUxZDc5MTlkNGJlNDNhMzAzYTM0OTBiMzdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5o
CkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgaml0LT5zaWxlbnRTcGls
bEFsbFJlZ2lzdGVyc0ltcGwoZmFsc2UsIG1fcGxhbnMsIGV4dHJhY3RSZXN1bHQocmVzdWx0KSk7
CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCgpIGNv
bnN0IG92ZXJyaWRlCisgICAgTWFjcm9Bc3NlbWJsZXI6OkNhbGwgY2FsbCgpIGNvbnN0IG92ZXJy
aWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9jYWxsOwogICAgIH0KQEAgLTE3Miw3ICsxNzIs
NyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBn
ZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCisgICAgdm9pZCBn
ZW5lcmF0ZUludGVybmFsKFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICB0aGlzLT5zZXRVcChqaXQpOwogICAgICAgICB0aGlzLT5yZWNvcmRDYWxsKGppdC0+Y2Fs
bE9wZXJhdGlvbih0aGlzLT5tX2Z1bmN0aW9uLCBleHRyYWN0UmVzdWx0KHRoaXMtPm1fcmVzdWx0
KSkpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkg
b3ZlcnJpZGUKKyAgICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHRoaXMtPnNldFVwKGppdCk7CiAgICAgICAgIHRoaXMt
PnJlY29yZENhbGwoaml0LT5jYWxsT3BlcmF0aW9uKHRoaXMtPm1fZnVuY3Rpb24sIGV4dHJhY3RS
ZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBtX2FyZ3VtZW50MSkpOwpAQCAtMjI0LDcgKzIyNCw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGdlbmVy
YXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgb3ZlcnJpZGUKKyAgICB2b2lkIGdlbmVy
YXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IHRoaXMtPnNldFVwKGppdCk7CiAgICAgICAgIHRoaXMtPnJlY29yZENhbGwoaml0LT5jYWxsT3Bl
cmF0aW9uKHRoaXMtPm1fZnVuY3Rpb24sIGV4dHJhY3RSZXN1bHQodGhpcy0+bV9yZXN1bHQpLCBt
X2FyZ3VtZW50MSwgbV9hcmd1bWVudDIpKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6ICAgIAotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUludGVybmFs
KFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCisgICAgdm9pZCBnZW5lcmF0ZUludGVybmFs
KFNwZWN1bGF0aXZlSklUKiBqaXQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICB0aGlzLT5zZXRV
cChqaXQpOwogICAgICAgICB0aGlzLT5yZWNvcmRDYWxsKApAQCAtNDM2LDcgKzQzNiw3IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVJbnRl
cm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KSBvdmVycmlkZQorICAgIHZvaWQgZ2VuZXJhdGVJbnRl
cm5hbChTcGVjdWxhdGl2ZUpJVCogaml0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgdGhpcy0+
bGlua0Zyb20oaml0KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtYmVyT2ZBc3NpZ25t
ZW50czsgaS0tOykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGVkOTRiNjc0YTFhNzMzNjY1MmI4NzViYzA3ZTcwNjY3NWFkY2Yw
ZDQuLjE5OWRiMWM4YjY0NWViNThkM2EyNmY3NjMxZmI0MzZhM2VkNzEwZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNDA4
LDcgKzQwOCw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgb3ZlcnJpZGUKKyAg
ICB2b2lkIGdlbmVyYXRlSW50ZXJuYWwoU3BlY3VsYXRpdmVKSVQqIGppdCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIHRoaXMtPnNldFVwKGppdCk7CiAgICAgICAgIHRoaXMtPnJlY29yZENhbGwo
aml0LT5jYWxsT3BlcmF0aW9uKHRoaXMtPm1fZnVuY3Rpb24sIHRoaXMtPm1fcmVzdWx0LCBtX2Fy
ZzEsIG1fYXJnMikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRl
bkdDQWN0aXZpdHlDYWxsYmFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvRWRlbkdD
QWN0aXZpdHlDYWxsYmFjay5oCmluZGV4IDIxNGFiNDNkY2EwZThjYmFlYzk5OTVhZmFlMjNkM2I3
ZjMyZDAyNWMuLmY3NWNlNWJkZDVkZWQ4YzJhZGY2M2FhNDZkZWEyMTk4MzAzODQ4NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0VkZW5HQ0FjdGl2aXR5Q2FsbGJhY2su
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9FZGVuR0NBY3Rpdml0eUNhbGxiYWNr
LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRWRlbkdDQWN0aXZp
dHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgogICAgIEVk
ZW5HQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvQ29sbGVj
dGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICNpZiBVU0UoQ0YpCkBAIC00NCw5ICs0NCw5IEBAIHByb3RlY3RlZDoKICAgICB9
CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0aCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJpZGU7CisgICAgZG91YmxlIGxhc3RH
Q0xlbmd0aCgpIG92ZXJyaWRlOworICAgIGRvdWJsZSBnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMp
IG92ZXJyaWRlOworICAgIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlkZTsKIH07CiAKIGlubGlu
ZSBSZWZQdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZUVk
ZW5UaW1lcihIZWFwKiBoZWFwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvRnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
RnVsbEdDQWN0aXZpdHlDYWxsYmFjay5oCmluZGV4IGU3Mjc1OTJlMjc4ZWJiZDljNjMwMzU2NjE3
ZmQzZTVhMjBlZjM4MzguLjJhZDc4YjAzYjMyOTQzODNjYzVjOTc2ZDU2M2IyNDA3OGFiZGI4ZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Z1bGxHQ0FjdGl2aXR5Q2Fs
bGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9GdWxsR0NBY3Rpdml0eUNh
bGxiYWNrLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgRnVsbEdD
QWN0aXZpdHlDYWxsYmFjayA6IHB1YmxpYyBHQ0FjdGl2aXR5Q2FsbGJhY2sgewogcHVibGljOgog
ICAgIEZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soSGVhcCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRv
Q29sbGVjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZG9Db2xsZWN0aW9uKCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIGRpZFN5bmNHQ1JlY2VudGx5KCkgY29uc3QgeyByZXR1cm4gbV9kaWRTeW5j
R0NSZWNlbnRseTsgfQogICAgIHZvaWQgc2V0RGlkU3luY0dDUmVjZW50bHkoKSB7IG1fZGlkU3lu
Y0dDUmVjZW50bHkgPSB0cnVlOyB9CkBAIC00Nyw5ICs0Nyw5IEBAIHByb3RlY3RlZDoKICAgICB9
CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgZG91YmxlIGxhc3RHQ0xlbmd0aCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgZG91YmxlIGdjVGltZVNsaWNlKHNpemVfdCBieXRlcykgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBkb3VibGUgZGVhdGhSYXRlKCkgb3ZlcnJpZGU7CisgICAgZG91YmxlIGxhc3RH
Q0xlbmd0aCgpIG92ZXJyaWRlOworICAgIGRvdWJsZSBnY1RpbWVTbGljZShzaXplX3QgYnl0ZXMp
IG92ZXJyaWRlOworICAgIGRvdWJsZSBkZWF0aFJhdGUoKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
bV9kaWRTeW5jR0NSZWNlbnRseSB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NBY3Rpdml0eUNhbGxiYWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2FsbGJhY2suaAppbmRleCBjMDI4M2U5MzQ3ZDA3NTc1MGJi
MGQwZjZhZjAxMDcwNjQxZjY1ZWQ2Li41NjhmOTcxZmE4OTIxMjJmMjI3NTJiYjZkMzQ5MjNmZjZh
YTdmMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5
Q2FsbGJhY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ0FjdGl2aXR5Q2Fs
bGJhY2suaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAKICAgICBHQ0FjdGl2aXR5Q2FsbGJh
Y2soSGVhcCopOwogCi0gICAgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJyaWRlOworICAgIHZv
aWQgZG9Xb3JrKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9Db2xsZWN0aW9uKCkg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggMTEwYWMyNzAyNWRlODgzMDI4
OTRlNzJjNTU5MmY0ZDJmN2JiZGRlZS4uYWUyMmVkN2Y4NmJhOWUxMjY5ZTE2NjYyZmJmNzdhNDRm
M2EwYzNmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMjg3LDcgKzI4Nyw3IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYU1lbW9yeSA9IDI1NjsK
ICAgICAKICAgICBjbGFzcyBGaW5hbGl6ZXJPd25lciA6IHB1YmxpYyBXZWFrSGFuZGxlT3duZXIg
ewotICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSGFuZGxlPFVua25vd24+LCB2b2lkKiBj
b250ZXh0KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmaW5hbGl6ZShIYW5kbGU8VW5rbm93bj4s
IHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCmluZGV4IDZkYWJlYTU2YjllZWY3NTg2MGQ5
YmFmMTUzNzlkODM1MWVjZGZlODguLjQ0NDdiY2EzNWM2NjJjY2JlN2YyZmMzZjFmNGVjYzUzZDc5
ZjFiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFs
U3dlZXBlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5oCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc3RhcnRTd2VlcGlu
ZygpOwogCi0gICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGRvV29yaygpIG92ZXJy
aWRlOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgZG9Xb3JrKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBzd2VlcE5leHRCbG9jaygpOwogICAgIHZvaWQgd2lsbEZpbmlzaFN3ZWVwaW5nKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFs
dWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5o
CmluZGV4IDgxYjg3MDMzMjQ4MzZjMGJhYzA5OGIyNzIxNWYwYjk0NTk2M2VlOTMuLmMxNGVmYTVi
MTAyMjA4NjI4NGY5ZWVlNzMzYTQ2MzYxMDhjY2FhZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaApAQCAtMTA0LDE5ICsxMDQsMTkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQmFzaWNWYWx1ZT4gY3JlYXRlKGlu
dCk7CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JCYXNpY1ZhbHVlPiBjcmVhdGUoZG91YmxlKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBhc0Jvb2xlYW4oYm9vbCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgYXNCb29sZWFuKGJvb2wmKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBOdW1iZXJzIGZy
b20gdGhlIGZyb250ZW5kIGFyZSBhbHdheXMgcGFyc2VkIGFzIGRvdWJsZXMsIHNvIHdlIGFsbG93
CiAgICAgLy8gY2xpZW50cyB0byBjb252ZXJ0IHRvIGludGVncmFsIHZhbHVlcyB3aXRoIHRoaXMg
ZnVuY3Rpb24uCi0gICAgdmlydHVhbCBib29sIGFzSW50ZWdlcihpbnQmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkJikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGFzSW50ZWdlcihsb25nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGFzSW50ZWdlcihsb25nIGxvbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcmKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYXNJbnRlZ2VyKHVuc2lnbmVkIGxvbmcgbG9uZyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBhc0RvdWJsZShkb3VibGUmKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgYXNEb3VibGUoZmxvYXQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGFzSW50ZWdlcihpbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFzSW50ZWdlcih1
bnNpZ25lZCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXNJbnRlZ2VyKGxvbmcmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGFzSW50ZWdlcihsb25nIGxvbmcmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGFzSW50ZWdlcih1bnNpZ25lZCBsb25nJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhc0ludGVnZXIodW5zaWduZWQgbG9uZyBsb25nJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBhc0RvdWJsZShkb3VibGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFzRG91
YmxlKGZsb2F0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVKU09O
KFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZUpT
T04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBJbnNwZWN0b3JCYXNpY1ZhbHVlKGJvb2wgdmFsdWUpCkBAIC0xNDIsOSArMTQy
LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yU3RyaW5nPiBjcmVhdGUoY29u
c3QgU3RyaW5nJik7CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JTdHJpbmc+IGNyZWF0ZShjb25z
dCBjaGFyKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXNTdHJpbmcoU3RyaW5nJiBvdXRwdXQpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXNTdHJpbmcoU3RyaW5nJiBvdXRwdXQpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRw
dXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91
dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW5zcGVjdG9y
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0xNzEsNyArMTcxLDcgQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3Rvck9iamVjdEJhc2UoKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBhc09iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgb3V0cHV0KSBvdmVy
cmlkZTsKKyAgICBib29sIGFzT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBvdXRwdXQp
IG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IHVzZSB0ZW1wbGF0ZXMgdG8gcmVkdWNlIHRoZSBh
bW91bnQgb2YgZHVwbGljYXRlZCBzZXQqKCkgbWV0aG9kcy4KICAgICB2b2lkIHNldEJvb2xlYW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBib29sKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIHJlbW92ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogCi0gICAgdmlydHVhbCB2
b2lkIHdyaXRlSlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgd3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAgICAgaXRl
cmF0b3IgZW5kKCkgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CkBAIC0yNzAsNyArMjcwLDcgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckFycmF5QmFzZSgpOwog
Ci0gICAgdmlydHVhbCBib29sIGFzQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5PiYpIG92ZXJy
aWRlOworICAgIGJvb2wgYXNBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXk+Jikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHB1c2hCb29sZWFuKGJvb2wpOwogICAgIHZvaWQgcHVzaEludGVnZXIoaW50
KTsKQEAgLTI4Miw3ICsyODIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IGdldChzaXplX3QgaW5kZXgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHdyaXRl
SlNPTihTdHJpbmdCdWlsZGVyJiBvdXRwdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgd3Jp
dGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBpdGVy
YXRvciBiZWdpbigpIHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CiAgICAgaXRlcmF0b3IgZW5k
KCkgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuaAppbmRl
eCAxMmUxZTQxNDRlZDIxMDE2YjA2OTA5NTI5ZTJlMjIyNWE4NjU0NTE3Li4zMjIwMTk5YmU3NjQ1
ZWFlMTNjNWQ4NDYyNmIwZTkyNjVlMjAzZDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmgK
QEAgLTQyLDEzICs0MiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0TG9nVG9TeXN0
ZW1Db25zb2xlKGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIG1lc3NhZ2VX
aXRoVHlwZUFuZExldmVsKE1lc3NhZ2VUeXBlLCBNZXNzYWdlTGV2ZWwsIEpTQzo6RXhlY1N0YXRl
KiwgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvZmlsZUVuZChKU0M6OkV4
ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB0aW1lKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRp
dGxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGltZVN0YW1wKEpTQzo6RXhlY1N0YXRl
KiwgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZXNzYWdl
V2l0aFR5cGVBbmRMZXZlbChNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0
ZSosIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY291bnQo
SlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHByb2ZpbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHByb2ZpbGVFbmQoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
IHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWVFbmQoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHRpbWVTdGFtcChKU0M6
OkV4ZWNTdGF0ZSosIFJlZlB0cjxTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIHZvaWQgd2FyblVuaW1wbGVtZW50ZWQoY29uc3QgU3RyaW5nJiBtZXRob2QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggN2VlOTBjMTM0ODUyMWEw
NmMyZjM4ZjdlMGI3NDQwYTk5N2Y1ZDY2OS4uOGQ1YzNmNzgwMzdjZThkMjZiYjc2YTZhNzFlZDVk
MDQzYmVjOWY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC04
NywyMiArODcsMjIgQEAgcHVibGljOgogCiAgICAgSlNDOjpDb25zb2xlQ2xpZW50KiBjb25zb2xl
Q2xpZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxl
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRT
Y3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIEluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRsZXIgZnVuY3Rpb25DYWxs
SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zcGVjdG9yRXZhbHVhdGVI
YW5kbGVyIGV2YWx1YXRlSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWY8V1RGOjpT
dG9wd2F0Y2g+IGV4ZWN1dGlvblN0b3B3YXRjaCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIEpTQzo6Vk0mIHZtKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBkZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5BY2Nlc3NJbnNw
ZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIGZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZh
bHVhdGVIYW5kbGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBmcm9udGVuZEluaXRpYWxp
emVkKCkgb3ZlcnJpZGU7CisgICAgUmVmPFdURjo6U3RvcHdhdGNoPiBleGVjdXRpb25TdG9wd2F0
Y2goKSBvdmVycmlkZTsKKyAgICBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyJiBzY3Jp
cHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOworICAgIEpTQzo6Vk0mIHZtKCkgb3ZlcnJpZGU7CiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKLSAgICB2aXJ0dWFs
IEF1Z21lbnRhYmxlSW5zcGVjdG9yQ29udHJvbGxlckNsaWVudCogYXVnbWVudGFibGVJbnNwZWN0
b3JDb250cm9sbGVyQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdWdtZW50aW5n
Q2xpZW50OyB9IAotICAgIHZpcnR1YWwgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRy
b2xsZXJDbGllbnQoQXVnbWVudGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBjbGllbnQp
IG92ZXJyaWRlIHsgbV9hdWdtZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9CisgICAgQXVnbWVudGFi
bGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBhdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xs
ZXJDbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2F1Z21lbnRpbmdDbGllbnQ7IH0g
CisgICAgdm9pZCBzZXRBdWdtZW50YWJsZUluc3BlY3RvckNvbnRyb2xsZXJDbGllbnQoQXVnbWVu
dGFibGVJbnNwZWN0b3JDb250cm9sbGVyQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9hdWdt
ZW50aW5nQ2xpZW50ID0gY2xpZW50OyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEZyb250ZW5kUm91
dGVyJiBmcm9udGVuZFJvdXRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJvbnRlbmRS
b3V0ZXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlz
cGF0Y2hlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kRXh0cmFBZ2VudChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yQWdlbnRCYXNlPikgb3ZlcnJpZGU7CisgICAgY29uc3QgRnJvbnRlbmRSb3V0ZXImIGZyb250
ZW5kUm91dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcm9udGVuZFJvdXRlci5nZXQo
KTsgfQorICAgIEJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcigpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7IH0KKyAgICB2b2lkIGFwcGVuZEV4
dHJhQWdlbnQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckFnZW50QmFzZT4pIG92ZXJyaWRlOwog
I2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4
IGQ4MDhhYTVjYzY3NTM0NDUyMjQ1NTZiZmEyNTZiYjM5MmM4OWM4NjMuLjc2YjVkNzgzNjRjNDYy
MzExMTMzNmM2NTI1NDczMWMyMWE1MmEzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlci5oCkBAIC0zOSwxOCArMzksMTggQEAgcHVibGljOgogICAgIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0YWNo
RGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpFeGVjU3RhdGUqKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gTk9URTogQ3VycmVudGx5IGFs
bCBleGNlcHRpb25zIGFyZSByZXBvcnRlZCBhdCB0aGUgQVBJIGJvdW5kYXJ5IHRocm91Z2ggcmVw
b3J0QVBJRXhjZXB0aW9uLgogICAgIC8vIFVudGlsIGEgdGltZSBjb21lcyB3aGVyZSBhbiBleGNl
cHRpb24gY2FuIGJlIGNhdXNlZCBvdXRzaWRlIG9mIHRoZSBBUEkgKGUuZy4gc2V0VGltZW91dAog
ICAgIC8vIG9yIHNvbWUgb3RoZXIgYXN5bmMgb3BlcmF0aW9uIGluIGEgcHVyZSBKU0NvbnRleHQp
IHdlIGNhbiBpZ25vcmUgZXhjZXB0aW9ucyByZXBvcnRlZCBoZXJlLgotICAgIHZpcnR1YWwgdm9p
ZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFeGNlcHRpb24qKSBjb25zdCBvdmVycmlkZSB7IH0KIAogICAgIEpTQzo6SlNHbG9iYWxP
YmplY3QmIG1fZ2xvYmFsT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBlYTIxMGQzZDI5MmVmZjllODA4
YzI0MDdlOWViYzg4MWRjMmMzODU5Li44OWQzZmQxM2FiMmY2YmM2ZjQ0MDYwZTZiOWQ5MWFlN2Vj
NDY0ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHREZWJ1Z1NlcnZlci5oCkBAIC05MiwxMiArOTIsMTIgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8SlNDOjpCcmVha3BvaW50SUQsIEJyZWFrcG9pbnRBY3Rpb25z
PiBCcmVha3BvaW50SURUb0FjdGlvbnNNYXA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFy
c2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNc2cpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9v
bCBuZWVkUGF1c2VIYW5kbGluZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCcmVha3BvaW50SGl0KEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQmKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9u
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6
RGVidWdnZXI6OlJlYXNvbkZvclBhdXNlKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRl
ciosIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNc2cpIG92ZXJyaWRlIGZpbmFs
OworICAgIGJvb2wgbmVlZFBhdXNlSGFuZGxpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGhhbmRsZUJyZWFrcG9pbnRIaXQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6QnJlYWtwb2ludCYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2
b2lkIGhhbmRsZVBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkRlYnVnZ2VyOjpSZWFz
b25Gb3JQYXVzZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBub3RpZnlEb25lUHJvY2Vzc2lu
Z0RlYnVnZ2VyRXZlbnRzKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKEpTQzo6RXhlY1N0YXRlKik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JB
Z2VudC5oCmluZGV4IGVkYTc0NDkwMTQ5YWZhZWM2OTNlYjE5OGVmZWEyZmYwZDc5YjE0MzAuLmI1
ZWZlZGU0NDA3YmFkODE0NzlhMWRlNDkxZmExOTQ5YjkwNzBiMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuaApA
QCAtNTEsMTIgKzUxLDEyIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5l
Y3RSZWFzb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVkKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
c2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVkKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluc3BlY3QoUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiYgb2JqZWN0VG9JbnNwZWN0LCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiYmIGhpbnRzKTsKICAgICB2b2lkIGV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBzY3JpcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCAwZTIy
OGQ5MzQ5OThjNzM1NTE4MmFjYzEyOWUyN2ZkN2E4NmZiNWExLi44NzNmNmQzMjc2MjVlZmYyNGNj
Yjc5ZGVhMmIyYWI5YjlkY2I1ZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAt
NTUsMTQgKzU1LDE0IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDb25zb2xlQWdlbnQoQWdlbnRD
b250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQ29uc29sZUFnZW50KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwg
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJNZXNzYWdlcyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRN
b25pdG9yaW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGUg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCkgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJy
aWRlOworCisgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyTWVzc2FnZXMo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFibGVk
KEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBhZGRJ
bnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGUgPSAwOwogCiAg
ICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CiAgICAgdm9pZCBy
ZXNldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IGMwOTMzMmNmMDNhNDcy
NzczYjBlYjQ5MTc0ZmYxYjY2NmI1YmE4NzkuLjYzMzJiNzdiNzAyOTcyZDkzYmQzN2FjZjFkMjgx
ODNlYmMyNTc2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTYxLDI3ICs2
MSwyNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCk7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5k
Um91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcmLCBib29sIGFjdGl2ZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYs
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVu
dGlmaWVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBsb2NhdGlvbikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SUQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFy
Y2hNYXRjaD4+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFN0cmluZyogc2NyaXB0U291cmNl
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcGF1c2UoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1l
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZXBPdmVyKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZXBJbnRvKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZXBPdXQoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHBhdXNlU3RhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBl
dmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJ
ZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBj
b25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VP
bkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29u
c3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyopIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250
ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxE
ZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworCisg
ICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVy
cm9yU3RyaW5nJiwgYm9vbCBhY3RpdmUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnJlYWtwb2lu
dEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25h
bENvbHVtbk51bWJlciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50
SWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JT
dHJpbmcmLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9u
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxz
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlc3VtZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3RlcE92ZXIo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0ZXBJbnRvKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdGVwT3V0KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGF1
c2VTdGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExp
bmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwg
Y29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBj
b25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNh
dmVkUmVzdWx0SW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNQYXVzZWQo
KTsKIApAQCAtMTE3LDggKzExNyw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBl
bmFibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENvbnRpbnVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRDb250aW51ZSgpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNl
TWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYpOwogCkBAIC0xMjcsMTEgKzEyNywxMSBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFt
ZXMoY29uc3QgSW5qZWN0ZWRTY3JpcHQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNv
dXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRQYXJzZVNvdXJjZShK
U0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGZh
aWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwg
aW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3Vu
ZChpbnQgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTY3JpcHRC
cmVha3BvaW50QWN0aW9uJiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzYW1wbGUpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cikgb3ZlcnJpZGU7CisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5z
aWduZWQgc2FtcGxlSWQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzYW1wbGUpIG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRl
bnRpZmllciwgSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOwogICAgIGJv
b2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCmluZGV4
IDE4ZTQ4ZGY3M2RiYWViNzAzMDk2MWRlNzhhNDI4YWNjMWRmNmE0NzQuLmIxOTc0ZTNkNTc2OTM1
OWUwZDJhN2E0NTJmNzhlYzJmOTQ0OTA1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2VudC5oCkBAIC00
MywxNyArNDMsMTcgQEAgcHVibGljOgogICAgIEluc3BlY3RvckhlYXBBZ2VudChBZ2VudENvbnRl
eHQmKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JIZWFwQWdlbnQoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVy
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIEhlYXBCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2MoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOworICAgIHZvaWQgZ2MoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIEhlYXBP
YnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCB3aWxsR2FyYmFnZUNvbGxlY3QoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkR2FyYmFnZUNvbGxlY3QoSlNDOjpIZWFwT3BlcmF0aW9uKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbGxHYXJiYWdlQ29sbGVjdCgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkR2FyYmFnZUNvbGxlY3QoSlNDOjpIZWFwT3BlcmF0aW9uKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SGVhcEZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGUzMzg1Yjli
YTY1YzY1NmRlOGM3NzVjOWVlMmZkMTYwOWZhNmE0OWEuLjg0MDRhZTA0ZDJmNWMzM2M0YWMwNzRl
MGU3NmY1MmI5YWY3ZGYwZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC01NSwy
MyArNTUsMjMgQEAgY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yUnVudGltZUFnZW50
IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGkKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKLQotICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZSB7IG1fZW5hYmxlZCA9IHRy
dWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsg
bV9lbmFibGVkID0gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVy
cm9yUmFuZ2U+Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVj
dEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRl
UHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkq
IG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0KEVy
cm9yU3RyaW5nJiwgY29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIG92ZXJyaWRl
IGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZp
ZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQ
cm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQq
IHN0YXJ0SW5kZXgsIGNvbnN0IGludCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25F
bnRyeT4+JiBlbnRyaWVzKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJl
c3VsdChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBjYWxs
QXJndW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0R3JvdXApIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBnZXRS
dW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+
PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVUeXBlUHJvZmlsZXIoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVR5cGVQcm9maWxlcihF
cnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRCYXNpY0Jsb2NrcyhF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2Nr
Pj4mIG91dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250
ZW5kQW5kQmFja2VuZChEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKworICAgIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0cnVlOyB9CisgICAgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQor
ICAgIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0LCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+Jikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBldmFsdWF0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5l
QVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNv
bnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBj
b25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3Qg
Ym9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGlt
ZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8
Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCByZWxlYXNlT2JqZWN0
KEVycm9yU3RyaW5nJiwgY29uc3QgRXJyb3JTdHJpbmcmIG9iamVjdElkKSBvdmVycmlkZSBmaW5h
bDsKKyAgICB2b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBjb25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJu
YWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5h
bDsKKyAgICB2b2lkIGdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlBy
b3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZ2V0
Q29sbGVjdGlvbkVudHJpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBpbnQqIHN0YXJ0SW5kZXgsIGNvbnN0IGlu
dCogbnVtYmVyVG9GZXRjaCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkNvbGxlY3Rpb25FbnRyeT4+JiBlbnRyaWVzKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgY2FsbEFyZ3VtZW50LCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIHNhdmVkUmVz
dWx0SW5kZXgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcm
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBl
RGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVyKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlVHlwZVByb2ZpbGVyKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRCYXNpY0Jsb2NrcyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgaW5fc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91dF9iYXNp
Y0Jsb2Nrcykgb3ZlcnJpZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oCmlu
ZGV4IGY2MmUwMDhhNmQ3MmFkYzkwZDdhNGM4YjUyMzIyMDk3NmU4ZjAwYTMuLmVmODdkYjNjMTEx
MTlhMThmMDQ0YmQ0NDg5MGY4OWFkYmM0ZTBmZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3Jp
cHRQcm9maWxlckFnZW50LmgKQEAgLTQ2LDE3ICs0NiwxNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVj
dG9yU2NyaXB0UHJvZmlsZXJBZ2VudChBZ2VudENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JTY3JpcHRQcm9maWxlckFnZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwor
ICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikg
b3ZlcnJpZGU7CiAKICAgICAvLyBTY3JpcHRQcm9maWxlckJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cgotICAgIHZpcnR1YWwgdm9pZCBzdGFydFRyYWNraW5nKEVycm9yU3RyaW5nJiwgY29uc3QgYm9v
bCogaW5jbHVkZVNhbXBsZXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVHJhY2tp
bmcoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VHJhY2tpbmcoRXJyb3JT
dHJpbmcmLCBjb25zdCBib29sKiBpbmNsdWRlU2FtcGxlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dG9wVHJhY2tpbmcoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIERlYnVnZ2VyOjpQ
cm9maWxpbmdDbGllbnQKLSAgICB2aXJ0dWFsIGJvb2wgaXNBbHJlYWR5UHJvZmlsaW5nKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgd2lsbEV2YWx1YXRlU2NyaXB0KCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KGRvdWJsZSwgSlNDOjpQ
cm9maWxpbmdSZWFzb24pIG92ZXJyaWRlOworICAgIGJvb2wgaXNBbHJlYWR5UHJvZmlsaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHdpbGxFdmFsdWF0ZVNjcmlwdCgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQoZG91YmxlLCBKU0M6OlByb2ZpbGluZ1JlYXNv
bikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEV2ZW50IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0Q29u
c29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0ds
b2JhbE9iamVjdENvbnNvbGVBZ2VudC5oCmluZGV4IGY5NjZlOTJmZGMxMmM4NWU1N2M5ZjQ0YTcw
MjBjZTY3YmIxNzhhMDAuLmIxZGFlNGM1YWJmNDA4OGQwZWY3OTA2ZGFiNTFmZjY3NjIzNjc1NTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0Q29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQuaApAQCAtMzksOCArMzksOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3RDb25zb2xlQWdlbnQoKSB7IH0K
IAogICAgIC8vIEZJWE1FOiBYSFJzIGFuZCBOb2RlcyBvbmx5IG1ha2VzIHNlbnNlIGRlYnVnZ2lu
ZyBhIFdlYiBjb250ZXh0LiBDYW4gdGhpcyBiZSBtb3ZlZCB0byBhIGRpZmZlcmVudCBhZ2VudD8K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBi
b29sIGVuYWJsZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWROb2Rl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNb25pdG9y
aW5nWEhSRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmgKaW5kZXggNDUwZWNmMjA1MzJhMmI5OGE2YzRlOWIwMWUwOWEyZWRiYzEy
ZWJkMS4uOTFhNTdjOWYzODU0OTI1MjMyMGNiODJlMTY3N2JjNTM3MDQ0MmY5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKQEAgLTQwLDE0ICs0MCwxNCBAQCBwdWJs
aWM6CiAgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEpTQWdlbnRDb250ZXh0JiwgSW5z
cGVjdG9yQ29uc29sZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVy
cmlkZTsKKyAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJp
bmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOworICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgLy8gTk9URTogSmF2YVNjcmlwdCBp
bnNwZWN0b3IgZG9lcyBub3QgeWV0IG5lZWQgdG8gbXV0ZSBhIGNvbnNvbGUgYmVjYXVzZSBubyBt
ZXNzYWdlcwogICAgIC8vIGFyZSBzZW50IHRvIHRoZSBjb25zb2xlIG91dHNpZGUgb2YgdGhlIEFQ
SSBib3VuZGFyeSBvciBjb25zb2xlIG9iamVjdC4KLSAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNv
bGUoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHVu
bXV0ZUNvbnNvbGUoKSBvdmVycmlkZSB7IH0KIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JDb25z
b2xlQWdlbnQqIG1fY29uc29sZUFnZW50IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmgKaW5kZXggZGZhNWFiMThlMTAyNzhlZGJjY2QxNzYyNTEwOWUwYTZj
ZTRkMDU3Yy4uMzg4MGU5ZjYyMzc4MjhkNzk1ZDFmMWYzMzk2MWM0MGE1MmZiM2FmMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmpl
Y3RSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oCkBAIC0zOCwxNCArMzgsMTQgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yUnVu
dGltZUFnZW50IHsKIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudChKU0Fn
ZW50Q29udGV4dCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChGcm9udGVuZFJvdXRlciosIEJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoRnJvbnRlbmRSb3V0ZXIqLCBCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCkgb3ZlcnJpZGU7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwog
CiAgICAgLy8gTk9URTogSmF2YVNjcmlwdCBpbnNwZWN0b3IgZG9lcyBub3QgeWV0IG5lZWQgdG8g
bXV0ZSBhIGNvbnNvbGUgYmVjYXVzZSBubyBtZXNzYWdlcwogICAgIC8vIGFyZSBzZW50IHRvIHRo
ZSBjb25zb2xlIG91dHNpZGUgb2YgdGhlIEFQSSBib3VuZGFyeSBvciBjb25zb2xlIG9iamVjdC4K
LSAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbXV0ZUNvbnNvbGUo
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZSB7IH0KIAog
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVudGltZUZyb250ZW5kRGlzcGF0Y2hlcj4g
bV9mcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNoYWJsZUFnZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2F1Z21lbnRhYmxlL0FsdGVybmF0ZURpc3BhdGNo
YWJsZUFnZW50LmgKaW5kZXggZWQzMzJhYjIwZDJmZjJhMTlmNDkzNjg3OGFiYmE2OGFmMWYzNTEy
MC4uZTAzZGJhZDc5NTFkZDcwNTlhMTgxMzY1ZWMwYjIwYzVjOGMzNTAxMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hdWdtZW50YWJsZS9BbHRlcm5hdGVEaXNw
YXRjaGFibGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYXVn
bWVudGFibGUvQWx0ZXJuYXRlRGlzcGF0Y2hhYmxlQWdlbnQuaApAQCAtNTMsMTEgKzUzLDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5zZXRCYWNrZW5kRGlzcGF0
Y2hlcihudWxscHRyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwgQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEZyb250ZW5kUm91dGVyKiwg
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGUKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKERpc2Nvbm5lY3RS
ZWFzb24pIG92ZXJyaWRlCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQXV0b21hdGlvblRhcmdldC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlQXV0b21hdGlvblRhcmdl
dC5oCmluZGV4IDBiMjg5ZGIzYTRkZjkzMDIwOWEwNTk3NjEyMDNjZmRlNjc2ODcyYjIuLmNlNDZm
MDJjNWQwZDNmMDNiZDZkNzljOTk3Y2EyNzhhZTg3ZmY1NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUF1dG9tYXRpb25UYXJnZXQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVBdXRvbWF0
aW9uVGFyZ2V0LmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNQYWly
ZWQoYm9vbCk7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ6OlR5cGU6OkF1dG9tYXRpb247IH0K
LSAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQ29udHJvbEFsbG93ZWQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAhbV9wYWlyZWQ7IH07CisgICAgUmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ6
OlR5cGU6OkF1dG9tYXRpb247IH0KKyAgICBib29sIHJlbW90ZUNvbnRyb2xBbGxvd2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIW1fcGFpcmVkOyB9OwogCiBwcml2YXRlOgogICAgIGJvb2wg
bV9wYWlyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9yZW1vdGUvUmVtb3RlQ29ubmVjdGlvblRvVGFyZ2V0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAppbmRl
eCBkM2U4ZDMxOWJmNzM2MTgwMjQxODE3NWU5ZjczMWUxNjM4MTJlYzAxLi4xOTJjYTBlYzZlNmQx
MzNmZjkwNWY5NmIzNDllZjUxZTllNWRkNTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9UYXJnZXQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVDb25uZWN0aW9uVG9U
YXJnZXQuaApAQCAtNjMsOCArNjMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclF1ZXVlKCkg
eyBtX3F1ZXVlLmNsZWFyKCk7IH0KIAogICAgIC8vIEZyb250ZW5kQ2hhbm5lbCBvdmVycmlkZXMu
Ci0gICAgdmlydHVhbCBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIENvbm5lY3Rpb25UeXBlOjpSZW1vdGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIENvbm5l
Y3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29ubmVj
dGlvblR5cGU6OlJlbW90ZTsgfQorICAgIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hBc3luY09u
VGFyZ2V0KHZvaWQgKF5ibG9jaykoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0aW9uVGFyZ2V0LmgKaW5k
ZXggZjU5NWRkZmZkYWM1ZGY2ZmIwZjVmYjI2YjYxMTIzNTYyZWRhZDJjNC4uZjY0NGU3ODk5Yzk2
ZDZlZTc0YzEwMzZmODA3Yzg0NzJmMmM4ZjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdGlvblRhcmdldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL1JlbW90ZUluc3BlY3Rpb25UYXJn
ZXQuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVucGF1c2VG
b3JJbml0aWFsaXplZEluc3BlY3RvcigpOwogCiAgICAgLy8gUmVtb3RlQ29udHJvbGxhYmxlVGFy
Z2V0IG92ZXJyaWRlcy4KLSAgICB2aXJ0dWFsIGJvb2wgcmVtb3RlQ29udHJvbEFsbG93ZWQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIHJlbW90ZUNvbnRyb2xBbGxvd2VkKCkgY29uc3Qgb3Zl
cnJpZGU7CiBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd2VkIHtmYWxzZX07CiAgICAgUmV0YWlu
UHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvUmVtb3RlSW5zcGVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAppbmRleCAzZjJjNTBm
ODgwODY1N2Q3ZjQxNzU0M2QzNTU1NmQzZTAzMThmYTA1Li4yMzNlNDNlMzIxYzlmMmVjMmUyMmY1
MWRjMjdkNDRmMmY5MzU4YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9SZW1vdGVJbnNwZWN0b3IuaApAQCAtMTA0LDkgKzEwNCw5IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHNlbmRBdXRvbWF0aWNJbnNwZWN0aW9uQ2FuZGlkYXRlTWVz
c2FnZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2Uo
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5TU3RyaW5nICptZXNzYWdlTmFtZSwgTlNE
aWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHhwY0Nvbm5l
Y3Rpb25GYWlsZWQoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB4cGNDb25uZWN0aW9uVW5oYW5kbGVkTWVzc2FnZShSZW1vdGVJbnNwZWN0
b3JYUENDb25uZWN0aW9uKiwgeHBjX29iamVjdF90KSBvdmVycmlkZTsKKyAgICB2b2lkIHhwY0Nv
bm5lY3Rpb25SZWNlaXZlZE1lc3NhZ2UoUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbiosIE5T
U3RyaW5nICptZXNzYWdlTmFtZSwgTlNEaWN0aW9uYXJ5ICp1c2VySW5mbykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB4cGNDb25uZWN0aW9uRmFpbGVkKFJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24q
KSBvdmVycmlkZTsKKyAgICB2b2lkIHhwY0Nvbm5lY3Rpb25VbmhhbmRsZWRNZXNzYWdlKFJlbW90
ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24qLCB4cGNfb2JqZWN0X3QpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCByZWNlaXZlZFNldHVwTWVzc2FnZShOU0RpY3Rpb25hcnkgKnVzZXJJbmZvKTsKICAgICB2
b2lkIHJlY2VpdmVkRGF0YU1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICp1c2VySW5mbyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBf
Z2VuZXJhdG9yX3RlbXBsYXRlcy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CmluZGV4IDVjMzBkMDkw
ZTM3NGQwOTdkZjBiNDk2ZmIxZGRiOGRkNTgyMjRiY2IuLmJlMmU5NzlmYmJlODk4ZWUzZTJhM2I3
ZDQ2NjljMzc5YzhiMjVjM2YgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3JfdGVtcGxhdGVzLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0
b3JfdGVtcGxhdGVzLnB5CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogICAgICIiIiR7
Y2xhc3NBbmRFeHBvcnRNYWNyb30gJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVyIGZpbmFs
IDogcHVibGljIFN1cHBsZW1lbnRhbEJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPCR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmRE
aXNwYXRjaGVyJiwgJHtkb21haW5OYW1lfUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0
b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAke2NvbW1hbmREZWNsYXJhdGlvbnN9CiBw
cml2YXRlOgogICAgICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlcihCYWNrZW5kRGlzcGF0
Y2hlciYsICR7ZG9tYWluTmFtZX1CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRo
LWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAppbmRleCBhNDE0NTA0NmU5YjMxZjgyODk2NGM1
ZDZhNWE5YjRjNzdlNmZlMWI1Li43ZDIzYmI3ZWMxYTgyNjM2YzU2MmEyYjY1MmEzZGM5YjNiY2U5
YTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC0xODgsNyAr
MTg4LDcgQEAgcHJvdGVjdGVkOgogY2xhc3MgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5h
bCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3Bh
dGNoZXImLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJ
bnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaChs
b25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+
JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRlOgogICAgIHZvaWQgZXhlY3V0ZVNRTFN5bmNP
cHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mJiBwYXJhbWV0ZXJzKTsKICAgICB2b2lkIGV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJu
VmFsdWVzKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBhcmFtZXRl
cnMpOwpAQCAtODQzLDEwICs4NDMsMTAgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBP
YmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRl
cm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFp
bkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTFN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJlcXVlc3RJZCwg
aW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmNPcHRpb25hbFJldHVyblZhbHVlcyhsb25nIHJl
cXVlc3RJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwgaW50
IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgaW5fcXVlcnkpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlU1FMQXN5bmMobG9uZyByZXF1ZXN0SWQsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVT
UUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMobG9uZyByZXF1ZXN0SWQsIGludCBpbl9kYXRhYmFz
ZUlkLCBjb25zdCBTdHJpbmcmIGluX3F1ZXJ5KSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVT
UUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKGxvbmcgcmVxdWVzdElkLCBpbnQgaW5fZGF0YWJh
c2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkgb3ZlcnJpZGU7CisgICAgdm9pZCBleGVjdXRl
U1FMU3luYyhsb25nIHJlcXVlc3RJZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYg
aW5fcXVlcnkpIG92ZXJyaWRlOworICAgIHZvaWQgZXhlY3V0ZVNRTEFzeW5jKGxvbmcgcmVxdWVz
dElkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBpbl9xdWVyeSkgb3ZlcnJpZGU7
CiBwcml2YXRlOgogICAgIFJldGFpblB0cjxpZDxUZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhh
bmRsZXI+PiBtX2RlbGVnYXRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDQ3ZmM0ZTk1MTk3OWFl
OTdjZmE4MTY2MTI3MDRhYzRiMzNkZDBiOTUuLjhmMDYyMDA5OGNiYTUyYjIyNWQxMmY5OWZiYTg1
OTBkMTI4YTdlMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtMTcxLDcgKzE3MSw3IEBAIHByb3RlY3Rl
ZDoKIGNsYXNzIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxl
bWVudGFsQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyJiwgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9u
ZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYm
IG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNv
bnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJy
aWRlOwogcHJpdmF0ZToKICAgICB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9u
ZyByZXF1ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcGFyYW1ldGVycyk7CiAgICAg
dm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgcGFyYW1ldGVycyk7CkBAIC03NDQsOCArNzQ0LDggQEAgbmFtZXNw
YWNlIEluc3BlY3RvciB7CiBjbGFzcyBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIHsK
IHB1YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxU
ZXN0UHJvdG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9
IGhhbmRsZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVy
cyhsb25nIHJlcXVlc3RJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogaW5fY29s
dW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0
YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFi
YXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl9zcWxFcnJvciwgY29u
c3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBy
ZXF1ZXN0SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2NvbHVtbk5hbWVz
LCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZh
bHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nJiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMobG9uZyByZXF1ZXN0SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3Vi
bGUqIGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGluX3Zh
bHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3Qg
aW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaW5f
c3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmlu
dENvbG9yKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhs
b25nIHJlcXVlc3RJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xv
ciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBj
b25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IpIG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICBSZXRh
aW5QdHI8aWQ8VGVzdFByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZXhwZWN0ZWQvZG9tYWlucy13aXRoLXZhcnlpbmctY29tbWFuZC1zaXplcy5qc29uLXJl
c3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CmluZGV4
IDM5NmRhM2M2Yjk3NGRiMDFkNTJlOTE0ZjBmYjJiNjQyZDc5MDM4M2MuLmY4ZGY5ZTEzOWRlOTI4
ZDk3NmEwZGI0NDY1YzY5NGU2ZDdjYWYzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWlu
Zy1jb21tYW5kLXNpemVzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9kb21haW5zLXdpdGgtdmFyeWluZy1jb21t
YW5kLXNpemVzLmpzb24tcmVzdWx0CkBAIC0xODksNyArMTg5LDcgQEAgcHJvdGVjdGVkOgogY2xh
c3MgTmV0d29yazFCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxC
YWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXImLCBOZXR3b3JrMUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIHJlcXVl
c3RJZCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2Fn
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3Ry
aW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBw
cml2YXRlOgogICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mJiBwYXJhbWV0ZXJzKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVS
TkFURV9ESVNQQVRDSEVSUykKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2YXRlOgogY2xhc3MgTmV0
d29yazNCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5k
RGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyPiBjcmVhdGUoQmFja2VuZERpc3BhdGNoZXImLCBOZXR3b3JrM0JhY2tlbmREaXNwYXRj
aGVySGFuZGxlciopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBtZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaChsb25nIHJlcXVlc3RJZCwgY29uc3QgU3RyaW5nJiBt
ZXRob2QsIFJlZjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkgb3ZlcnJpZGU7CiBwcml2YXRl
OgogICAgIHZvaWQgbG9hZFJlc291cmNlMShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mJiBwYXJhbWV0ZXJzKTsKICAgICB2b2lkIGxvYWRSZXNvdXJjZTIobG9uZyByZXF1
ZXN0SWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgcGFyYW1ldGVycyk7CkBAIC03NjUsNyAr
NzY1LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBPYmpDSW5zcGVjdG9yTmV0d29y
azFCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVOZXR3b3JrMUJhY2tl
bmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yTmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcihpZDxUZXN0UHJvdG9jb2xOZXR3b3JrMURvbWFpbkhhbmRsZXI+IGhhbmRsZXIp
IHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNl
MShsb25nIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcg
cmVxdWVzdElkKSBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPFRlc3RQcm90
b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4+IG1fZGVsZWdhdGU7CiB9OwpAQCAtNzc1LDEzICs3
NzUsMTMgQEAgcHJpdmF0ZToKIGNsYXNzIE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNw
YXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZU5ldHdvcmszQmFja2VuZERpc3BhdGNoZXIg
ewogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JOZXR3b3JrM0JhY2tlbmREaXNwYXRjaGVyKGlk
PFRlc3RQcm90b2NvbE5ldHdvcmszRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRl
ID0gaGFuZGxlcjsgfQotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UxKGxvbmcgcmVxdWVz
dElkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlMihsb25nIHJlcXVl
c3RJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTMobG9uZyByZXF1
ZXN0SWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U0KGxvbmcgcmVx
dWVzdElkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlNShsb25nIHJl
cXVlc3RJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZTYobG9uZyBy
ZXF1ZXN0SWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2U3KGxvbmcg
cmVxdWVzdElkKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZTEobG9uZyByZXF1ZXN0
SWQpIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZFJlc291cmNlMihsb25nIHJlcXVlc3RJZCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBsb2FkUmVzb3VyY2UzKGxvbmcgcmVxdWVzdElkKSBvdmVycmlkZTsK
KyAgICB2b2lkIGxvYWRSZXNvdXJjZTQobG9uZyByZXF1ZXN0SWQpIG92ZXJyaWRlOworICAgIHZv
aWQgbG9hZFJlc291cmNlNShsb25nIHJlcXVlc3RJZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2Fk
UmVzb3VyY2U2KGxvbmcgcmVxdWVzdElkKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRSZXNvdXJj
ZTcobG9uZyByZXF1ZXN0SWQpIG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ8
VGVzdFByb3RvY29sTmV0d29yazNEb21haW5IYW5kbGVyPj4gbV9kZWxlZ2F0ZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhw
ZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZW51bS12YWx1ZXMuanNvbi1yZXN1bHQKaW5k
ZXggMDUxNGY0YmUxOTI5Nzk2MzU4ZDNmYzYyMDFjN2I2NmI1MjM1NzY5OC4uOWNjMjEwNjlkN2My
ZjdkMmViZGNhNzZiNzBhNTM5NDk4NGUwOGM2OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2VudW0tdmFsdWVzLmpzb24t
cmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9lbnVtLXZhbHVlcy5qc29uLXJlc3VsdApAQCAtMTcwLDcgKzE3MCw3IEBAIHBy
b3RlY3RlZDoKIGNsYXNzIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1
YmxpYyBTdXBwbGVtZW50YWxCYWNrZW5kRGlzcGF0Y2hlciB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXI+IGNyZWF0ZShCYWNrZW5kRGlzcGF0
Y2hlciYsIENvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBS
ZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0
Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2Jq
ZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICB2b2lkIGNvbW1hbmRXaXRo
RW51bVJldHVyblZhbHVlKGxvbmcgcmVxdWVzdElkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
IHBhcmFtZXRlcnMpOwogI2lmIEVOQUJMRShJTlNQRUNUT1JfQUxURVJOQVRFX0RJU1BBVENIRVJT
KQpAQCAtNTg5LDcgKzU4OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgT2JqQ0lu
c3BlY3RvckNvbW1hbmREb21haW5CYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRl
cm5hdGVDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIE9iakNJ
bnNwZWN0b3JDb21tYW5kRG9tYWluQmFja2VuZERpc3BhdGNoZXIoaWQ8VGVzdFByb3RvY29sQ29t
bWFuZERvbWFpbkRvbWFpbkhhbmRsZXI+IGhhbmRsZXIpIHsgbV9kZWxlZ2F0ZSA9IGhhbmRsZXI7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9uZyByZXF1
ZXN0SWQpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWFuZFdpdGhFbnVtUmV0dXJuVmFsdWUobG9u
ZyByZXF1ZXN0SWQpIG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ8VGVzdFBy
b3RvY29sQ29tbWFuZERvbWFpbkRvbWFpbkhhbmRsZXI+PiBtX2RlbGVnYXRlOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2Vu
ZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CmluZGV4IGY3YzZi
MWM1OTg3NjNlYzFiNjg4YTE1NjRkZjk3ZmJiOWUxNTgxNTguLjYwMWE5MDI4MTI1MDA5Y2MyM2Q0
MDI3OTMwOTdhYzY2YjgwYWE1NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVh
dHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJl
LWd1YXJkcy5qc29uLXJlc3VsdApAQCAtMTY2LDcgKzE2Niw3IEBAIHByb3RlY3RlZDoKIGNsYXNz
IE5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgZmluYWwgOiBwdWJsaWMgU3VwcGxlbWVudGFsQmFj
a2VuZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8TmV0d29yazFCYWNrZW5k
RGlzcGF0Y2hlcj4gY3JlYXRlKEJhY2tlbmREaXNwYXRjaGVyJiwgTmV0d29yazFCYWNrZW5kRGlz
cGF0Y2hlckhhbmRsZXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0
SWQsIGNvbnN0IFN0cmluZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2Up
IG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2gobG9uZyByZXF1ZXN0SWQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBSZWY8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOwogcHJp
dmF0ZToKICAgICB2b2lkIGxvYWRSZXNvdXJjZShsb25nIHJlcXVlc3RJZCwgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBwYXJhbWV0ZXJzKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFU
RV9ESVNQQVRDSEVSUykKQEAgLTYzMiw3ICs2MzIsNyBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IGNsYXNzIE9iakNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyIGZpbmFsIDogcHVi
bGljIEFsdGVybmF0ZU5ldHdvcmsxQmFja2VuZERpc3BhdGNoZXIgewogcHVibGljOgogICAgIE9i
akNJbnNwZWN0b3JOZXR3b3JrMUJhY2tlbmREaXNwYXRjaGVyKGlkPFRlc3RQcm90b2NvbE5ldHdv
cmsxRG9tYWluSGFuZGxlcj4gaGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQotICAg
IHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UobG9uZyByZXF1ZXN0SWQpIG92ZXJyaWRlOworICAg
IHZvaWQgbG9hZFJlc291cmNlKGxvbmcgcmVxdWVzdElkKSBvdmVycmlkZTsKIHByaXZhdGU6CiAg
ICAgUmV0YWluUHRyPGlkPFRlc3RQcm90b2NvbE5ldHdvcmsxRG9tYWluSGFuZGxlcj4+IG1fZGVs
ZWdhdGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwCmluZGV4IDhkNTAxOGI2YzMzYzMzYTEx
YTU4MzQyNTVmNjBiNDE1NTIwYTBhMzcuLmQwZDJmMTVkNjNkMzE2OTJmNTkxYWQwYjY3ZGY1MDRi
YzhmOWU2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAKQEAgLTc4LDEzICs3OCwxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Rml4ZWRWTVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yKCk7CiAg
ICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkKiBhbGxvY2F0ZU5ld1NwYWNlKHNpemVf
dCYpIG92ZXJyaWRlCisgICAgdm9pZCogYWxsb2NhdGVOZXdTcGFjZShzaXplX3QmKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgLy8gV2UncmUgb3BlcmF0aW5nIGluIGEgZml4ZWQgcG9vbCwgc28g
bmV3IGFsbG9jYXRpb24gaXMgYWx3YXlzIHByb2hpYml0ZWQuCiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVlZFBhZ2Uodm9pZCogcGFnZSkg
b3ZlcnJpZGUKKyAgICB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqIHBhZ2UpIG92ZXJyaWRlCiAg
ICAgewogI2lmIFVTRShNQURWX0ZSRUVfRk9SX0pJVF9NRU1PUlkpCiAgICAgICAgIFVOVVNFRF9Q
QVJBTShwYWdlKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAgfQog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlSXNGcmVlKHZvaWQqIHBhZ2UpIG92ZXJy
aWRlCisgICAgdm9pZCBub3RpZnlQYWdlSXNGcmVlKHZvaWQqIHBhZ2UpIG92ZXJyaWRlCiAgICAg
ewogI2lmIFVTRShNQURWX0ZSRUVfRk9SX0pJVF9NRU1PUlkpCiAgICAgICAgIGZvciAoOzspIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0
aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dDQXdhcmVKSVRTdHViUm91dGluZS5o
CmluZGV4IDk3ZDkwMTZkNjhlZGUwMTVmZTBiMWM3NmFhN2U0ZTQzMjIzYTMzYmEuLmM4NGExNjg4
MmIzOWM3MmNkYzI3YTM3YjI1NGExNDA4OWI0M2JkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvR0NBd2FyZUpJVFN0dWJSb3V0aW5lLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9HQ0F3YXJlSklUU3R1YlJvdXRpbmUuaApAQCAtNjMsNyArNjMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkZWxldGVGcm9tR0MoKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgb2JzZXJ2ZVplcm9SZWZDb3VudCgpIG92ZXJyaWRlOworICAgIHZvaWQgb2Jz
ZXJ2ZVplcm9SZWZDb3VudCgpIG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBtYXJr
UmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImKTsKIApAQCAtODMsNyArODMsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWFya2luZ0dDQXdhcmVKSVRTdHViUm91dGluZVdpdGhP
bmVPYmplY3QoKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbWFya1JlcXVp
cmVkT2JqZWN0c0ludGVybmFsKFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXJr
UmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBtX29iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgKaW5kZXggN2ZiN2IzMTM0YjRhNjc1ODE5MTYzZDEyN2M0MDBmZjllOTQ4NmU0
MC4uOTkxOTM2YjQ1NzA4OWE3NDI3NDk5YTRiNTRmZjQ4ZTg4MTZiYjc0NCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgKQEAgLTIxMiwxMSArMjEyLDExIEBAIHByb3RlY3RlZDoKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5KSVRDb2RlV2l0aENvZGVSZWYoKTsKIAotICAgIHZpcnR1YWwg
dm9pZCogZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQqIGRhdGFBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBvZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0Nv
ZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc2l6ZV90IHNpemUoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgY29udGFpbnModm9pZCopIG92ZXJyaWRlOworICAgIHZvaWQqIGV4ZWN1dGFi
bGVBZGRyZXNzQXRPZmZzZXQoc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCogZGF0
YUFkZHJlc3NBdE9mZnNldChzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBv
ZmZzZXRPZih2b2lkKiBwb2ludGVySW50b0NvZGUpIG92ZXJyaWRlOworICAgIHNpemVfdCBzaXpl
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjb250YWlucyh2b2lkKikgb3ZlcnJpZGU7CiAKIHByb3Rl
Y3RlZDoKICAgICBDb2RlUmVmIG1fcmVmOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGluaXRpYWxpemVDb2RlUmVmKENvZGVSZWYsIENvZGVQdHIgd2l0aEFyaXR5
Q2hlY2spOwogCi0gICAgdmlydHVhbCBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tN
b2RlKSBvdmVycmlkZTsKKyAgICBDb2RlUHRyIGFkZHJlc3NGb3JDYWxsKEFyaXR5Q2hlY2tNb2Rl
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDb2RlUHRyIG1fd2l0aEFyaXR5Q2hlY2s7CkBA
IC0yNDQsNyArMjQ0LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgaW5pdGlhbGl6ZUNvZGVS
ZWYoQ29kZVJlZik7CiAKLSAgICB2aXJ0dWFsIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlD
aGVja01vZGUpIG92ZXJyaWRlOworICAgIENvZGVQdHIgYWRkcmVzc0ZvckNhbGwoQXJpdHlDaGVj
a01vZGUpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxi
YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxh
dGlvbkNhbGxiYWNrLmgKaW5kZXggYWYyNTMyZjkyMDk2MDQyNjAxMWQxZGMxODg2ZGVmZTNmMzgw
ZTUxZC4uNWFjNWUyMjY3ZjcxYWNjZTRjN2NkODQxZDA2YzYzZDI4ZTBmYjY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25D
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUVG9ERkdEZWZlcnJl
ZENvbXBpbGF0aW9uQ2FsbGJhY2suaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUmVmPEpJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrPiBjcmVhdGUoKTsK
ICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcGlsYXRpb25EaWRCZWNvbWVSZWFkeUFzeW5jaHJv
bm91c2x5KENvZGVCbG9jayosIENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2spIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb21waWxhdGlvbkRpZENvbXBsZXRlKENvZGVCbG9jayos
IENvZGVCbG9jayogcHJvZmlsZWRERkdDb2RlQmxvY2ssIENvbXBpbGF0aW9uUmVzdWx0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbXBpbGF0aW9uRGlkQmVjb21lUmVhZHlBc3luY2hyb25vdXNseShD
b2RlQmxvY2sqLCBDb2RlQmxvY2sqIHByb2ZpbGVkREZHQ29kZUJsb2NrKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNvbXBpbGF0aW9uRGlkQ29tcGxldGUoQ29kZUJsb2NrKiwgQ29kZUJsb2NrKiBwcm9m
aWxlZERGR0NvZGVCbG9jaywgQ29tcGlsYXRpb25SZXN1bHQpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Bv
bHltb3JwaGljQ2FsbFN0dWJSb3V0aW5lLmgKaW5kZXggOWQxNDkxY2EwODliMDNmYmYzNzViYmIy
M2E0NTI3MGYwNzA4ZGFmMC4uYmFjNjQzYWVmNGRlMjIyNDZkZDM4Y2E4NmE1YzA0MWI0ZWMyZGQ3
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Qb2x5bW9ycGhpY0NhbGxT
dHViUm91dGluZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUG9seW1vcnBoaWND
YWxsU3R1YlJvdXRpbmUuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB2aXNp
dFdlYWsoVk0mKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBtYXJr
UmVxdWlyZWRPYmplY3RzSW50ZXJuYWwoU2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lk
IG1hcmtSZXF1aXJlZE9iamVjdHNJbnRlcm5hbChTbG90VmlzaXRvciYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgogICAgIFZlY3RvcjxXcml0ZUJhcnJpZXI8SlNDZWxsPiwgMj4gbV92YXJpYW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA0NDlkZDg4MDJiODUyMGE0OGE4
ZmJlZWZmNWQxYTUwZTZhOGQ3YzI1Li5mNGVhZGRlZmM5NWVlOWFkZGFmMGI4OTNkZDc5ZDQ4OGJj
ZDQ2Y2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0yMjksMTIgKzIy
OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb25zdGFudE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQ29uc3RhbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQ
dXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0ICBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzQ29uc3RhbnQoKSBjb25z
dCAgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0ID0gMDsKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNv
ZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdl
dCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpIG92ZXJyaWRlOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29u
dGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VU
YXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIE51
bGxOb2RlIDogcHVibGljIENvbnN0YW50Tm9kZSB7CkBAIC0yNDIsOCArMjQyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE51bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzTnVsbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBqc051bGwoKTsgfQorICAgICAg
ICBib29sIGlzTnVsbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAg
SlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4ganNOdWxsKCk7IH0KICAgICB9OwogCiAgICAgY2xhc3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMg
Q29uc3RhbnROb2RlIHsKQEAgLTI1Miw4ICsyNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0Jvb2xlYW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4ganNCb29sZWFuKG1fdmFsdWUpOyB9CisgICAgICAgIGJv
b2wgaXNCb29sZWFuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBK
U1ZhbHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBqc0Jvb2xlYW4obV92YWx1ZSk7IH0KIAogICAgICAgICBib29sIG1fdmFsdWU7CiAgICAgfTsK
QEAgLTI2MywxMSArMjYzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOdW1iZXJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSB2YWx1ZSk7CiAgICAgICAgIGRvdWJsZSB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlz
SW50ZWdlck5vZGUoKSBjb25zdCA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZSBm
aW5hbDsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0
b3ImKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBqc051bWJlcihtX3ZhbHVlKTsgfQorICAgICAg
ICBib29sIGlzTnVtYmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgICAgICBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBqc051bWJlcihtX3ZhbHVlKTsgfQogCiAgICAgICAgIGRvdWJsZSBtX3ZhbHVl
OwogICAgIH07CkBAIC0yNzcsMTQgKzI3NywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RG91YmxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzSW50ZWdlck5vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICBib29sIGlzSW50ZWdlck5vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKICAgICAvLyBBbiBpbnRlZ2Vy
IG5vZGUgcmVwcmVzZW50IGEgbnVtYmVyIHJlcHJlc2VudGVkIGFzIGFuIGludGVnZXIgKGUuZy4g
NDIgaW5zdGVhZCBvZiA0Mi4sIDQyLjAsIDQyZTApCiAgICAgY2xhc3MgSW50ZWdlck5vZGUgOiBw
dWJsaWMgRG91YmxlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlZ2VyTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNJbnRlZ2VyTm9kZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICAgICAgYm9vbCBpc0ludGVnZXJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBTdHJpbmdOb2RlIDogcHVibGljIENvbnN0YW50
Tm9kZSB7CkBAIC0yOTMsOCArMjkzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1ZShCeXRlY29kZUdlbmVyYXRv
ciYpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBib29sIGlzU3RyaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImKSBjb25zdCBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX3Zh
bHVlOwogICAgIH07CkBAIC00NzIsNyArNDcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIHJhdygpIHsgcmV0dXJuIG1fcmF3OyB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9jb29rZWQ7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1fcmF3OwpAQCAtNTAwLDcgKzUwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0Tm9kZSogdGVtcGxhdGVFeHByZXNzaW9ucygpIGNv
bnN0IHsgcmV0dXJuIG1fdGVtcGxhdGVFeHByZXNzaW9uczsgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAg
ICAgICAgIFRlbXBsYXRlU3RyaW5nTGlzdE5vZGUqIG1fdGVtcGxhdGVTdHJpbmdzOwogICAgICAg
ICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0Tm9kZSogbV90ZW1wbGF0ZUV4cHJlc3Npb25zOwpAQCAt
NTEzLDcgKzUxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUZW1wbGF0ZUxpdGVyYWxO
b2RlKiB0ZW1wbGF0ZUxpdGVyYWwoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlTGl0ZXJhbDsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3RhZzsKICAgICAg
ICAgVGVtcGxhdGVMaXRlcmFsTm9kZSogbV90ZW1wbGF0ZUxpdGVyYWw7CkBAIC01MjQsNyArNTI0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ0V4cE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxh
Z3MpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fcGF0dGVy
bjsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9mbGFnczsKQEAgLTUzNSw3ICs1MzUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgVGhpc1REWk1vZGUpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgbV9zaG91bGRB
bHdheXNFbWl0VERaQ2hlY2s7CiAgICAgfTsKQEAgLTU0NSw4ICs1NDUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgU3VwZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlzU3VwZXJOb2RlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIGJvb2wgaXNTdXBlck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIE5ld1RhcmdldE5vZGUg
ZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtNTU0LDcgKzU1NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBOZXdUYXJnZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CkBAIC01NjQsMTEgKzU2NCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICAgICAgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsK
KyAgICAgICAgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgICAgICBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICAgICAgSlNU
ZXh0UG9zaXRpb24gbV9zdGFydDsKQEAgLTU5NSwxNSArNTk1LDE1IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRWxlbWVudE5vZGUq
KTsKICAgICAgICAgQXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9u
LCBFbGVtZW50Tm9kZSopOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0FycmF5TGl0ZXJhbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc0FycmF5TGl0
ZXJhbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBBcmd1bWVu
dExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChQYXJzZXJBcmVuYSYsIGludCwgaW50KSBjb25zdDsK
IAogICAgICAgICBFbGVtZW50Tm9kZSogZWxlbWVudHMoKSBjb25zdCB7IEFTU0VSVChpc1NpbXBs
ZUFycmF5KCkpOyByZXR1cm4gbV9lbGVtZW50OyB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wg
aXNTaW1wbGVBcnJheSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgICAgIEVsZW1lbnROb2RlKiBt
X2VsZW1lbnQ7CiAgICAgICAgIGludCBtX2VsaXNpb247CkBAIC02NDEsNyArNjQxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIGVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCosIFByb3BlcnR5Tm9kZSYpOwogCiAgICAgICAgIFByb3BlcnR5Tm9kZSogbV9u
b2RlOwpAQCAtNjUyLDEwICs2NTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKICAgICAg
ICAgT2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlMaXN0
Tm9kZSopOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNPYmplY3RMaXRlcmFsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzT2JqZWN0TGl0ZXJhbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBQ
cm9wZXJ0eUxpc3ROb2RlKiBtX2xpc3Q7CiAgICAgfTsKQEAgLTY3MCwxMCArNjcwLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKCkgY29u
c3QgeyByZXR1cm4gbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50czsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCcmFja2V0QWNjZXNzb3JOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzTG9jYXRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNCcmFja2V0
QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNj
cmlwdDsKQEAgLTY4OCwxMCArNjg4LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb3RBY2Nlc3Nv
ck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNM
b2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBp
c0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBt
X2lkZW50OwpAQCAtNzA0LDkgKzcwNCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogZXhwcmVzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
cHJlYWRFeHByZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAg
ICBib29sIGlzU3ByZWFkRXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICB9OwogCkBAIC03
MTksNyArNzE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHI7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIEFyZ3VtZW50c05vZGUg
OiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CkBAIC03MzYsNyArNzM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIE5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsK
QEAgLTc0Nyw3ICs3NDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXZhbEZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAg
QXJndW1lbnRzTm9kZSogbV9hcmdzOwogICAgIH07CkBAIC03NTcsNyArNzU3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIEFyZ3VtZW50c05vZGUqIG1fYXJnczsKQEAgLTc2OCw3
ICs3NjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05v
ZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEFyZ3VtZW50
c05vZGUqIG1fYXJnczsKQEAgLTc3OSw3ICs3NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2Jhc2U7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTc5Miw3ICs3
OTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQp
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9iYXNlOwpAQCAtODExLDcgKzgxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEJ5dGVjb2RlSW50cmluc2ljTm9kZShUeXBlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbWl0
dGVyVHlwZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0J5dGVj
b2RlSW50cmluc2ljTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgYm9vbCBpc0J5dGVjb2RlSW50cmluc2ljTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0K
ICAgICAgICAgRW1pdHRlclR5cGUgZW1pdHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZW1pdHRlcjsg
fQpAQCAtODIzLDcgKzgyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIEpTQ19ERUNMQVJF
X0JZVEVDT0RFX0lOVFJJTlNJQ19GVU5DVElPTlMKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBU
eXBlIG1fdHlwZTsKICAgICAgICAgRW1pdHRlclR5cGUgbV9lbWl0dGVyOwpAQCAtODM2LDcgKzgz
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgQXBwbHlGdW5jdGlv
bkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewpAQCAtODQ0LDcgKzg0
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CkBAIC04NTIsNyArODUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKQEAgLTg2Miw3ICs4NjIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fc3Vic2NyaXB0OwpAQCAtODczLDcgKzg3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNl
OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtODg0LDcgKzg4NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBEZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC04OTQsNyArODk0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhw
cjsKICAgICB9OwpAQCAtOTA2LDcgKzkwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAg
fTsKQEAgLTkxNiw3ICs5MTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlwZU9mVmFs
dWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtOTI2
LDcgKzkyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBQcmVmaXhOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTQwLDEw
ICs5NDAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBvc3RmaXhOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0RG90
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFJlc29sdmUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0QnJhY2tldChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBVbmFyeU9wTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CkBAIC05NTUsNyArOTU1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGNvbnN0IEV4cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4g
bV9leHByOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2RlSUQoKSBj
b25zdCB7IHJldHVybiBtX29wY29kZUlEOyB9CiAKQEAgLTk2OCw3ICs5NjgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgVW5hcnlQbHVzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBFeHByZXNz
aW9uTm9kZSogc3RyaXBVbmFyeVBsdXMoKSBvdmVycmlkZSB7IHJldHVybiBleHByKCk7IH0KKyAg
ICAgICAgRXhwcmVzc2lvbk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgb3ZlcnJpZGUgeyByZXR1cm4g
ZXhwcigpOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIE5lZ2F0ZU5vZGUgOiBwdWJsaWMgVW5hcnlP
cE5vZGUgewpAQCAtOTg1LDcgKzk4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25z
dCBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTk5
NCw3ICs5OTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIExvZ2lj
YWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAg
cHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29u
dGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VU
YXJnZXQsIEZhbGxUaHJvdWdoTW9kZSkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVj
b2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJn
ZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsKICAgICB9
OwogCiAgICAgY2xhc3MgQmluYXJ5T3BOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKQEAg
LTEwMDMsMTQgKzEwMDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJpbmFyeU9wTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiwgUmVnaXN0ZXJJRCogbGhzID0g
MCwgUmVhZE1vZGlmeVJlc29sdmVOb2RlKiBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSA9IDApOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVj
b2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFs
bFRocm91Z2hNb2RlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRp
dGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwq
IGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBsaHMoKSB7IHJldHVybiBtX2V4cHIxOyB9OwogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogcmhzKCkgeyByZXR1cm4gbV9leHByMjsgfTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZvaWQgdHJ5Rm9sZFRvQnJhbmNoKEJ5dGVjb2RlR2VuZXJhdG9yJiwgVHJpU3RhdGUmIGJyYW5j
aENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqJiBicmFuY2hFeHByZXNzaW9uKTsKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fb3Bj
b2RlSUQ7IH0KQEAgLTEwNDMsMTQgKzEwNDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVi
bGljOgogICAgICAgICBBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc0FkZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFjdCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc1N1YnRyYWN0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBMZWZ0
U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAg
ICB9OwogICAgIAogICAgIGNsYXNzIEluc3RhbmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJsZUJp
bmFyeU9wTm9kZSB7CkBAIC0xMTAyLDcgKzExMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSW5zdGFuY2VPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBUaHJv
d2FibGVCaW5hcnlPcE5vZGUgewpAQCAtMTExNSw3ICsxMTE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90RXF1YWxOb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBOb3RTdHJpY3RFcXVh
bE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKQEAgLTExNTcsOCArMTE1Nyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3Bl
cmF0b3IpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVj
b2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFs
bFRocm91Z2hNb2RlKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
dm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBM
YWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBGYWxsVGhyb3VnaE1vZGUpIG92
ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIxOwogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9leHByMjsKQEAgLTExNzEsNyArMTE3MSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBDb25kaXRpb25hbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9sb2dp
Y2FsOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByMTsKQEAgLTExODMsNyArMTE4Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9u
Tm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbV9pZGVudDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fcmlnaHQ7CkBAIC0x
MTk2LDcgKzExOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXNzaWduUmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgQXNzaWdubWVudENvbnRleHQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3Jp
Z2h0OwpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRN
b2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTEyMjMsNyArMTIyMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYmFzZTsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fc3Vic2NyaXB0OwpAQCAtMTIzNyw3ICsxMjM3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90RW5kKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9iYXNl
OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtMTI1MCw3ICsxMjUwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3Bl
cmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0
YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CkBAIC0xMjY0LDcgKzEyNjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgfTsKICAgICAKICAgICBj
bGFzcyBDb21tYU5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtMTI3NSw4
ICsxMjc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENvbW1hTm9kZSogbmV4dCgpIHsg
cmV0dXJuIG1fbmV4dDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29sIGlz
Q29tbWFOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgQ29tbWFOb2RlKiBtX25leHQ7CkBAIC0x
MzA5LDkgKzEzMDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSog
bGFzdFN0YXRlbWVudCgpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9jaygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc0Jsb2NrKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIFNvdXJjZUVsZW1lbnRz
KiBtX3N0YXRlbWVudHM7CiAgICAgfTsKQEAgLTEzMjEsOSArMTMyMSw5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBFbXB0eVN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKICAgICAKICAgICBjbGFzcyBEZWJ1
Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC0xMzMxLDcgKzEz
MzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBFeHBy
U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKQEAgLTEzNDEsOSArMTM0MSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwcjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBib29s
IGlzRXhwclN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgYm9vbCBpc0V4cHJTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERlY2xhcmF0aW9uU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xMzcyLDcgKzEzNzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRW1wdHlMZXRFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xMzgyLDcgKzEzODIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2Rl
KiBlbHNlQmxvY2spOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKICAgICAgICAgYm9vbCB0cnlGb2xkQnJlYWtBbmRDb250aW51ZShCeXRl
Y29kZUdlbmVyYXRvciYsIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssCiAgICAgICAgICAgICBMYWJl
bComIHRydWVUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSYpOwogCkBAIC0xMzk2LDcgKzEzOTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRG9XaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIFN0YXRl
bWVudE5vZGUqIG1fc3RhdGVtZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpA
QCAtMTQwNyw3ICsxNDA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFdoaWxlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsK
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgU3RhdGVtZW50Tm9k
ZSogbV9zdGF0ZW1lbnQ7CkBAIC0xNDIwLDcgKzE0MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1l
bnROb2RlKiwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByMTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjI7CkBAIC0xNDUxLDcg
KzE0NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0TG9vcEhlYWRlcihC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZv
aWQgZW1pdE11bHRpTG9vcEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
ZHN0KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgIH07
CiAgICAgCiAgICAgY2xhc3MgRm9yT2ZOb2RlIDogcHVibGljIEVudW1lcmF0aW9uTm9kZSB7CkBA
IC0xNDU5LDcgKzE0NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRm9yT2ZOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBT
dGF0ZW1lbnROb2RlKiwgVmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogICAgIH07CiAK
ICAgICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAgLTE0NjgsOCArMTQ2OCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBMYWJlbCogdHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYpOwog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb250aW51ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIGJvb2wgaXNDb250aW51ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7
CiAgICAgfTsKQEAgLTE0ODAsOCArMTQ4MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBM
YWJlbCogdHJpdmlhbFRhcmdldChCeXRlY29kZUdlbmVyYXRvciYpOwogICAgICAgICAKICAgICBw
cml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNC
cmVhaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwog
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKQEAgLTE0OTMsOSAr
MTQ5Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZSogdmFsdWUo
KSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybk5v
ZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNSZXR1
cm5Ob2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX3ZhbHVlOwogICAgIH07CkBAIC0xNTA1LDcgKzE1MDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCB1
aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
ZXhwcjsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0xNTE4LDcgKzE1
MTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9uYW1lOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBt
X3N0YXRlbWVudDsKQEAgLTE1MjksNyArMTUyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBUaHJvd05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtMTU0MSw3ICsxNTQx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSog
Y2F0Y2hQYXR0ZXJuLCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBWYXJpYWJsZUVudmlyb25t
ZW50JiBjYXRjaEVudmlyb25tZW50LCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAog
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3RyeUJsb2NrOwogICAgICAgICBEZXN0cnVjdHVyaW5n
UGF0dGVybk5vZGUqIG1fY2F0Y2hQYXR0ZXJuOwpAQCAtMTYzMyw3ICsxNjMzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZh
bHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsKICAgICAgICAgdW5zaWduZWQg
bV9lbmRDb2x1bW47CiAgICAgfTsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAK
ICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKQEAgLTE2NjMsNyArMTY2Myw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVu
Y3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CiAgICAgICAg
IHVuc2lnbmVkIG1fZW5kQ29sdW1uOwogICAgIH07CkBAIC0xNzIxLDggKzE3MjEsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUoKSBjb25zdCB7
IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXpl
ciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVs
ZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwogCiAgICAgICAgIEltcG9ydFNwZWNpZmllckxp
c3ROb2RlKiBtX3NwZWNpZmllckxpc3Q7CiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtX21vZHVs
ZU5hbWU7CkBAIC0xNzM1LDggKzE3MzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTW9k
dWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJy
aWRlOwogCiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtX21vZHVsZU5hbWU7CiAgICAgfTsKQEAg
LTE3NDksOCArMTc0OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhbmFs
eXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIG1fZGVjbGFyYXRpb247CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1fbG9jYWxOYW1lOwogICAgIH07CkBAIC0xNzYyLDggKzE3NjIsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgU3RhdGVtZW50Tm9kZSYgZGVjbGFyYXRpb24oKSBjb25zdCB7
IHJldHVybiAqbV9kZWNsYXJhdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5
emVyJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBhbmFseXplTW9k
dWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1f
ZGVjbGFyYXRpb247CiAgICAgfTsKIApAQCAtMTgwMSw4ICsxODAxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9tb2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxl
QW5hbHl6ZXImKSBvdmVycmlkZTsKICAgICAgICAgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIG1f
c3BlY2lmaWVyTGlzdDsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1fbW9kdWxlTmFtZSB7IG51
bGxwdHIgfTsKICAgICB9OwpAQCAtMTg5OCw3ICsxODk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0
aW9uTW9kZSk7CiAgICAgICAgIApAQCAtMTkzNSw5ICsxOTM1LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzRnVuY0V4cHJOb2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBBcnJv
d0Z1bmNFeHByTm9kZSA6IHB1YmxpYyBCYXNlRnVuY0V4cHJOb2RlIHsKQEAgLTE5NDUsOSArMTk0
NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBcnJvd0Z1bmNFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUq
LCBjb25zdCBTb3VyY2VDb2RlJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdmlydHVhbCBi
b29sIGlzQXJyb3dGdW5jRXhwck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgWWllbGRFeHByTm9kZSBmaW5hbCA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKQEAg
LTE5NTgsNyArMTk1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGRlbGVnYXRl
KCkgY29uc3QgeyByZXR1cm4gbV9kZWxlZ2F0ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2FyZ3VtZW50OwogICAgICAgICBib29sIG1fZGVsZWdhdGU7CkBA
IC0xOTc0LDcgKzE5NzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSgpIHsgcmV0dXJuIG1fbmFtZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIG1fbmFtZTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fY29u
c3RydWN0b3JFeHByZXNzaW9uOwpAQCAtMjAyMCwxMCArMjAyMCwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybjsKICAgICAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH07Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4m
KSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0RGlyZWN0QmluZGluZyhCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGRzdCwgRXhwcmVzc2lvbk5vZGUqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgdm9p
ZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RCaW5k
aW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSop
IG92ZXJyaWRlOworICAgICAgICB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBv
dmVycmlkZTsKIAogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7CiAgICAg
fTsKQEAgLTIwNDQsOSArMjA0NCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMo
VmVjdG9yPElkZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBiaW5kVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgY29sbGVjdEJvdW5kSWRlbnRpZmllcnMoVmVjdG9yPElk
ZW50aWZpZXI+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYmluZFZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJyaWRlOworICAgICAgICB2b2lk
IHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgc3RydWN0
IEVudHJ5IHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZTsKICAg
ICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eUV4cHJlc3Npb247CkBAIC0yMDY2LDEx
ICsyMDY2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3RFbmQoKSBjb25zdCB7IHJldHVybiBtX2Rpdm90RW5kOyB9CiAgICAgICAgIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhW
ZWN0b3I8SWRlbnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVycmlk
ZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRl
bnRpZmllcj4mKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBiaW5kVmFsdWUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
dG9TdHJpbmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwogICAgICAgICAKLSAgICAg
ICAgdmlydHVhbCBib29sIGlzQmluZGluZ05vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgICAgIGJvb2wgaXNCaW5kaW5nTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgICAgICBKU1RleHRQb3NpdGlvbiBtX2Rpdm90U3RhcnQ7CiAgICAg
ICAgIEpTVGV4dFBvc2l0aW9uIG1fZGl2b3RFbmQ7CkBAIC0yMDg5LDkgKzIwODksOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbmFtZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJpbmcoU3Ry
aW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICB2b2lkIGNvbGxlY3RCb3VuZElk
ZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICB2
b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9uYW1lOwogICAgICAgICB1bnNpZ25l
ZCBtX251bVBhcmFtZXRlcnNUb1NraXA7CkBAIC0yMTA4LDkgKzIxMDgsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9kaXZvdEVuZDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lk
IGNvbGxlY3RCb3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJy
aWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCopIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdG9TdHJp
bmcoU3RyaW5nQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICB2b2lkIGNvbGxlY3RC
b3VuZElkZW50aWZpZXJzKFZlY3RvcjxJZGVudGlmaWVyPiYpIGNvbnN0IG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25z
dCBvdmVycmlkZTsKKyAgICAgICAgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICAgICAgSlNUZXh0UG9zaXRpb24gbV9kaXZvdFN0YXJ0OwogICAgICAg
ICBKU1RleHRQb3NpdGlvbiBtX2Rpdm90RW5kOwpAQCAtMjEyMyw5ICsyMTIzLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7
IHJldHVybiBtX2JpbmRpbmdzOyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgYm9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICAgICAgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwogCiAgICAg
ICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbV9iaW5kaW5nczsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CkBAIC0yMTM1LDExICsyMTM1LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgRnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0
IFNvdXJjZUNvZGUmKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jRGVjbE5vZGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJvb2wgaXNGdW5jRGVjbE5v
ZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIEZ1bmN0aW9uTWV0
YWRhdGFOb2RlKiBtZXRhZGF0YSgpIHsgcmV0dXJuIG1fbWV0YWRhdGE7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAKICAgICAgICAg
RnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1fbWV0YWRhdGE7CiAgICAgfTsKQEAgLTIxNDksNyArMjE0
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDbGFzc0RlY2xOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBjbGFzc0V4cHJlc3Npb24pOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9jbGFzc0RlY2xhcmF0aW9uOwogICAgIH07CkBAIC0yMjAzLDcg
KzIyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3dpdGNoTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqLCBWYXJpYWJsZUVu
dmlyb25tZW50Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAg
IENhc2VCbG9ja05vZGUqIG1fYmxvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyLmgKaW5kZXggZjQ3YTkwNThjNjg5MTY2MWFhOWU2NDAzZWVlOGY1Yjdm
ZWQ0N2FiNC4uNTYzZDlkOGIzM2VkMDI2Mjg5YTM0MWRlMzI5ZDdjMjYwMDVmMGJiZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXIuaApAQCAtOTMsNyAr
OTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBtX3NvdXJjZS5nZXQo
KS5oYXNoKCk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFN0cmluZ1ZpZXcgc291cmNl
KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7CiAgICAg
ICAgIH0KQEAgLTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBtX3NvdXJjZS5pbXBsKCktPmhhc2goKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgU3RyaW5nVmlldyBzb3VyY2UoKSBjb25zdCBvdmVycmlkZQorICAgICAgICBTdHJpbmdWaWV3
IHNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBt
X3NvdXJjZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Jl
cGxheS9FbXB0eUlucHV0Q3Vyc29yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0Vt
cHR5SW5wdXRDdXJzb3IuaAppbmRleCBhMzhhZWUyMzdkOTczMGRhMjBjMzFmNmJlMzllYzAwZjRk
NzZlNDYyLi43NzVjZGZmOTQxMjkxNzIyYWUwM2ExN2NkMTM2MTlmMjEyNjViOWQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L0VtcHR5SW5wdXRDdXJzb3IuaApAQCAtNDUs
MjIgKzQ1LDIyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRW1wdHlJ
bnB1dEN1cnNvcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmcoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JlcGxh
eWluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NhcHR1
cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JlcGxh
eWluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIE5v
bmRldGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSBv
dmVycmlkZQorICAgIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJbnB1
dChJbnB1dFF1ZXVlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBz
dG9yZUlucHV0KHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlPikgb3Zl
cnJpZGUKKyAgICB2b2lkIHN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVybWluaXN0
aWNJbnB1dEJhc2U+KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBOb25kZXRlcm1pbmlzdGljSW5w
dXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUKKyAg
ICBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9yZXBsYXkvTm9uZGV0ZXJtaW5pc3RpY0lucHV0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cmVwbGF5L05vbmRldGVybWluaXN0aWNJbnB1dC5oCmluZGV4IDMwYmEzM2JjZjdkOTFhNmNkYmQ0
MjE3YWJmMzg3MDY3MDNlMTZmZWEuLmVlZGMwNjcxMTExMzVlYzZhMTJhNTNiOTk1ZDg4Y2U2NDkw
NzA3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvTm9uZGV0ZXJt
aW5pc3RpY0lucHV0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9Ob25kZXRl
cm1pbmlzdGljSW5wdXQuaApAQCAtNjYsMTIgKzY2LDEyIEBAIHB1YmxpYzoKIHRlbXBsYXRlPHR5
cGVuYW1lIElucHV0VHlwZT4KIGNsYXNzIE5vbmRldGVybWluaXN0aWNJbnB1dCA6IHB1YmxpYyBO
b25kZXRlcm1pbmlzdGljSW5wdXRCYXNlIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGNvbnN0IFN0
cmluZyYgdHlwZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgY29uc3QgU3RyaW5nJiB0eXBlKCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBJbnB1dFRyYWl0czxJbnB1dFR5cGU+
Ojp0eXBlKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCBJbnB1dFF1ZXVlIHF1ZXVlKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBJbnB1dFF1ZXVlIHF1ZXVlKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIHJldHVybiBJbnB1dFRyYWl0czxJbnB1dFR5cGU+OjpxdWV1ZSgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBsYXkvc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9nZW5lcmF0ZS1lbnVtLXdpdGgtZ3VhcmQuanNvbi1UZXN0UmVwbGF5SW5wdXRzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcmVwbGF5L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZW51bS13aXRoLWd1YXJkLmpzb24tVGVzdFJlcGxheUlucHV0cy5oCmluZGV4IDMzMDJmNTgw
YjhlOWNiNzk0ODA3OGYyZmVmYWE2ODAyM2Y5MjkyNDcuLjllMjY0MjljZDRmYzA3NmQ2ZTcwZjZj
Mjk1ZjIxZjljYTIyOWQ2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9yZXBs
YXkvc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1lbnVtLXdpdGgtZ3VhcmQuanNvbi1U
ZXN0UmVwbGF5SW5wdXRzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3JlcGxheS9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWVudW0td2l0aC1ndWFyZC5qc29uLVRlc3RSZXBs
YXlJbnB1dHMuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SGFuZGxl
V2hlZWxFdmVudCgpOwogCiAgICAgLy8gRXZlbnRMb29wSW5wdXQgQVBJCi0gICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSBvdmVycmlkZSBmaW5hbDsKICAgICBjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIHBsYXRmb3JtRXZlbnQoKSBjb25zdCB7IHJldHVybiAqbV9wbGF0
Zm9ybUV2ZW50OyB9CiAgICAgUGxhdGZvcm1XaGVlbFBoYXNlIHBoYXNlKCkgY29uc3QgeyByZXR1
cm4gbV9waGFzZTsgfQogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCA5NDk1ODJmZTFlMzdlYzY2MWE4OTc2MmZjYzc2
NzY4OTViZjQyM2U5Li4wYzBlNTE2MjQzYmE5MmNiZWI2Nzk0ZTgyYTI4M2NmNGM1ZmJmMmRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CkBAIC0xMDYyLDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAgICAgQXJyYXlQcm90b3R5cGVBZGFwdGl2
ZUluZmVycmVkUHJvcGVydHlXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3BlcnR5Q29uZGl0aW9u
JiwgQXJyYXlQcm90b3R5cGUqKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RmlyZShjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVGaXJlKGNv
bnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAogICAgIEFycmF5UHJvdG90eXBlKiBtX2FycmF5
UHJvdG90eXBlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCmlu
ZGV4IGEwMWQxMzUwNjY5ZjNjNzVlY2FhNTdkY2IyNDY0M2E3MGNlZjBjMTQuLjUxYjNjNjdiYmY5
ZGQwNzllOTYwYWM1Y2YwZGU0MWRlM2FmOGUwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0YVZpZXcuaApAQCAtNDAsMTcgKzQwLDE3IEBAIHB1YmxpYzoKICAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgUmVmPERhdGFWaWV3PiBjcmVhdGUoUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4sIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgc3RhdGlj
IFJlZjxEYXRhVmlldz4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+KTsKICAgICAKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQorICAgIHVuc2ln
bmVkIGJ5dGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
Ynl0ZUxlbmd0aDsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCBUeXBlZEFycmF5VHlwZSBnZXRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBUeXBlZEFycmF5VHlwZSBnZXRUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBUeXBlRGF0YVZpZXc7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBKU0FycmF5QnVmZmVyVmlldyogd3JhcChFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCopIG92ZXJyaWRlOworICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB3cmFwKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KICAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBz
dGF0dXMgPSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5l
cmljVHlwZWRBcnJheVZpZXcuaAppbmRleCAzNmUzN2NhMzJiMWU0MmM3NTlhMDRjZjc0ODI0MWVm
YWQyODVhYTBlLi5hNmQwMWNlYTRmZTY0ZTUzYjY1ZWVmZDE1ZTgwMzRlMzJiMzZkZjBjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJheVZp
ZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXcuaApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2xlbmd0
aDsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIHJldHVybiBsZW5ndGgoKSAqIHNpemVvZih0eXBlbmFtZSBBZGFwdG9yOjpUeXBl
KTsKICAgICB9CkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEdlbmVy
aWNUeXBlZEFycmF5Vmlldz4gc3ViYXJyYXkoaW50IHN0YXJ0KSBjb25zdDsKICAgICBSZWZQdHI8
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PiBzdWJhcnJheShpbnQgc3RhcnQsIGludCBlbmQpIGNvbnN0
OwogICAgIAotICAgIHZpcnR1YWwgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgVHlwZWRBcnJheVR5cGUgZ2V0VHlwZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewog
ICAgICAgICByZXR1cm4gQWRhcHRvcjo6dHlwZVZhbHVlOwogICAgIH0KIAotICAgIHZpcnR1YWwg
SlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKSBvdmVy
cmlkZTsKKyAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCopIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERl
YnVnZ2FibGUuaAppbmRleCBlYTM5ZGM4ZmZhNmQxYzY4M2I2MDUzZGYyMDBjNDQzMmY1MDNkMDQ2
Li4wNGZmMzc3MzdiZjBjMTYyYzA2YjgzYjM0Yzk3NGY4MTRjN2EwYTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2Fi
bGUuaApAQCAtNDgsMTggKzQ4LDE4IEBAIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUoSlNHbG9iYWxPYmplY3QmKTsKICAgICB+SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlKCkg
eyB9CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpU
eXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJbnNwZWN0b3I6OlJlbW90ZUNvbnRy
b2xsYWJsZVRhcmdldDo6VHlwZTo6SmF2YVNjcmlwdDsgfQorICAgIEluc3BlY3Rvcjo6UmVtb3Rl
Q29udHJvbGxhYmxlVGFyZ2V0OjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBJ
bnNwZWN0b3I6OlJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldDo6VHlwZTo6SmF2YVNjcmlwdDsgfQog
Ci0gICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNMb2NhbERlYnVnZ2VyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzTG9jYWxEZWJ1
Z2dlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5z
cGVjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hN
ZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY29ubmVjdChJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCosIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGF1dG9tYXRpY0luc3BlY3Rpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXVzZVdhaXRpbmdGb3JBdXRvbWF0aWNJbnNwZWN0
aW9uKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhdXRvbWF0aWNJbnNwZWN0aW9uQWxsb3dlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHBhdXNlV2FpdGluZ0ZvckF1
dG9tYXRpY0luc3BlY3Rpb24oKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBKU0dsb2JhbE9i
amVjdCYgbV9nbG9iYWxPYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0pvYi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0pvYi5j
cHAKaW5kZXggODgyN2FjZmE3ZjkyODY2NGQ5OWI5YjQ0NTFmZDZmMjk3MDZlMTE3ZS4uZWJjNmIx
M2RhOTBjMjIyODNkNjczYzk2OTM1ZTZlNjI2ODQ0ZjAzYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNKb2IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSm9iLmNwcApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBydW4oRXhlY1N0YXRlKikgb3ZlcnJpZGU7CisgICAg
dm9pZCBydW4oRXhlY1N0YXRlKikgb3ZlcnJpZGU7CiAKICAgICBTdHJvbmc8VW5rbm93bj4gbV9q
b2I7CiAgICAgU3Ryb25nPEpTQXJyYXk+IG1fYXJndW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZ0V4cENhY2hlLmgKaW5kZXggOTQyZjNkY2I5ODZhNjk3Yzg3ZTEzODZh
NmQ3MWU2ODBjZjE0NDAxMy4uMGRmMDRjYjYzNGE3ZWFhNzg1ZjFmNGI5ZDg0Mzk3NTlhMThiMzZk
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ2FjaGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDYWNoZS5oCkBAIC01
NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgaW50IG1heFN0cm9uZ0Nh
Y2hlYWJsZUVudHJpZXMgPSAzMjsKIAotICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShIYW5kbGU8
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOworICAgIHZvaWQgZmluYWxpemUoSGFu
ZGxlPFVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIFJlZ0V4cCogbG9v
a3VwT3JDcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIHBhdHRlcm5TdHJpbmcsIFJlZ0V4cEZsYWdz
KTsKICAgICB2b2lkIGFkZFRvU3Ryb25nQ2FjaGUoUmVnRXhwKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
aAppbmRleCA5MGFlNDRjZDg3ZWYwOGU1YTNiNzgxZjg4YjFjNjc4ZGU5MGE0YjljLi5hNDYwYTE3
YzE3MTI1NWQ5MjIxY2QwN2FmMWQ3ZThmMmQ5NGI3MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmgK
QEAgLTUyLDE0ICs1MiwxNCBAQCBwdWJsaWM6CiAgICAgU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xs
ZXIoKTsKICAgICB2aXJ0dWFsIH5TaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlcigpOwogICAgIAot
ICAgIHZpcnR1YWwgSlNBcnJheUJ1ZmZlciogdG9KUyhFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIEFycmF5QnVmZmVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyV3Jh
cHBlcihKU0dsb2JhbE9iamVjdCosIEFycmF5QnVmZmVyKiwgSlNBcnJheUJ1ZmZlciopIG92ZXJy
aWRlOworICAgIEpTQXJyYXlCdWZmZXIqIHRvSlMoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBBcnJheUJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJXcmFwcGVyKEpTR2xv
YmFsT2JqZWN0KiwgQXJyYXlCdWZmZXIqLCBKU0FycmF5QnVmZmVyKikgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgY2xhc3MgSlNBcnJheUJ1ZmZlck93bmVyIDogcHVibGljIFdlYWtIYW5kbGVP
d25lciB7CiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgU2xv
dFZpc2l0b3ImKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOworICAgICAgICBi
b29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4s
IHZvaWQqIGNvbnRleHQsIFNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZmlu
YWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkgb3ZlcnJpZGU7
CiAgICAgfTsKIAogICAgIEpTQXJyYXlCdWZmZXJPd25lciBtX293bmVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCA1NDM0ODg4YWI2MDE3MmMzYWNmN2Q3
Yzk0ZjEwZjE3OWZkYTUwYzMwLi5hZDU1OWE0MDNkMzI4ZjY3NDQyZjRjYmMxYjI4ZTJjZDk1ZWU5
MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjb25zdCBT
dHJ1Y3R1cmUqIG1fc3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuY3BwCmluZGV4IGFkZDk2M2NlNDU0ZDFlMGRiYjUxNjk4
Y2Q0MDg3MGZhOWIwNzU0NjUuLjI3ZDliMjMzZWEzNmUxYTU3N2YzMDAwZjUwYWQyY2NmODNhMTM0
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJh
cmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgcHVibGljOgogICAgIE9iamVjdFRvU3RyaW5n
QWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50KGNvbnN0IE9iamVjdFByb3Bl
cnR5Q29uZGl0aW9uJiwgU3RydWN0dXJlUmFyZURhdGEqKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRmlyZShjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBoYW5kbGVGaXJlKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKIAogICAgIFN0cnVjdHVy
ZVJhcmVEYXRhKiBtX3N0cnVjdHVyZVJhcmVEYXRhOwogfTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBpbnN0YWxsKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgZmlyZUludGVybmFsKGNvbnN0IEZpcmVEZXRhaWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZp
cmVJbnRlcm5hbChjb25zdCBGaXJlRGV0YWlsJikgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgog
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIG1fa2V5OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtNYXBEYXRhLmgKaW5kZXggZTA0OGE0M2I4YWFjZDUzNDZlNGYwOWQxZTkz
NWFmMzJkODU5NTA0MC4uMWMyOTEzMzY2ZGZmOWI3ZTQ1ZjVmYTE4MTVkZDdiOGQ2YWE0MGQ0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcERhdGEuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwRGF0YS5oCkBAIC04MSw4
ICs4MSw4IEBAIHByaXZhdGU6CiAgICAgICAgIHsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJikgb3Zl
cnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIG92
ZXJyaWRlOworICAgICAgICB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKSBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpIG92ZXJyaWRl
OwogICAgICAgICB1bnNpZ25lZCBtX2xpdmVLZXlDb3VudDsKICAgICAgICAgV2Vha01hcERhdGEq
IG1fdGFyZ2V0OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlUHJpbnRT
dHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCmluZGV4IDBkY2UzM2Y0
ZTY4MjFhNjMwNWMxYzE4YTJhNDk3NjUwMWM1ZTkyMWQuLmNmODIyMjE3MjdiMThkYWRhM2YxOTdj
OThkYzdlNGFkNzhmNWI2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0
cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVQcmludFN0cmVhbS5oCkBAIC00NSw4ICs0
NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBGSUxFKiBmaWxlKCkgeyByZXR1cm4gbV9maWxlOyB9
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHZwcmludGYoY29uc3QgY2hhciogZm9ybWF0LCB2YV9s
aXN0KSBvdmVycmlkZSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAwKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmx1c2goKSBvdmVycmlkZTsKKyAgICB2b2lkIHZwcmludGYoY29uc3QgY2hhciogZm9ybWF0
LCB2YV9saXN0KSBvdmVycmlkZSBXVEZfQVRUUklCVVRFX1BSSU5URigyLCAwKTsKKyAgICB2b2lk
IGZsdXNoKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgRklMRSogbV9maWxlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvUnVuTG9vcC5oIGIvU291cmNlL1dURi93dGYvUnVuTG9vcC5o
CmluZGV4IGM4NDU4ODc2MDczMDYyOGNmMTliNzFiNjlmZWRiNWY4ZDdhMmNiYmYuLmZhZWI5YjFm
ZmEyNWZjYWJhZTkxZGY4NzMwYWJjZTQzMjRiODlhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1J1bkxvb3AuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SdW5Mb29wLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBpc01haW4o
KTsKICAgICB+UnVuTG9vcCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaChzdGQ6OmZ1bmN0aW9u
PHZvaWQoKT4pIG92ZXJyaWRlOwogCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IHJ1bigpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHN0b3AoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmggYi9Tb3VyY2UvV1RGL3d0Zi9TdHJp
bmdQcmludFN0cmVhbS5oCmluZGV4IDE4ZWVjYjIwODllZjM5NGI2ZGM4OTdjM2Y4Y2RhN2VlNmI0
MmFlOTkuLjg2OThlOWRkZjM1Y2QxYTkxMWI1ZDA3ZjIzOGRjY2Q3ZWVjNTM5OGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL1N0cmluZ1ByaW50U3RyZWFtLmgKKysrIGIvU291cmNlL1dURi93
dGYvU3RyaW5nUHJpbnRTdHJlYW0uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgV1RG
X0VYUE9SVF9QUklWQVRFIFN0cmluZ1ByaW50U3RyZWFtKCk7CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZpcnR1YWwgflN0cmluZ1ByaW50U3RyZWFtKCk7CiAgICAgCi0gICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkg
b3ZlcnJpZGUgV1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgdnByaW50Zihjb25zdCBjaGFyKiBmb3JtYXQsIHZhX2xpc3QpIG92ZXJyaWRlIFdU
Rl9BVFRSSUJVVEVfUFJJTlRGKDIsIDApOwogCiAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmV4dDsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV29ya1F1
ZXVlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAppbmRleCBkZGEzY2ZkZDAxY2ZjMTJm
OTQ1OTkzNWVlNDE5OGU5NTJhYWE0MjVmLi5iZWM4MDEyYzQ5NjQ2NTcwNTg4NDVjNWE2Y2JhZWVm
MWZjMGYxMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9Xb3JrUXVldWUuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBjcmVhdGUoY29uc3QgY2hh
ciogbmFtZSwgVHlwZSA9IFR5cGU6OlNlcmlhbCwgUU9TID0gUU9TOjpEZWZhdWx0KTsKICAgICB2
aXJ0dWFsIH5Xb3JrUXVldWUoKTsKIAotICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7CisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2goc3RkOjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJp
ZGU7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGlzcGF0Y2hBZnRlcihzdGQ6OmNocm9u
bzo6bmFub3NlY29uZHMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4pOwogCiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyB2b2lkIGNvbmN1cnJlbnRBcHBseShzaXplX3QgaXRlcmF0aW9ucywg
Y29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChzaXplX3QgaW5kZXgpPiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYWlycGxheS9XZWJLaXRQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmgKaW5kZXggNTQ4M2VmOWQ1ZmM3YzcwZWE0ZjE4
OTQ5NTliNWE5NjAwNjliMGFlOC4uOTg5Yjg2YzBmMzdlZTViZmY5ZDg2ODA1ODBmNjUxYTMxM2Ux
NzhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9haXJwbGF5L1dlYktpdFBs
YXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FpcnBsYXkvV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBhdmFpbGFiaWxpdHkoKSBjb25zdCB7
IHJldHVybiBtX2F2YWlsYWJpbGl0eTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdlYktpdFBsYXliYWNrVGFy
Z2V0QXZhaWxhYmlsaXR5RXZlbnRJbnRlcmZhY2VUeXBlOyB9CisgICAgRXZlbnRJbnRlcmZhY2Ug
ZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50SW50ZXJmYWNlVHlwZTsgfQogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgYXZhaWxhYmxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmgKaW5kZXggMjU0ZDJmOTk5ZmUwZjBlMGEx
NTBjNTM3NWRhYzFhNzc5MjY5NDRjMy4uYTc0ZGFjZjVjZTRmMDk1YThkMWQ0MzRkMDFiOGI0YjIx
MmIwM2IyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRl
cnlNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlN
YW5hZ2VyLmgKQEAgLTM4LDggKzM4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QmF0dGVy
eU1hbmFnZXI+IGNyZWF0ZShOYXZpZ2F0b3IqKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0IGltcGxl
bWVudGF0aW9uLgotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJ
bnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXR0ZXJ5TWFuYWdlckV2ZW50VGFy
Z2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURP
TU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXR0
ZXJ5TWFuYWdlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgYm9v
bCBjaGFyZ2luZygpOwogICAgIGRvdWJsZSBjaGFyZ2luZ1RpbWUoKTsKQEAgLTU0LDggKzU0LDgg
QEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8QmF0dGVyeU1hbmFnZXI+OjpkZXJlZjsK
IAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERh
dGEoKSBvdmVycmlkZSB7IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7IH0KLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9ldmVudFRhcmdldERhdGE7IH0KKyAgICBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0
RGF0YSgpIG92ZXJyaWRlIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50
VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9l
dmVudFRhcmdldERhdGE7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCYXR0ZXJ5TWFuYWdl
cihOYXZpZ2F0b3IqKTsKQEAgLTY3LDEwICs2NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3Rv
cCgpIG92ZXJyaWRlOwogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAg
dmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAg
dm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVm
RXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJCYXR0
ZXJ5TWFuYWdlciI7IH0KKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkJhdHRlcnlNYW5hZ2VyIjsgfQogCiAgICAgQmF0dGVyeUNv
bnRyb2xsZXIqIG1fYmF0dGVyeUNvbnRyb2xsZXI7CiAgICAgRXZlbnRUYXJnZXREYXRhIG1fZXZl
bnRUYXJnZXREYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlQ2xlYXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5j
cnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZUNsZWFyS2V5LmgKaW5kZXggZWZkMWZhMmM0MTQyZWEwNjYz
MmYwMGQ4MmViNDkzMjBhYzQxNGU4Yi4uMzZhM2NmMDE4OWUyZDFmNzU1ZWNjZDBkNzI4YWQ2ZDU3
ZjdjODBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9DRE1Qcml2YXRlQ2xlYXJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL0NETVByaXZhdGVDbGVhcktleS5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmKTsKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbUFuZE1pbWVUeXBlKGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oQ0RNU2Vzc2lvbkNs
aWVudCopIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAg
ICBDRE0qIG1fY2RtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvQ0RNUHJpdmF0ZU1lZGlhUGxheWVyLmgKaW5kZXggYTNjNjUzMWQ4YmY1
ZGQwZjlhMWM5YWMxM2FmZGU0ZTJmNWRmNjM0ZC4uMWIzOTMwYjNlN2QyZWQxMjYwMTM5NWU5MzYz
Y2UyMDcwMTUxNzgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9DRE1Qcml2YXRlTWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL0NETVByaXZhdGVNZWRpYVBsYXllci5oCkBAIC00Niw4ICs0Niw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNETVByaXZhdGVNZWRpYVBsYXllcigpIHsgfQog
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKENETVNlc3Npb25DbGllbnQqKSBvdmVy
cmlkZTsKIAogICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1cm4gbV9jZG07IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uQ2xl
YXJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvQ0RNU2Vzc2lv
bkNsZWFyS2V5LmgKaW5kZXggNDYyODcwOTRhYThjNjdlODQ1MzZkOTY1M2Y0NTEzMWFhNmNmZGVj
Ni4uYThlZmM2YWEyNmMwYmU5Mzk3ZDVhYjE5MDcwOGMyNzJlOGY1NTI2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9DRE1TZXNzaW9uQ2xlYXJLZXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL0NETVNlc3Npb25D
bGVhcktleS5oCkBAIC0zOSwxMyArMzksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNETVNl
c3Npb25DbGVhcktleSgpOwogCiAgICAgLy8gQ0RNU2Vzc2lvblByaXZhdGUKLSAgICB2aXJ0dWFs
IENETVNlc3Npb25UeXBlIHR5cGUoKSBvdmVycmlkZSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZUNs
ZWFyS2V5OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChDRE1TZXNzaW9uQ2xpZW50KiBj
bGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLSAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7
IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSosIFN0cmluZyYsIHVuc2lnbmVkIHNob3J0
JiwgdWludDMyX3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUtleXMoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWlu
dDhBcnJheT4mLCB1bnNpZ25lZCBzaG9ydCYsIHVpbnQzMl90Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZWZQdHI8QXJyYXlCdWZmZXI+IGNhY2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYp
IGNvbnN0IG92ZXJyaWRlOworICAgIENETVNlc3Npb25UeXBlIHR5cGUoKSBvdmVycmlkZSB7IHJl
dHVybiBDRE1TZXNzaW9uVHlwZUNsZWFyS2V5OyB9CisgICAgdm9pZCBzZXRDbGllbnQoQ0RNU2Vz
c2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAg
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Np
b25JZDsgfQorICAgIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSosIFN0cmluZyYsIHVuc2lnbmVkIHNob3J0Jiwg
dWludDMyX3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCB1cGRhdGUoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYsIHVuc2lnbmVk
IHNob3J0JiwgdWludDMyX3QmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGNh
Y2hlZEtleUZvcktleUlEKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0
ZWQ6CiAgICAgQ0RNU2Vzc2lvbkNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5TWVzc2FnZUV2ZW50
LmgKaW5kZXggZDY5MWQ4MzZmOTk3NzM0NzUwZmI4MTBjOTUwNGU1MWQ4Mjk3NWM3OC4uZmJlNTZk
NWJmYmJhZTA2ODVlYjdmYmJmOTc2NzNhYTk1N2EzZGVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleU1lc3NhZ2VFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlNZXNzYWdlRXZl
bnQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lZGlhS2V5TWVzc2FnZUV2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBVaW50OEFycmF5KiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlLmdldCgp
OyB9CiAgICAgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5h
dGlvblVSTDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleU5lZWRlZEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaAppbmRleCAxZWI5MGExNjRjOTIwYjI0Mjlh
NzA1N2ZjNzkxNjA4YWQ0NGY0ODQ2Li5lNjFhM2RjZTQ5Y2NiYzNjMjEwNjM3OGNkYmE0MzNmMDEw
MGM0ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5TmVlZGVkRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5TmVlZGVkRXZlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhS2V5TmVlZGVkRXZlbnQodHlwZSwg
aW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRl
cmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFVpbnQ4QXJyYXkqIGluaXREYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9pbml0RGF0YS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCA0YjUx
NzE0ODAwZGVlYjM3NmNlNmM4ODgwZWMzZmZjNjI0MmQyMThlLi4zYTVhNDc1MWQxNTIxNjZlOTVm
ZDM5NjM3M2NlM2FmNjgyODllMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTczLDggKzczLDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogCi0g
ICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhS2V5U2Vzc2lvbkV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYUtleVNlc3Npb25F
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIC8vIEFjdGl2ZURPTU9i
amVjdCBBUEkuCiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsK
QEAgLTg1LDkgKzg1LDkgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYWRkS2V5VGltZXJGaXJlZCgp
OwogCiAgICAgLy8gQ0RNU2Vzc2lvbkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2Fn
ZShVaW50OEFycmF5KiwgU3RyaW5nIGRlc3RpbmF0aW9uVVJMKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2VuZEVycm9yKE1lZGlhS2V5RXJyb3JDb2RlLCB1aW50MzJfdCBzeXN0ZW1Db2Rl
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZW5kTWVzc2FnZShVaW50OEFycmF5KiwgU3Ry
aW5nIGRlc3RpbmF0aW9uVVJMKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbmRFcnJvcihNZWRpYUtl
eUVycm9yQ29kZSwgdWludDMyX3Qgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIE1lZGlhS2V5
cyogbV9rZXlzOwogICAgIFN0cmluZyBtX2tleVN5c3RlbTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBw
cm90ZWN0ZWQ6CiAgICAgVGltZXIgbV9hZGRLZXlUaW1lcjsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVu
dFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0
IEFQSS4KICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDM0ZmNhOGZjZDhjMjI1OTUy
YWQ0NWI4Zjg4ZjIyM2RmMGY1MDEyNjkuLjBmNmQzMmFlMzQxMjRkNDU3YzFkN2VlNDM1NTNhNjUx
YWJiOWMwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAg
ICAvLyBDRE1DbGllbnQ6Ci0gICAgdmlydHVhbCBNZWRpYVBsYXllciogY2RtTWVkaWFQbGF5ZXIo
Y29uc3QgQ0RNKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFQbGF5ZXIqIGNkbU1lZGlhUGxh
eWVyKGNvbnN0IENETSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTWVkaWFLZXlzKGNvbnN0IFN0
cmluZyYga2V5U3lzdGVtLCBzdGQ6OnVuaXF1ZV9wdHI8Q0RNPik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkRXZlbnQuaAppbmRleCAyNDhhYzg2MWQzY2UzYTFm
OTEzZWQ5NjBkMWE2NGQ1NmZmMmU0YTk3Li5jNDg5NGVjMzI2MDMzNTc3MjUzNzk3YTdjMTlmODAx
MjgyY2RlMjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2Ft
ZXBhZEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRF
dmVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogICAgIEdhbWVwYWQqIGdhbWVwYWQo
KSBjb25zdCB7IHJldHVybiBtX2dhbWVwYWQuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgRXZlbnRJ
bnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBHYW1lcGFk
RXZlbnRJbnRlcmZhY2VUeXBlOyB9CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBHYW1lcGFkRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgR2FtZXBhZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBHYW1lcGFkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2dhbWVwYWQvR2FtZXBhZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkTWFuYWdlci5oCmluZGV4IDExMTQ4ZTEyNDgzNjM5MWIwNTU3NjI5N2VmNDNmZDc4
YjkzZmJjNjIuLjQ5NTNiN2E1ZTExZjE0ODE3Y2QzN2UxMjhhMWRhOTE0YThlMDJhMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTWFuYWdlci5oCkBAIC00
Niw5ICs0Niw5IEBAIGNsYXNzIEdhbWVwYWRNYW5hZ2VyIDogcHVibGljIEdhbWVwYWRQcm92aWRl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIEdhbWVwYWRNYW5hZ2VyJiBzaW5nbGV0b24o
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUdhbWVwYWRDb25uZWN0ZWQoUGxhdGZvcm1H
YW1lcGFkJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtR2FtZXBh
ZERpc2Nvbm5lY3RlZChQbGF0Zm9ybUdhbWVwYWQmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRBY3Rpdml0eSgpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkQ29ubmVjdGVkKFBsYXRmb3JtR2FtZXBhZCYpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkRGlzY29ubmVjdGVkKFBsYXRmb3Jt
R2FtZXBhZCYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1HYW1lcGFkSW5wdXRB
Y3Rpdml0eSgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdm9pZCByZWdpc3Rlck5hdmlnYXRvcihO
YXZpZ2F0b3JHYW1lcGFkKik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyTmF2aWdhdG9yKE5hdmlnYXRv
ckdhbWVwYWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRp
b24vR2VvbG9jYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uQ29udHJvbGxlci5oCmluZGV4IGRkZWE2YzVhN2VmYjVkOGMyYjAx
YjIxODhlNjMxZTE4MGVjMDA1YzQuLmIwZDY2NjY3ZjJlMDkxOWJlMTQxOWQwMzljZWZiNjgwNzll
MTVhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2Nh
dGlvbi9HZW9sb2NhdGlvbkNvbnRyb2xsZXIuaApAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgog
ICAgIFBhZ2UmIG1fcGFnZTsKICAgICBHZW9sb2NhdGlvbkNsaWVudCYgbV9jbGllbnQ7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6RmxhZ3Mgb2xkVmll
d1N0YXRlLCBWaWV3U3RhdGU6OkZsYWdzIG5ld1ZpZXdTdGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCB2aWV3U3RhdGVEaWRDaGFuZ2UoVmlld1N0YXRlOjpGbGFncyBvbGRWaWV3U3RhdGUsIFZpZXdT
dGF0ZTo6RmxhZ3MgbmV3Vmlld1N0YXRlKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvRE9NV2luZG93SW5kZXhlZERhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaAppbmRl
eCAzZmZiNzFjNWNiYzNkMGZlZjhmOGVlYjkwNjc4NzU3MTJiY2M0ZTZjLi5kZTY1YWM5MzUwZTk1
NzY4MDdkZmMxNDAxYzc3YzBjNjljMTRjN2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9ET01XaW5kb3dJbmRleGVkRGF0YWJhc2UuaApAQCAt
NDYsMTEgKzQ2LDExIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBJREJGYWN0b3J5KiBpbmRleGVk
REIoRE9NV2luZG93Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZy
YW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbihGcmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvckRvY3VtZW50U3VzcGVuc2lvbigpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKEZy
YW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVk
RnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIElEQkZhY3RvcnkqIGluZGV4ZWREQigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUlt
cGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJBbnlJbXBs
LmgKaW5kZXggM2Q3Zjc1ZjRkNTJmM2ZmNWQ1NGI4NDQ5YTkwZDhmMTM5ZGQxMWFjZC4uZTM2ODU3
YzI0YjUyMTljNjI0NDE3MTU3Zjk1Yzg1OTEwZWI5YThkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkFueUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQW55SW1wbC5oCkBAIC03NSwxOSAr
NzUsMTkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SURCQW55KCk7CiAKLSAgICB2aXJ0dWFs
IFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fdHlwZTsgfQotICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QoKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJDdXJzb3I+IGlk
YkN1cnNvcigpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklE
QkN1cnNvcldpdGhWYWx1ZT4gaWRiQ3Vyc29yV2l0aFZhbHVlKCkgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKCkgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCRmFjdG9yeT4gaWRi
RmFjdG9yeSgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklE
QkluZGV4PiBpZGJJbmRleCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlPiBpZGJPYmplY3RTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiBpZGJUcmFuc2FjdGlv
bigpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0
VmFsdWUmIHNjcmlwdFZhbHVlKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBpbnQ2NF90
IGludGVnZXIoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBjb25zdCBJREJLZXlQYXRoJiBrZXlQ
YXRoKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gbV90eXBlOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+
IGRvbVN0cmluZ0xpc3QoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURC
Q3Vyc29yPiBpZGJDdXJzb3IoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SURCQ3Vyc29yV2l0aFZhbHVlPiBpZGJDdXJzb3JXaXRoVmFsdWUoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2U+IGlkYkRhdGFiYXNlKCkgb3ZlcnJpZGUg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQkZhY3Rvcnk+IGlkYkZhY3RvcnkoKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXg+IGlkYkluZGV4KCkgb3Zl
cnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQk9iamVjdFN0b3JlPiBpZGJPYmpl
Y3RTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbj4gaWRiVHJhbnNhY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBpbnQ2
NF90IGludGVnZXIoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcmIHN0cmluZygp
IG92ZXJyaWRlIGZpbmFsOworICAgIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSBvdmVycmlk
ZSBmaW5hbDsKIAogICAgIElEQk9iamVjdFN0b3JlKiBtb2Rlcm5JREJPYmplY3RTdG9yZSgpOwog
ICAgIElEQkluZGV4KiBtb2Rlcm5JREJJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDdXJzb3JJbXBsLmgKaW5kZXggODY4YjFh
MTcwMjJjZWJiM2IzOTUzMWE3OWM5YWU5ODJmMTMwNDU5Ny4uYWVmNDg5ZGE3MzMxYWQ5NDgwZTdm
ZjUyOTRkNDVmMmI5NmE5NzFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQkN1cnNvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29ySW1wbC5oCkBAIC00OSwxNyArNDksMTcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfklEQkN1cnNvcigpOwogCiAgICAgLy8gSW1wbGVtZW50IHRo
ZSBJREwKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYgcHJpbWFyeUtleSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCBJREJBbnkqIHNvdXJjZSgpIG92ZXJyaWRlIGZpbmFsOwotCi0g
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gdXBkYXRlKEpTQzo6RXhlY1N0
YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2Um
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSh1bnNpZ25lZCBsb25n
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IHZvaWQgY29udGludWVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRp
bnVlRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGRlbGV0ZUZ1bmN0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbigpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXkoKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgcHJpbWFy
eUtleSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiB2YWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIElEQkFueSogc291cmNl
KCkgb3ZlcnJpZGUgZmluYWw7CisKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gdXBk
YXRlKEpTQzo6RXhlY1N0YXRlJiwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGFkdmFuY2UodW5zaWdu
ZWQgbG9uZywgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBjb250aW51ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGNvbnRpbnVlRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
JiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7CiAKICAg
ICB2b2lkIGNvbnRpbnVlRnVuY3Rpb24oY29uc3QgSURCS2V5RGF0YSYsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpOwogCkBAIC03MSw4ICs3MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
R2V0UmVzdWx0KElEQlJlcXVlc3QmLCBjb25zdCBJREJHZXRSZXN1bHQmKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNNb2Rlcm5DdXJzb3IoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGlzTW9kZXJuQ3Vyc29yKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBkZWNyZW1lbnRPdXRzdGFuZGluZ1JlcXVl
c3RDb3VudCgpOwogCkBAIC04Miw5ICs4Miw5IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAg
ICAvLyBBY3RpdmVET01PYmplY3QuCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGNhblN1
c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICAvLyBDdXJzb3JzIGFyZSBjcmVhdGVkIHdpdGggYW4gb3V0c3RhbmRpbmcg
aXRlcmF0aW9uIHJlcXVlc3QuCiAgICAgdW5zaWduZWQgbV9vdXRzdGFuZGluZ1JlcXVlc3RDb3Vu
dCB7IDEgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2Ns
aWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ3Vyc29yV2l0aFZhbHVlSW1wbC5oCmluZGV4IGRmMzRjZGVhNTEx
OWIxM2E0OGFjZTg2NGQyMjFkY2U2MThjMzY3OWUuLjc4ODQ3MzUzY2VmNGQwODU0MWMwMzkxNzA1
NmYyZDk5OWZmNDE0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDdXJzb3JXaXRoVmFsdWVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkN1cnNvcldpdGhWYWx1ZUltcGwuaApAQCAtNDAs
NyArNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5JREJDdXJzb3JXaXRoVmFsdWUoKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0tleUN1cnNvcigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgSURCQ3Vyc29yV2l0aFZhbHVl
KElEQlRyYW5zYWN0aW9uJiwgSURCT2JqZWN0U3RvcmUmLCBjb25zdCBJREJDdXJzb3JJbmZvJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURC
RGF0YWJhc2VJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCRGF0YWJhc2VJbXBsLmgKaW5kZXggMzM2ZDE3NTgwNDQwYTI5ZjVjMzg3YjcxOGVlMWEzN2Zl
YjUwM2EwOS4uMTMwZGQ1NDE5NjRhZjRjZjM4ODk4OWRlYmMxMTBkYjZiMjY3ZjRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkRhdGFiYXNl
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJE
YXRhYmFzZUltcGwuaApAQCAtNDksMjYgKzQ5LDI2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
REJEYXRhYmFzZSgpOwogCiAgICAgLy8gSURCRGF0YWJhc2UgSURMCi0gICAgdmlydHVhbCBjb25z
dCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdWludDY0
X3QgdmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPERP
TVN0cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAg
ICBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHVpbnQ2NF90
IHZlcnNpb24oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQk9iamVj
dFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktl
eVBhdGgmLCBib29sIGF1dG9JbmNyZW1lbnQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9u
PiB0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mLCBjb25zdCBTdHJpbmcmIG1vZGUsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uPiB0
cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBtb2RlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZv
aWQgY2xvc2UoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0
U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlv
bmFyeSYsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCBhdXRvSW5jcmVtZW50LCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjbG9zZSgp
IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gSURCRGF0YWJhc2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gSURCRGF0
YWJhc2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQogCi0gICAgdmlydHVh
bCBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlIGZpbmFs
OworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIGNv
bnN0IElEQkRhdGFiYXNlSW5mbyYgaW5mbygpIGNvbnN0IHsgcmV0dXJuIG1faW5mbzsgfQogICAg
IHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2RhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXI7IH0KQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbWF5YmVDbG9zZUluU2VydmVyKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAogICAgIFJlZjxJREJDb25u
ZWN0aW9uVG9TZXJ2ZXI+IG1fc2VydmVyQ29ubmVjdGlvbjsKICAgICBJREJEYXRhYmFzZUluZm8g
bV9pbmZvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkZhY3RvcnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCRmFjdG9yeUltcGwuaAppbmRleCA2ODU5YmUxZjYxZGExZjBkYTFlNDkxNWMyNTdi
MjU4ZmRlMDU3MjM3Li43Nzg0YzAyMTRjMjRlNzg5MGQzZDc2OTk1NjZmMTM3ZjUyMDI1NGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCRmFj
dG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQv
SURCRmFjdG9yeUltcGwuaApAQCAtNDAsMTMgKzQwLDEzIEBAIGNsYXNzIElEQkZhY3RvcnkgOiBw
dWJsaWMgV2ViQ29yZTo6SURCRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJREJG
YWN0b3J5PiBjcmVhdGUoSURCQ29ubmVjdGlvblRvU2VydmVyJik7CiAKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdl
YkNvcmU6OklEQlJlcXVlc3Q+IGdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgUmVmUHRy
PFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZl
cnNpb24sIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUg
ZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IG9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0PiBvcGVu
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxv
bmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVm
UHRyPFdlYkNvcmU6OklEQk9wZW5EQlJlcXVlc3Q+IGRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgc2hvcnQgY21wKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZmlyc3QsIGNvbnN0IERlcHJlY2F0ZWQ6
OlNjcmlwdFZhbHVlJiBzZWNvbmQsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRl
IGZpbmFsOworICAgIHNob3J0IGNtcChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGZpcnN0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgc2Vjb25kLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKIAog
cHJpdmF0ZToKICAgICBJREJGYWN0b3J5KElEQkNvbm5lY3Rpb25Ub1NlcnZlciYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkluZGV4SW1w
bC5oCmluZGV4IDRjZDZjYzY1MjhkNDNlODMxODNjZTVlN2E4YjUzZGVhOGE5MTRhYWYuLjA4NjQz
MWE0Y2ZmYjE1NmVmM2YyNzBjMDdiNmQ5NTU3MzFmMjFkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJJbmRleEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCSW5kZXhJbXBsLmgKQEAgLTQ4
LDMzICs0OCwzMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCSW5kZXgoKTsKIAogICAgIC8v
IEltcGxlbWVudCB0aGUgSURMCi0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RT
dG9yZT4gb2JqZWN0U3RvcmUoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpJREJBbnk+IGtleVBhdGhBbnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIGJvb2wgdW5pcXVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBib29sIG11bHRpRW50cnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLQotICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5n
ZSo+KG51bGxwdHIpLCBlYyk7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJh
bmdlKiBrZXlSYW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJl
Y3Rpb25OZXh0KCksIGVjKTsgfQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXksIElEQkN1cnNv
cjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5n
ZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBv
cGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhN
ZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0KLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6
SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpIG92ZXJyaWRlIGZpbmFsOwotCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBvcGVu
S2V5Q3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdlKj4obnVsbHB0ciksIGVj
KTsgfQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5LZXlDdXJz
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSURCS2V5UmFuZ2UqIGtleVJhbmdl
LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBv
cGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleVJhbmdlLCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQo
KSwgZWMpOyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3Blbktl
eUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiBvcGVuS2V5Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpk
aXJlY3Rpb25OZXh0KCksIGVjKTsgfQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJl
cXVlc3Q+IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdl
KiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9w
ZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNlcHRpb25Db2RlV2l0
aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLQotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2Fn
ZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IGdldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
IG92ZXJyaWRlIGZpbmFsOworICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RTdG9yZT4gb2JqZWN0U3RvcmUo
KSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCQW55PiBrZXlQYXRoQW55
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgdW5pcXVlKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CisgICAgYm9vbCBtdWx0aUVudHJ5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBvcGVuQ3Vyc29yKGNvbnRleHQsIHN0YXRpY19jYXN0PElEQktleVJhbmdl
Kj4obnVsbHB0ciksIGVjKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVu
Q3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIElEQktleVJhbmdlKiBrZXlS
YW5nZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJiBlYykgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gb3BlbkN1cnNvcihjb250ZXh0LCBrZXlSYW5nZSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0
KCksIGVjKTsgfQorICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZh
bHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYgZWMpIG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIG9wZW5DdXJzb3IoY29udGV4dCwga2V5LCBJREJDdXJzb3I6OmRpcmVjdGlvbk5leHQo
KSwgZWMpOyB9CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5nJiBkaXJlY3Rp
b24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0
cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJpbmcmIGRpcmVj
dGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7CisKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBjb3VudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5
UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+
IG9wZW5LZXlDdXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJiBlYykgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gb3BlbktleUN1cnNv
cihjb250ZXh0LCBzdGF0aWNfY2FzdDxJREJLZXlSYW5nZSo+KG51bGxwdHIpLCBlYyk7IH0KKyAg
ICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBJREJLZXlSYW5nZSoga2V5UmFuZ2UsIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYgZWMpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG9wZW5LZXlDdXJzb3IoY29u
dGV4dCwga2V5UmFuZ2UsIElEQkN1cnNvcjo6ZGlyZWN0aW9uTmV4dCgpLCBlYyk7IH0KKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBvcGVuS2V5
Q3Vyc29yKGNvbnRleHQsIGtleSwgSURCQ3Vyc29yOjpkaXJlY3Rpb25OZXh0KCksIGVjKTsgfQor
ICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuS2V5Q3Vyc29yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIGNvbnN0IFN0cmluZyYgZGlyZWN0aW9uLCBFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SURCUmVxdWVzdD4gb3BlbktleUN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5nJiBkaXJlY3Rpb24s
IEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgUmVmUHRy
PFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5
UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBS
ZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBj
b25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3Nh
Z2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZ2V0
S2V5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVX
aXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1
ZXN0PiBnZXRLZXkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFs
OwogCiAgICAgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pbmZv
OyB9CiAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbWFya0FzRGVsZXRlZCgp
OwogICAgIGJvb2wgaXNEZWxldGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWxldGVkOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNNb2Rlcm4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc01vZGVybigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIHZvaWQgcmVmKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlOwpAQCAt
OTQsOSArOTQsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBk
b0dldEtleShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwg
RXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lv
bigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAogICAgIElEQkluZGV4SW5m
byBtX2luZm87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2NsaWVudC9JREJPYmplY3RTdG9yZUltcGwuaAppbmRleCA1NzVjNzJhOTA4MjBmNDNi
NDFiMjY5ZDBlNjQyOWE0ZjE5ZTU5OTViLi4yY2JkNjkwZDk2NDAxNzhiODRjNGIyMTMyMzI0ZDQy
M2MzYmZlMzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9j
bGllbnQvSURCT2JqZWN0U3RvcmVJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvY2xpZW50L0lEQk9iamVjdFN0b3JlSW1wbC5oCkBAIC00OSwzNiArNDksMzYgQEAg
Y2xhc3MgSURCT2JqZWN0U3RvcmUgOiBwdWJsaWMgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmUsIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SURCT2JqZWN0
U3RvcmU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiwgSURCVHJhbnNhY3Rpb24mKTsKIAotICAgIHZpcnR1YWwgfklEQk9iamVjdFN0b3Jl
KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgfklEQk9iamVjdFN0b3JlKCkgb3ZlcnJpZGUgZmluYWw7
CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElEQk9iamVjdFN0b3JlIElETAotICAgIHZpcnR1YWwg
Y29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpJREJBbnk+IGtleVBhdGhBbnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIGNvbnN0IElEQktleVBhdGgga2V5UGF0aCgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXMoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgYXV0
b0luY3JlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotCi0gICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6SURCUmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUsIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5DdXJzb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4g
b3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2Ny
aXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBjb25zdCBTdHJpbmcmIGRpcmVjdGlv
biwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gZ2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJREJLZXlSYW5n
ZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGFkZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6
SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0
KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBkZWxldGVGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
IGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQkluZGV4PiBjcmVhdGVJbmRleChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1
bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCSW5kZXg+IGluZGV4KGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWZQ
dHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV4
Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgUmVm
UHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJ
REJLZXlSYW5nZSosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRp
b25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBTdHJpbmcgbmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJBbnk+IGtl
eVBhdGhBbnkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBJREJLZXlQYXRoIGtl
eVBhdGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8RE9NU3RyaW5nTGlzdD4g
aW5kZXhOYW1lcygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGF1
dG9JbmNyZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKworICAgIFJlZlB0cjxXZWJDb3Jl
OjpJREJSZXF1ZXN0PiBhZGQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEV4Y2VwdGlv
bkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJ
REJSZXF1ZXN0PiBwdXQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIEV4Y2VwdGlvbkNv
ZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJS
ZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2Rl
V2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVx
dWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBF
eGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2Vi
Q29yZTo6SURCUmVxdWVzdD4gb3BlbkN1cnNvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29u
c3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IG9wZW5D
dXJzb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgY29uc3QgU3RyaW5n
JiBkaXJlY3Rpb24sIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpJREJSZXF1ZXN0PiBvcGVuQ3Vyc29yKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYga2V5LCBjb25zdCBTdHJp
bmcmIGRpcmVjdGlvbiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7
CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGtleSwgRXhjZXB0aW9uQ29kZVdp
dGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVl
c3Q+IGdldChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSURCS2V5UmFuZ2UqLCBFeGNlcHRpb25D
b2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURC
UmVxdWVzdD4gYWRkKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUg
a2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gcHV0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVl
LCBKU0M6OkpTVmFsdWUga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gZGVsZXRlRnVuY3Rpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNz
YWdlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGRl
bGV0ZUZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSYga2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5h
bDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY2xlYXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZpbmFsOworICAg
IFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gY3JlYXRlSW5kZXgoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVl
LCBib29sIG11bHRpRW50cnksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpIG92ZXJyaWRlIGZp
bmFsOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJJbmRleD4gaW5kZXgoY29uc3QgU3RyaW5nJiBu
YW1lLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZUluZGV4KGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCUmVxdWVzdD4gY291bnQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIElEQktleVJhbmdlKiwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdl
Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVmUHRyPFdlYkNvcmU6OklEQlJlcXVlc3Q+IGNvdW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYg
a2V5LCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiBwdXRGb3JDdXJzb3JVcGRhdGUoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwog
ICAgIFJlZlB0cjxJREJSZXF1ZXN0PiBtb2Rlcm5EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEpTQzo6SlNWYWx1ZSBrZXksIEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYpOwpAQCAtOTQs
NyArOTQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJvbGxiYWNrSW5mb0ZvclZlcnNpb25DaGFu
Z2VBYm9ydCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzTW9kZXJuKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNb2Rlcm4oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHZpc2l0UmVmZXJlbmNlZEluZGV4ZXMoSlNDOjpTbG90
VmlzaXRvciYpIGNvbnN0OwogCkBAIC0xMTEsOSArMTExLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SURCUmVxdWVzdD4gZG9EZWxldGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
SURCS2V5UmFuZ2UqIGtleVJhbmdlLCBFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmIGVjKTsKIAog
ICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBjYW5T
dXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwor
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwogCiAgICAgSURCT2JqZWN0U3RvcmVJbmZvIG1faW5mbzsKICAgICBJREJPYmplY3RT
dG9yZUluZm8gbV9vcmlnaW5hbEluZm87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCT3BlbkRCUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5oCmluZGV4
IGYyNDJhNzk4YzRjNTg1NTVhYzVmZjIyYTJkMDViMDY1M2M5Mzc0NDguLmMyYWRmOTJiOWQyOTFj
N2JiNmIwY2NiOWZkNmJmN2NiZjI5YjU2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJPcGVuREJSZXF1ZXN0SW1wbC5o
CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPElEQk9wZW5EQlJlcXVl
c3Q+IGNyZWF0ZURlbGV0ZVJlcXVlc3QoSURCQ29ubmVjdGlvblRvU2VydmVyJiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYpOwogICAgIHN0YXRp
YyBSZWY8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlT3BlblJlcXVlc3QoSURCQ29ubmVjdGlvblRv
U2VydmVyJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRp
ZmllciYsIHVpbnQ2NF90IHZlcnNpb24pOwogCi0gICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVz
dCgpIG92ZXJyaWRlIGZpbmFsOworICAgIH5JREJPcGVuREJSZXF1ZXN0KCkgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgCiAgICAgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiBkYXRhYmFzZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlSWRlbnRpZmllcjsgfQogICAgIHVpbnQ2
NF90IHZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX3ZlcnNpb247IH0KQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHZvaWQgZmlyZVN1Y2Nlc3NBZnRlclZlcnNpb25DaGFuZ2VDb21taXQo
KTsKICAgICB2b2lkIGZpcmVFcnJvckFmdGVyVmVyc2lvbkNoYW5nZUNvbXBsZXRpb24oKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGUgZmluYWw7CiAKIHByaXZhdGU6
CiAgICAgSURCT3BlbkRCUmVxdWVzdChJREJDb25uZWN0aW9uVG9TZXJ2ZXImLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgSURCRGF0YWJhc2VJZGVudGlmaWVyJiwgdWludDY0X3QgdmVy
c2lvbiwgSW5kZXhlZERCOjpSZXF1ZXN0VHlwZSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBvblVwZ3JhZGVOZWVkZWQoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogICAgIHZv
aWQgb25EZWxldGVEYXRhYmFzZVN1Y2Nlc3MoY29uc3QgSURCUmVzdWx0RGF0YSYpOwogCi0gICAg
dmlydHVhbCBib29sIGlzT3BlbkRCUmVxdWVzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGlzT3BlbkRCUmVxdWVzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIElEQkRhdGFiYXNlSWRlbnRpZmllciBtX2RhdGFiYXNlSWRlbnRpZmll
cjsKICAgICB1aW50NjRfdCBtX3ZlcnNpb24geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCUmVxdWVzdEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCmluZGV4IDNi
ZjQyOTllOTk2MTIwZDY2NDMzNzQ0YjM5MDVmYjdhNWViZjE1M2UuLjY5YTJiMzI0ZWZjN2YxNDVk
NzlmZmQ3NzhmM2U1OWNkY2QwN2QxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJSZXF1ZXN0SW1wbC5oCkBAIC01OSwyOCArNTks
MjggQEAgcHVibGljOgogCiAgICAgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJj
ZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlSWRlbnRpZmllcjsgfQogCi0g
ICAgdmlydHVhbCB+SURCUmVxdWVzdCgpIG92ZXJyaWRlOworICAgIH5JREJSZXF1ZXN0KCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJBbnk+IHJlc3VsdChFeGNl
cHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHVuc2ln
bmVkIHNob3J0IGVycm9yQ29kZShFeGNlcHRpb25Db2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBSZWZQdHI8RE9NRXJyb3I+IGVycm9yKEV4Y2VwdGlvbkNvZGVXaXRoTWVzc2FnZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OklEQkFueT4gc291
cmNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6SURCVHJh
bnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SURCQW55PiByZXN1bHQoRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlKEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBSZWZQdHI8RE9NRXJyb3I+IGVycm9yKEV4Y2VwdGlvbkNvZGVXaXRoTWVz
c2FnZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJBbnk+IHNvdXJj
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbj4g
dHJhbnNhY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBTdHJpbmcmIHJlYWR5U3Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHVpbnQ2NF90IHNvdXJjZU9iamVjdFN0b3JlSWRl
bnRpZmllcigpIGNvbnN0OwogICAgIHVpbnQ2NF90IHNvdXJjZUluZGV4SWRlbnRpZmllcigpIGNv
bnN0OwogICAgIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlIHJlcXVlc3RlZEluZGV4UmVjb3Jk
VHlwZSgpIGNvbnN0OwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVm
Q291bnRlZDxJREJSZXF1ZXN0Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCUmVxdWVz
dD46OmRlcmVmOwogCiAgICAgdm9pZCBlbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmKTsKLSAgICB2
aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlz
cGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgSURCQ29ubmVjdGlvblRvU2VydmVy
JiBjb25uZWN0aW9uKCkgeyByZXR1cm4gbV9jb25uZWN0aW9uOyB9CiAKQEAgLTExMSwxNSArMTEx
LDE1IEBAIHByb3RlY3RlZDoKICAgICBJREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBJREJJbmRleCYsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBJREJUcmFuc2FjdGlvbiYp
OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0LgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogYWN0
aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9v
bCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3Qg
Y2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJv
b2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OworICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdldC4KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IFJlZkNvdW50
ZWQ8SURCUmVxdWVzdD46OnJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZSBmaW5hbCB7IFJlZkNvdW50ZWQ8SURCUmVxdWVzdD46OmRlcmVmKCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IFJl
ZkNvdW50ZWQ8SURCUmVxdWVzdD46OnJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgZmluYWwgeyBSZWZDb3VudGVkPElEQlJlcXVlc3Q+OjpkZXJlZigpOyB9Cisg
ICAgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkgb3ZlcnJpZGUgZmluYWw7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPcGVuREJSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L0lEQlRyYW5zYWN0aW9uSW1wbC5oCmluZGV4IDQ0MzhjODRlNGVkNzE3NDg1N2U4
YjNjYzY2MGQzYTcxNTUyZDYxYjIuLmE0YTg3NmVmZmUwZGFhY2YzNjViNWI2OGEzNjVkMTJhOTAz
ZGMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVu
dC9JREJUcmFuc2FjdGlvbkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9jbGllbnQvSURCVHJhbnNhY3Rpb25JbXBsLmgKQEAgLTYyLDI2ICs2MiwyNiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlvbj4gY3JlYXRlKElEQkRhdGFiYXNlJiwg
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJik7CiAgICAgc3RhdGljIFJlZjxJREJUcmFuc2FjdGlv
bj4gY3JlYXRlKElEQkRhdGFiYXNlJiwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiwgSURCT3Bl
bkRCUmVxdWVzdCYpOwogCi0gICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb24oKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB+SURCVHJhbnNhY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIC8vIElE
QlRyYW5zYWN0aW9uIElETAotICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJREJEYXRhYmFzZSogZGIoKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxET01FcnJvcj4gZXJyb3IoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpJREJPYmplY3RT
dG9yZT4gb2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlV2l0aE1l
c3NhZ2UmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoRXhjZXB0aW9u
Q29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmluYWw7Ci0KLSAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gSURCVHJhbnNhY3Rpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIGNvbnN0IFN0cmluZyYgbW9kZSgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFdlYkNvcmU6OklEQkRhdGFiYXNlKiBkYigpIG92ZXJy
aWRlIGZpbmFsOworICAgIFJlZlB0cjxET01FcnJvcj4gZXJyb3IoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZVdpdGhNZXNzYWdlJikgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBhYm9ydChFeGNlcHRpb25Db2RlV2l0aE1lc3NhZ2UmKSBvdmVycmlkZSBm
aW5hbDsKKworICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gSURCVHJhbnNhY3Rpb25FdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92
ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQogICAgIHVzaW5nIEV2ZW50VGFyZ2V0OjpkaXNwYXRj
aEV2ZW50OwotICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGUg
ZmluYWw7CisgICAgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50Jikgb3ZlcnJpZGUgZmluYWw7CiAK
LSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgp
IG92ZXJyaWRlIGZpbmFsOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3Bl
bnNpb24oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlIGZpbmFs
OwogCiAgICAgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKCkgY29uc3QgeyByZXR1cm4g
bV9pbmZvOyB9CiAgICAgSURCRGF0YWJhc2UmIGRhdGFiYXNlKCkgeyByZXR1cm4gbV9kYXRhYmFz
ZS5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
Y2xpZW50L0lEQlZlcnNpb25DaGFuZ2VFdmVudEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2NsaWVudC9JREJWZXJzaW9uQ2hhbmdlRXZlbnRJbXBsLmgKaW5kZXggNjcw
NTVhZTEyOTY5OWQzNmI1NDQyNDY3NzNjMGJiNDQ0YTE1ZTY1Ny4uMjczYTE0ZTRmNjQzOGQ5MDNk
ZDU2N2NmZTM0ODQzZmMwMGI3MDgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvY2xpZW50L0lEQlZlcnNpb25DaGFuZ2VFdmVudEltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCVmVyc2lvbkNoYW5nZUV2ZW50
SW1wbC5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSURCVmVyc2lv
bkNoYW5nZUV2ZW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElkZW50aWZp
ZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKTsKIAotICAgIHZpcnR1YWwgdWludDY0X3Qgb2xkVmVyc2lvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsgfQotICAgIHZpcnR1YWwgT3B0
aW9uYWw8dWludDY0X3Q+IG5ld1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWlu
dDY0X3Qgb2xkVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsg
fQorICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBuZXdWZXJzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IElEQlJlc291cmNlSWRlbnRpZmllciBtX3JlcXVlc3RJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90
IG1fb2xkVmVyc2lvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAppbmRleCAxNTkzMTc0
NmQ1NjQ2YTNmMGFmYzJmNDkwZDY3ZGNkNDVjMzEyMWQ0Li5mZWZjNWE5MmY5NzJmMjZmMDQ4OTI1
NjFmMzM5MmU3MTBlOTkxNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCkBAIC00
NCwzNiArNDQsMzYgQEAgY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIDogcHVibGljIElEQkJh
Y2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnlJ
REJCYWNraW5nU3RvcmU+IGNyZWF0ZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKICAg
ICAKLSAgICB2aXJ0dWFsIH5NZW1vcnlJREJCYWNraW5nU3RvcmUoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB+TWVtb3J5SURCQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0
dWFsIElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZvKElEQkRhdGFiYXNlSW5mbyYp
IG92ZXJyaWRlIGZpbmFsOworICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJbmZv
KElEQkRhdGFiYXNlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQgc2V0RGF0YWJhc2VJ
bmZvKGNvbnN0IElEQkRhdGFiYXNlSW5mbyYpOwogCi0gICAgdmlydHVhbCBJREJFcnJvciBiZWdp
blRyYW5zYWN0aW9uKGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgSURCRXJyb3IgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBJREJFcnJvciBjb21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBJ
REJFcnJvciBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJikgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIElEQkVycm9yIGNs
ZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBJREJFcnJvciBjcmVhdGVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCSW5kZXhJbmZvJikgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVJbmRleChjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgSURCRXJyb3Iga2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgYm9vbCYga2V5RXhpc3RzKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIElEQkVycm9yIGRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJ
REJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgb3V0
VmFsdWUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0SW5kZXhSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBJ
bmRleGVkREI6OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSURCR2V0
UmVzdWx0JiBvdXRWYWx1ZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBJREJFcnJvciBn
ZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIHVpbnQ2NF90JiBvdXRDb3VudCkgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCBJREJFcnJvciBnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIElEQkVycm9yIHJldmVydEdlbmVyYXRlZEtleU51bWJlcihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCB1aW50NjRfdCBrZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgSURCRXJyb3IgbWF5YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgZG91YmxlIG5ld0tleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCBJREJFcnJvciBvcGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0
JiBvdXRSZXN1bHQpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgSURCRXJyb3IgaXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJ
REJLZXlEYXRhJiwgdWludDMyX3QgY291bnQsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBvdmVy
cmlkZSBmaW5hbDsKLQotICAgIHZpcnR1YWwgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2Jq
ZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJpZGUgZmluYWw7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTaW11bHRhbmVvdXNUcmFuc2FjdGlvbnMoKSBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRXBoZW1lcmFs
KCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIElEQkVycm9yIGJlZ2luVHJh
bnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
SURCRXJyb3IgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CisgICAgSURCRXJyb3IgY29tbWl0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIpIG92ZXJyaWRlIGZpbmFsOworICAgIElEQkVycm9yIGNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBkZWxldGVP
YmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICBJREJFcnJvciBjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIG92
ZXJyaWRlIGZpbmFsOworICAgIElEQkVycm9yIGNyZWF0ZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJJbmRleEluZm8mKSBv
dmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBkZWxldGVJbmRleChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJ
ZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOworICAg
IElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgSURCRXJyb3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3Qg
SURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgSURCRXJyb3IgYWRkUmVjb3Jk
KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBnZXRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgVGhy
ZWFkU2FmZURhdGFCdWZmZXImIG91dFZhbHVlKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJv
ciBnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRl
eElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJF
cnJvciBnZXRDb3VudChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElk
ZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIHVpbnQ2NF90JiBvdXRDb3VudCkgb3Zl
cnJpZGUgZmluYWw7CisgICAgSURCRXJyb3IgZ2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CisgICAg
SURCRXJyb3IgcmV2ZXJ0R2VuZXJhdGVkS2V5TnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGtleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CisgICAgSURCRXJyb3IgbWF5
YmVVcGRhdGVLZXlHZW5lcmF0b3JOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgZG91
YmxlIG5ld0tleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7CisgICAgSURCRXJyb3Igb3BlbkN1cnNv
cihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBvdmVycmlkZSBmaW5h
bDsKKyAgICBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1
cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCBjb3VudCwgSURCR2V0
UmVzdWx0JiBvdXRSZXN1bHQpIG92ZXJyaWRlIGZpbmFsOworCisgICAgSURCT2JqZWN0U3RvcmVJ
bmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlIGZp
bmFsOworCisgICAgYm9vbCBzdXBwb3J0c1NpbXVsdGFuZW91c1RyYW5zYWN0aW9ucygpIG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzRXBoZW1lcmFsKCkgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZW1vdmVPYmplY3RTdG9yZUZv
clZlcnNpb25DaGFuZ2VBYm9ydChNZW1vcnlPYmplY3RTdG9yZSYpOwogICAgIHZvaWQgcmVzdG9y
ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KFJlZjxNZW1vcnlPYmplY3RTdG9yZT4m
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
TWVtb3J5SW5kZXhDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJbmRleEN1cnNvci5oCmluZGV4IDQ1NWYyM2EwNWEwYWM4NjcwNDZiODYyYjU5
OTBmNzA0MzhkY2I0MGUuLjc5MjRmOGJkMDE0NGEzNDI1YzNkNjVmMzkyMTJlZmNjZjdiNDFkOTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJbmRleEN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJbmRleEN1cnNvci5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGluZGV4VmFsdWVDaGFuZ2VkKGNvbnN0IElEQktleURhdGEmIGluZGV4S2V5LCBjb25zdCBJ
REJLZXlEYXRhJiBwcmltYXJ5S2V5KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY3Vy
cmVudERhdGEoSURCR2V0UmVzdWx0Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lk
IGl0ZXJhdGUoY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90IGNvdW50LCBJREJHZXRSZXN1bHQm
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYpIG92
ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgaXRlcmF0ZShjb25zdCBJREJLZXlEYXRhJiwgdWludDMy
X3QgY291bnQsIElEQkdldFJlc3VsdCYpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgTWVtb3J5SW5k
ZXgmIG1faW5kZXg7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmgKaW5kZXggN2Q3
YTIyODg4YTJkYzVkNTYyYzYxOWJkMzU0YTg0MWU2NjYwZTMwZS4uMWVlYWY0NjdhMGRmMGU4ZmM5
MmMxYTM5YjFmM2I1OTllN2FkODg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlQ3Vyc29y
LmgKQEAgLTQ4LDggKzQ4LDggQEAgcHVibGljOgogICAgIHZvaWQga2V5QWRkZWQoc3RkOjpzZXQ8
SURCS2V5RGF0YT46Oml0ZXJhdG9yKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY3Vy
cmVudERhdGEoSURCR2V0UmVzdWx0Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lk
IGl0ZXJhdGUoY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90IGNvdW50LCBJREJHZXRSZXN1bHQm
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGN1cnJlbnREYXRhKElEQkdldFJlc3VsdCYpIG92
ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgaXRlcmF0ZShjb25zdCBJREJLZXlEYXRhJiwgdWludDMy
X3QgY291bnQsIElEQkdldFJlc3VsdCYpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdm9pZCBzZXRG
aXJzdEluUmVtYWluaW5nUmFuZ2Uoc3RkOjpzZXQ8SURCS2V5RGF0YT4mKTsKICAgICB2b2lkIHNl
dEZvcndhcmRJdGVyYXRvckZyb21SZW1haW5pbmdSYW5nZShzdGQ6OnNldDxJREJLZXlEYXRhPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IGRlNjY4NzEyMWE3N2Y2NzU3NWRl
Y2QzNDkxM2ViOGY2MDk5YTM0YzMuLjMyYjY2ZGFkODYxMjA2OTAyNDNkNmM4ZGQ4OTM2Nzk5MmFk
MWM1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTQ5LDM1ICs0OSwzNSBA
QCBjbGFzcyBTUUxpdGVJREJCYWNraW5nU3RvcmUgOiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsK
IHB1YmxpYzoKICAgICBTUUxpdGVJREJCYWNraW5nU3RvcmUoY29uc3QgSURCRGF0YWJhc2VJZGVu
dGlmaWVyJiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZVJvb3REaXJlY3RvcnkpOwogICAgIAotICAg
IHZpcnR1YWwgflNRTGl0ZUlEQkJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOwotCi0gICAg
dmlydHVhbCBJREJFcnJvciBnZXRPckVzdGFibGlzaERhdGFiYXNlSW5mbyhJREJEYXRhYmFzZUlu
Zm8mKSBvdmVycmlkZSBmaW5hbDsKLQotICAgIHZpcnR1YWwgSURCRXJyb3IgYmVnaW5UcmFuc2Fj
dGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIElEQkVycm9yIGFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgSURC
RXJyb3IgY29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgSURCRXJyb3Ig
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgSURCRXJyb3IgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBJREJFcnJvciBjbGVhck9iamVj
dFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgSURCRXJyb3IgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5mbyYpIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgSURCRXJyb3IgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBJREJFcnJvciBkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IElEQkVycm9yIGFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0
YSYsIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCBJREJFcnJvciBnZXRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgVGhyZWFkU2FmZURhdGFCdWZmZXImIG91dFZhbHVlKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERC
OjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYg
b3V0VmFsdWUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0Q291bnQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2
NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmLCB1aW50NjRfdCYgb3V0Q291bnQpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgSURCRXJyb3IgZ2VuZXJhdGVLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QmIGtleU51bWJlcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCBJREJFcnJvciByZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgdWludDY0X3Qga2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIElE
QkVycm9yIG1heWJlVXBkYXRlS2V5R2VuZXJhdG9yTnVtYmVyKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGRvdWJsZSBuZXdLZXlOdW1iZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwg
SURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0
aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVz
dWx0KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIElEQkVycm9yIGl0ZXJhdGVDdXJzb3Io
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0
IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0
YSYsIHVpbnQzMl90IGNvdW50LCBJREJHZXRSZXN1bHQmIG91dFJlc3VsdCkgb3ZlcnJpZGUgZmlu
YWw7Ci0KLSAgICB2aXJ0dWFsIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zvck9iamVjdFN0b3Jl
KHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIG92ZXJyaWRlIGZpbmFsOwotCi0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzU2ltdWx0YW5lb3VzVHJhbnNhY3Rpb25zKCkgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNFcGhlbWVyYWwoKSBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIH5TUUxpdGVJREJCYWNraW5nU3RvcmUo
KSBvdmVycmlkZSBmaW5hbDsKKworICAgIElEQkVycm9yIGdldE9yRXN0YWJsaXNoRGF0YWJhc2VJ
bmZvKElEQkRhdGFiYXNlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOworCisgICAgSURCRXJyb3IgYmVn
aW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsK
KyAgICBJREJFcnJvciBhYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBj
b21taXRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CisgICAgSURCRXJyb3IgY3JlYXRlT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQk9iamVjdFN0b3JlSW5mbyYpIG92ZXJyaWRlIGZpbmFsOworICAgIElEQkVycm9yIGRl
bGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFs
OworICAgIElEQkVycm9yIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
cikgb3ZlcnJpZGUgZmluYWw7CisgICAgSURCRXJyb3IgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkluZGV4SW5m
byYpIG92ZXJyaWRlIGZpbmFsOworICAgIElEQkVycm9yIGRlbGV0ZUluZGV4KGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7
CisgICAgSURCRXJyb3Iga2V5RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiwgYm9vbCYga2V5RXhpc3RzKSBvdmVycmlkZSBmaW5h
bDsKKyAgICBJREJFcnJvciBkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBj
b25zdCBJREJLZXlSYW5nZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBhZGRS
ZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJl
YWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpIG92ZXJyaWRlIGZpbmFsOworICAgIElEQkVycm9yIGdl
dFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
LCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgb3V0VmFsdWUpIG92ZXJyaWRlIGZpbmFsOworICAgIElE
QkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIG92ZXJyaWRlIGZpbmFsOworICAg
IElEQkVycm9yIGdldENvdW50KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGlu
ZGV4SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgdWludDY0X3QmIG91dENvdW50
KSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBnZW5lcmF0ZUtleU51bWJlcihjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2Jq
ZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCYga2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsK
KyAgICBJREJFcnJvciByZXZlcnRHZW5lcmF0ZWRLZXlOdW1iZXIoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3Qga2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJv
ciBtYXliZVVwZGF0ZUtleUdlbmVyYXRvck51bWJlcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBkb3VibGUgbmV3S2V5TnVtYmVyKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJREJFcnJvciBvcGVu
Q3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIG92ZXJyaWRl
IGZpbmFsOworICAgIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90IGNvdW50LCBJ
REJHZXRSZXN1bHQmIG91dFJlc3VsdCkgb3ZlcnJpZGUgZmluYWw7CisKKyAgICBJREJPYmplY3RT
dG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgb3ZlcnJp
ZGUgZmluYWw7CisKKyAgICBib29sIHN1cHBvcnRzU2ltdWx0YW5lb3VzVHJhbnNhY3Rpb25zKCkg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRXBoZW1lcmFsKCkg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgdW5yZWdpc3RlckN1
cnNvcihTUUxpdGVJREJDdXJzb3ImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5oCmluZGV4IGUw
NjA4NzcwZDFmYTZjZmMyYzMwNjM0MWYzYjE3ZjMwOGFmNjVhZDMuLmIzNDI0YjA0YWY2MmY3YWRh
YTU0MTAyYTM5YjE4ZDU1OWI3MTE0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmgKQEAgLTU1
LDUwICs1NSw1MCBAQCBwdWJsaWM6CiAgICAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGll
bnQmIGNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0OwogCiAgICAgLy8gSURCQ29ubmVjdGlvblRv
U2VydmVyCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZURhdGFiYXNlKElEQlJlcXVlc3REYXRhJikg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5EYXRhYmFzZShJREJSZXF1ZXN0
RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBhYm9ydFRyYW5zYWN0aW9u
KElEQlJlc291cmNlSWRlbnRpZmllciYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRUcmFuc2FjdGlvbihJREJSZXNvdXJjZUlkZW50aWZpZXImKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNh
Y3Rpb24oSURCUmVzb3VyY2VJZGVudGlmaWVyJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3QgU3RyaW5nJiBvYmplY3RT
dG9yZU5hbWUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURC
UmVxdWVzdERhdGEmLCBjb25zdCBJREJJbmRleEluZm8mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgcHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBJ
REJLZXkqLCBTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0
b3JlT3ZlcndyaXRlTW9kZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJl
Y29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0
YSYsIGNvbnN0IElEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNv
bnN0IElEQktleURhdGEmLCB1bnNpZ25lZCBsb25nIGNvdW50KSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCB2b2lkIGRhdGFiYXNlQ29ubmVjdGlvbkNsb3NlZCh1aW50NjRfdCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IHZvaWQgYWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllcikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBkZWxldGVEYXRhYmFzZShJREJSZXF1ZXN0RGF0YSYpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZvaWQgb3BlbkRhdGFiYXNlKElEQlJlcXVlc3REYXRhJikgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBhYm9ydFRyYW5zYWN0aW9uKElEQlJlc291cmNlSWRlbnRpZmllciYpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgY29tbWl0VHJhbnNhY3Rpb24oSURCUmVzb3VyY2VJZGVudGlm
aWVyJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25D
aGFuZ2VUcmFuc2FjdGlvbihJREJSZXNvdXJjZUlkZW50aWZpZXImKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2b2lkIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVO
YW1lKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgY3JlYXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJ
REJJbmRleEluZm8mKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUluZGV4KGNvbnN0
IElEQlJlcXVlc3REYXRhJiwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGluZGV4TmFtZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBwdXRPckFkZChjb25z
dCBJREJSZXF1ZXN0RGF0YSYsIElEQktleSosIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0
IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIGdldFJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZ2V0Q291bnQoY29uc3QgSURCUmVxdWVz
dERhdGEmLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGRlbGV0ZVJlY29yZChjb25zdCBJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25zdCBJREJSZXF1ZXN0
RGF0YSYsIGNvbnN0IElEQkN1cnNvckluZm8mKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGl0
ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgdW5z
aWduZWQgbG9uZyBjb3VudCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBlc3RhYmxpc2hUcmFu
c2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJU
cmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRhdGFiYXNlQ29ubmVj
dGlvbkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIGFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKSBvdmVycmlkZSBm
aW5hbDsKIAogICAgIC8vIElEQkNvbm5lY3Rpb25Ub0NsaWVudAotICAgIHZpcnR1YWwgdWludDY0
X3QgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZWxl
dGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJFcnJvciYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUlu
ZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHRE
YXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdldENvdW50KGNvbnN0
IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVs
ZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0
YSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBmaXJlVmVyc2lvbkNoYW5nZUV2
ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiwgY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVy
c2lvbikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeU9w
ZW5EQlJlcXVlc3RCbG9ja2VkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVzdElk
ZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIG92ZXJy
aWRlIGZpbmFsOworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJikgb3Zl
cnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYpIG92
ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVz
b3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJS
ZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRDbGVh
ck9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2
b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2b2lkIGRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIGRpZEdldFJlY29yZChjb25zdCBJREJSZXN1bHREYXRhJikgb3Zl
cnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3QgSURCUmVzdWx0
RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBJREJS
ZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29yKGNv
bnN0IElEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGZpcmVWZXJzaW9u
Q2hhbmdlRXZlbnQoSURCU2VydmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0YXJ0VHJhbnNhY3Rp
b24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNv
bnN0IElEQkVycm9yJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKSBvdmVycmlkZSBmaW5h
bDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8SW5Qcm9j
ZXNzSURCU2VydmVyPjo6cmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBvdmVycmlk
ZSB7IFJlZkNvdW50ZWQ8SW5Qcm9jZXNzSURCU2VydmVyPjo6ZGVyZWYoKTsgfQorICAgIHZvaWQg
cmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPEluUHJvY2Vzc0lEQlNlcnZlcj46OnJlZigpOyB9
CisgICAgdm9pZCBkZXJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxJblByb2Nlc3NJREJTZXJ2
ZXI+OjpkZXJlZigpOyB9CiAKIHByaXZhdGU6CiAgICAgSW5Qcm9jZXNzSURCU2VydmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJlbW90
ZUNvbnRyb2xzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9NZWRpYVJl
bW90ZUNvbnRyb2xzLmgKaW5kZXggYTYwYTIxOTE5YmY5YTZiNjFlZjU0OTAyZGQzYmU5OGI0NDIw
YjBhOC4uOTg0ZTNhMjU4N2FkMTQ1MDdkODA4ODcwMjMwNzJkYTg3ZTBhZGY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vTWVkaWFSZW1vdGVDb250cm9s
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL01lZGlhUmVtb3Rl
Q29udHJvbHMuaApAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5NZWRp
YVJlbW90ZUNvbnRyb2xzKCk7CiAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVkaWFSZW1vdGVD
b250cm9sc0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlh
UmVtb3RlQ29udHJvbHNFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gJm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQogCiBwcml2YXRlOgogICAgIE1lZGlh
UmVtb3RlQ29udHJvbHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhU2Vzc2lvbiopOwpA
QCAtNjgsOCArNjgsOCBAQCBwcml2YXRlOgogCiAgICAgTWVkaWFTZXNzaW9uKiBtX3Nlc3Npb24g
eyBudWxscHRyIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBv
dmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgZmluYWwgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIGZpbmFsIHsgZGVyZWYoKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVkaWFTZXNz
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNlc3Npb24vV2ViTWVk
aWFTZXNzaW9uTWFuYWdlci5oCmluZGV4IGJlMDU3YjlhYzVmNzNkMmE1ZjI5NTE4MGVkNjIzMmNk
ZTJlOGY2NDEuLjUwNGU1NDkzMjE2M2NhMGJiMWRiMzI3ZmNjNTlkZWJjNjhjNTkyN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzZXNzaW9uL1dlYk1lZGlhU2Vzc2lv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc2Vzc2lvbi9XZWJN
ZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTczLDkgKzczLDkgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jayYgbW9ja1BpY2tlcigpOwogCiAgICAg
Ly8gTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlcjo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFBsYXliYWNrVGFyZ2V0KFJlZjxXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRD
aGFuZ2UoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1c3RvbVBsYXliYWNrQWN0
aW9uU2VsZWN0ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KFJlZjxX
ZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4dGVy
bmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlOworICAgIHZv
aWQgY3VzdG9tUGxheWJhY2tBY3Rpb25TZWxlY3RlZCgpIG92ZXJyaWRlOwogCiAgICAgc2l6ZV90
IGZpbmQoV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudCosIHVpbnQ2NF90KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDEw
NTAyZTdkZDBkN2U3ZDdhZDZhYWJhYTI5Yjg0YmI1OGIwOWRkNDAuLmE3MDNmZjIzZTFhZjA4OWE4
MmRhY2RhNmEzNWVhNjgyOTEwZDcyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAgLTcxLDEwICs3MSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdHJlYW1FbmRlZFdpdGhFcnJvcihjb25zdCBBdG9taWNTdHJpbmcmIGVycm9yLCBF
eGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZl
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlZWtUb1RpbWUoY29uc3Qg
TWVkaWFUaW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihSZWY8TWVk
aWFTb3VyY2VQcml2YXRlPiYmKSBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRpb24oKSBj
b25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBi
dWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRp
YVRpbWUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgYXR0YWNoVG9FbGVtZW50KEhUTUxNZWRpYUVs
ZW1lbnQqKTsKICAgICB2b2lkIGNsb3NlKCk7CkBAIC0xMDAsMTMgKzEwMCwxMyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgaXNUeXBlU3VwcG9ydGVkKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAK
ICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigp
OyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7
IGRlcmVmKCk7IH0KLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IC8vIFVSTFJlZ2lzdHJhYmxlIGludGVyZmFjZQotICAgIHZpcnR1YWwgVVJMUmVnaXN0cnkmIHJl
Z2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU291cmNlUHJpdmF0ZUNs
aWVudD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVu
dD46OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9NZWRpYVNvdXJjZVJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlUmVnaXN0cnkuaAppbmRleCAzMTU3MjIxNWJmMDI1NDA2OWVlMTgwNzNh
NGMxMGQ2MTg4M2E3MmQ1Li4zODI2YmNjNWU5YjY1ODhhMDljYzEzZTgxMzk3ZTFkNjdmMWM3NTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlUmVnaXN0cnkuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IE1lZGlhU291cmNlUmVnaXN0cnkmIHJlZ2lzdHJ5KCk7CiAKICAgICAvLyBSZWdpc3RlcnMgYSBi
bG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIHNwZWNpZmllZCBtZWRpYSBzb3VyY2UuCi0gICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVn
aXN0cmFibGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25z
dCBVUkwmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29u
c3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlclVSTChTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFVSTCYsIFVSTFJlZ2lzdHJhYmxlKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlOworICAgIFVSTFJlZ2lzdHJhYmxl
KiBsb29rdXAoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
TWVkaWFTb3VyY2VSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggNTU1YTMxZjU0NjA0MWJiYjBhNWJhZDNiYzk1
ZGZhYzA5YmQzYjE2Zi4uY2IwY2RmZTllNjA0OGY2YTY4Y2U0MjUzOTE5MzYxMWNkMzE3YjhlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHVibGljOgogICAgIGJvb2wgYWN0aXZlKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmU7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFy
Z2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU291cmNlQnVmZmVy
RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJj
ZUJ1ZmZlcj46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlcj46OmRlcmVm
OwpAQCAtMTMwLDggKzEzMCw4IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJl
ZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9
CiAKIHByaXZhdGU6CiAgICAgU291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYm
LCBNZWRpYVNvdXJjZSopOwpAQCAtMTQyLDI5ICsxNDIsMjkgQEAgcHJpdmF0ZToKICAgICBib29s
IGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZURpZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3QgV1RGOjpB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZSos
IGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRl
KiwgUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBz
b3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlk
ZW8oY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhT
b3VyY2VCdWZmZXJQcml2YXRlKiwgQXRvbWljU3RyaW5nIHRyYWNrSUQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgTWVkaWFUaW1lIHNvdXJjZUJ1ZmZlclByaXZhdGVGYXN0U2Vla1RpbWVGb3JNZWRp
YVRpbWUoU291cmNlQnVmZmVyUHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hv
bGQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5k
Q29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZSosIEFwcGVuZFJlc3VsdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IoU291cmNlQnVmZmVyUHJpdmF0ZSosIGludCBlcnJvckNvZGUpIG92ZXJyaWRlOworICAgIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZEVuZFN0cmVhbShTb3VyY2VCdWZmZXJQcml2YXRlKiwg
Y29uc3QgV1RGOjpBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFNvdXJjZUJ1ZmZlclByaXZh
dGUqLCBjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBQ
YXNzUmVmUHRyPE1lZGlhU2FtcGxlPikgb3ZlcnJpZGU7CisgICAgYm9vbCBzb3VyY2VCdWZmZXJQ
cml2YXRlSGFzQXVkaW8oY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKGNvbnN0IFNvdXJjZUJ1ZmZl
clByaXZhdGUqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRCZWNvbWVSZWFkeUZvck1vcmVTYW1wbGVzKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBBdG9taWNT
dHJpbmcgdHJhY2tJRCkgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIHNvdXJjZUJ1ZmZlclByaXZh
dGVGYXN0U2Vla1RpbWVGb3JNZWRpYVRpbWUoU291cmNlQnVmZmVyUHJpdmF0ZSosIGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlh
VGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpIG92ZXJyaWRlOworICAgIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBBcHBlbmRSZXN1bHQp
IG92ZXJyaWRlOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJp
bmdFcnJvcihTb3VyY2VCdWZmZXJQcml2YXRlKiwgaW50IGVycm9yQ29kZSkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGF1ZGlvVHJhY2tFbmFi
bGVkQ2hhbmdlZChBdWRpb1RyYWNrKikgb3ZlcnJpZGU7CisgICAgdm9pZCBhdWRpb1RyYWNrRW5h
YmxlZENoYW5nZWQoQXVkaW9UcmFjayopIG92ZXJyaWRlOwogCiAgICAgLy8gVmlkZW9UcmFja0Ns
aWVudAotICAgIHZpcnR1YWwgdm9pZCB2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJh
Y2sqKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9U
cmFjayopIG92ZXJyaWRlOwogCiAgICAgLy8gVGV4dFRyYWNrQ2xpZW50Ci0gICAgdmlydHVhbCB2
b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tD
dWVMaXN0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMo
VGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tD
dWU+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRU
cmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0
VHJhY2tLaW5kQ2hhbmdlZChUZXh0VHJhY2sqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRUcmFj
a01vZGVDaGFuZ2VkKFRleHRUcmFjayopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFRyYWNrQWRk
Q3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kikgb3ZlcnJpZGU7CisgICAg
dm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxp
c3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNz
UmVmUHRyPFRleHRUcmFja0N1ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFRyYWNrUmVtb3Zl
Q3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgb3ZlcnJpZGU7CiAKICAg
ICBzdGF0aWMgY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGRlY29kZUVycm9yKCk7CiAgICAgc3Rh
dGljIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBuZXR3b3JrRXJyb3IoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyTGlzdC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKaW5k
ZXggMTUwZjMzOTdlM2M4NzU3YjFiN2E5ZDlkN2RjZGY1N2UwODdiMTE3MC4uNDczYjg2ZTg4MGZk
M2QwNmU5MGYwNDFmYWVhMmE3MWMwMzIyYWRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXJMaXN0LmgKQEAgLTY0LDggKzY0LDgg
QEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyPj46Oml0ZXJhdG9yIGVu
ZCgpIHsgcmV0dXJuIG1fbGlzdC5lbmQoKTsgfQogCiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJm
YWNlCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckxpc3RFdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckxpc3RFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25D
b250ZXh0OyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlckxpc3Q+OjpyZWY7
CiAgICAgdXNpbmcgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXJMaXN0Pjo6ZGVyZWY7CkBAIC03NSw4
ICs3NSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7
IGRlcmVmKCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsg
fQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwogICAg
IEdlbmVyaWNFdmVudFF1ZXVlIG1fYXN5bmNFdmVudFF1ZXVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzSW1wbC5oCmlu
ZGV4IDIzMTg4N2NmYTRjZDczYjA2M2JhZWUwYzMxNDY3YWU5MzlhNDU4N2IuLmY1MzcyOGRlMTRm
NzFlODJjZDM5YTMyN2QxMzc5YWEyMzlkMjRhZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50c0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHNJbXBsLmgKQEAgLTQ5
LDExICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVkaWFDb25zdHJhaW50c0ltcGwo
KTsKICAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFyeSYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGdldE1hbmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldE9wdGlvbmFsQ29uc3RyYWludHMo
VmVjdG9yPE1lZGlhQ29uc3RyYWludD4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGdldE1h
bmRhdG9yeUNvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFpbnQ+JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXRPcHRpb25hbENvbnN0cmFpbnRzKFZlY3RvcjxNZWRpYUNvbnN0cmFp
bnQ+JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWFuZGF0b3J5Q29u
c3RyYWludFZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVlKGNvbnN0
IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBn
ZXRNYW5kYXRvcnlDb25zdHJhaW50VmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIHZh
bHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGdldE9wdGlvbmFsQ29uc3RyYWludFZhbHVl
KGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiB2YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgTWVkaWFDb25zdHJhaW50c0ltcGwoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRQZWVy
Q29ubmVjdGlvbi5oCmluZGV4IGZiNmY0ZjFjNDkxNzc5ZWM1Mjk3MDZjZDYzMGQ4Nzg5MDhkNWIx
MjcuLmY2ZDI1NmExMDIxMmVjNjQwMzZiMjYxZDg4YzljNjVjNTZkZmY0M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFBlZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVu
ZHBvaW50UGVlckNvbm5lY3Rpb24uaApAQCAtNzUsMTAgKzc1LDEwIEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICAvLyBNZWRpYUVuZHBvaW50Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGdvdER0
bHNGaW5nZXJwcmludChjb25zdCBTdHJpbmcmIGZpbmdlcnByaW50LCBjb25zdCBTdHJpbmcmIGZp
bmdlcnByaW50RnVuY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnb3RJY2VDYW5k
aWRhdGUodW5zaWduZWQgbWRlc2NJbmRleCwgUmVmUHRyPEljZUNhbmRpZGF0ZT4mJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvbmVHYXRoZXJpbmdDYW5kaWRhdGVzKHVuc2lnbmVkIG1k
ZXNjSW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnb3RSZW1vdGVTb3VyY2UodW5z
aWduZWQgbWRlc2NJbmRleCwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgZ290RHRsc0ZpbmdlcnByaW50KGNvbnN0IFN0cmluZyYgZmluZ2VycHJpbnQs
IGNvbnN0IFN0cmluZyYgZmluZ2VycHJpbnRGdW5jdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBn
b3RJY2VDYW5kaWRhdGUodW5zaWduZWQgbWRlc2NJbmRleCwgUmVmUHRyPEljZUNhbmRpZGF0ZT4m
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkb25lR2F0aGVyaW5nQ2FuZGlkYXRlcyh1bnNpZ25lZCBt
ZGVzY0luZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGdvdFJlbW90ZVNvdXJjZSh1bnNpZ25lZCBt
ZGVzY0luZGV4LCBSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJikgb3ZlcnJpZGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggYzY2NGE2OGNiZjNmYWU0YzFhODEyMzllYzc1
MjA2NTgwZWIxNThmNS4uYjQ4MzVlYmRiYTM4YTIyYjUxZmUxM2VhY2I5ODM1OGQ5NDEzMjRiNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0u
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0
cmVhbT46OmRlcmVmOwogCiAgICAgLy8gVVJMUmVnaXN0cmFibGUKLSAgICB2aXJ0dWFsIFVSTFJl
Z2lzdHJ5JiByZWdpc3RyeSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFVSTFJlZ2lzdHJ5JiByZWdp
c3RyeSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciop
OwogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKQEAgLTkyLDIyICs5MiwyMiBA
QCBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJl
ZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+JiYpOwogCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZpbmFsOwogCiBwcml2
YXRlOgogICAgIGVudW0gY2xhc3MgU3RyZWFtTW9kaWZpZXIgeyBEb21BUEksIFBsYXRmb3JtIH07
CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNr
OjpPYnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCB0cmFja0RpZEVuZCgpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZvaWQgdHJhY2tEaWRFbmQoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIC8vIE1lZGlh
U3RyZWFtUHJpdmF0ZTo6T2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgYWN0aXZlU3RhdHVzQ2hh
bmdlZCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRUcmFjayhNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZvaWQgYWN0aXZlU3RhdHVzQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQg
ZGlkQWRkVHJhY2soTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIGRpZFJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJikgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICBib29sIGludGVybmFsQWRkVHJhY2soUmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIFN0cmVhbU1vZGlmaWVyKTsKICAgICBib29sIGludGVybmFsUmVtb3ZlVHJhY2soUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+JiYsIFN0cmVhbU1vZGlmaWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgK
aW5kZXggMzYwNDYxMGQ2ODk1MTYxNzUxMTFkY2Y1NDk1ZGU0MmYwMjY2NGY4Ny4uZTZmOTViYTM0
ZDU1NjRjNmU5MWZhMGE3OTg4ZGU2NTRiNmUxMWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmgKQEAgLTQ3
LDEwICs0NywxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1lZGlhU3RyZWFtUmVnaXN0cnkmIHNo
YXJlZCgpOwogCiAgICAgLy8gUmVnaXN0ZXJzIGEgYmxvYiBVUkwgcmVmZXJyaW5nIHRvIHRoZSBz
cGVjaWZpZWQgc3RyZWFtIGRhdGEuCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJhYmxlKiBsb29rdXAoY29uc3QgU3RyaW5nJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVVJMUmVnaXN0cmFibGUqIGxvb2t1cChjb25zdCBTdHJpbmcmKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJTdHJlYW0oTWVkaWFTdHJlYW0mKTsK
ICAgICB2b2lkIHVucmVnaXN0ZXJTdHJlYW0oTWVkaWFTdHJlYW0mKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXgg
ZWRiNDk1YjJjNWJhZjcxNTk1MDY0MjI3OGQ2NGU5NTQ4YTM4NWQwMi4uNjc5ZTY3NzU1YWM1MzJi
MzYyNmE5MTBjNjIwM2FkM2NiMmJhN2IxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTkyLDggKzkyLDggQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAogICAgIC8vIEV2
ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIE1lZGlhU3RyZWFtVHJhY2tF
dmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gTWVkaWFTdHJlYW1UcmFja0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNr
Pjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OmRlcmVmOwpA
QCAtMTEwLDggKzExMCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICAvLyBFdmVudFRhcmdl
dAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVm
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFs
IHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7
IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBk
ZXJlZigpOyB9CiAKICAgICAvLyBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6T2JzZXJ2ZXIKICAg
ICB2b2lkIHRyYWNrRW5kZWQoTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tFdmVudC5oCmluZGV4IGNkMjI4NDVkYWY5ZGY3ZDhjNjdkZTM1M2MzM2NiZmQ2OGM1
N2Y0MDIuLmRjY2NjMzk2ZWJjZDJhODJlNGI3MmE3MzJmNDBlODM1NzY2YzkyMTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrRXZlbnQuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW1U
cmFjayogdHJhY2soKSBjb25zdDsKIAogICAgIC8vIEV2ZW50Ci0gICAgdmlydHVhbCBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJm
YWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTWVk
aWFTdHJlYW1UcmFja0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJi
bGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCmlu
ZGV4IGYwODBhOWYxN2VjZmJkMTNhYmNkODBmNDcwNWE0MDVjY2M0MTdiNjUuLjJlMmM4ODJjMDM4
YWNmOWJlMmE3YjY3MGNmYzYxOWRmYTUzNzA5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5oCkBAIC01Nyw4ICs1Nyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGluc2VydERUTUYoY29uc3QgU3RyaW5nJiB0b25lcywgbG9uZyBkdXJh
dGlvbiwgbG9uZyBpbnRlclRvbmVHYXAsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJUQ0RUTUZTZW5kZXJFdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNl
IGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUlRDRFRNRlNl
bmRlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBY3Rp
dmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAgdXNpbmcgUmVm
Q291bnRlZDxSVENEVE1GU2VuZGVyPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRDRFRN
RlNlbmRlcj46OmRlcmVmOwpAQCAtNzUsMTEgKzc1LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
Y2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoKTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAogICAgIC8vIFJUQ0RUTUZTZW5kZXJI
YW5kbGVyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBsYXlUb25lKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUGxheVRvbmUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsKICAgICBsb25nIG1fZHVy
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q0RhdGFDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0Rh
dGFDaGFubmVsLmgKaW5kZXggZWE1ZjQ3MWFlOWE3ZTA0YWFiYzY2OGVmMDFjYWE0NDZmODdkZThl
Zi4uNDNkNDgzZGRlOGFiMGRmYzBkMjZkMTJjOWIwMmY3YWU2MmU0ZjIxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuaApAQCAt
NzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wKCk7CiAKICAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSVENEYXRhQ2hhbm5lbEV2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUlRDRGF0YUNoYW5uZWxFdmVudFRhcmdldElu
dGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFJUQ0RhdGFDaGFubmVsPjo6cmVmOwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ8UlRDRGF0YUNoYW5uZWw+OjpkZXJlZjsKQEAgLTg3LDE2ICs4Nywx
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKCk7CiAKICAg
ICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJl
ZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9
CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CiAKICAgICAvLyBSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSZWFkeVN0YXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVN0cmluZ0RhdGEoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IGNoYXIqLCBzaXplX3QpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RFcnJvcigpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkQ2hhbmdlUmVhZHlTdGF0ZShSZWFkeVN0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVJhd0RhdGEoY29uc3QgY2hhciosIHNpemVfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRE
ZXRlY3RFcnJvcigpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFu
bmVsSGFuZGxlcj4gbV9oYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENPZmZlckFuc3dlck9wdGlvbnMuaAppbmRleCA5Yjc0ZTA0
YjVjY2E0NWMwNzkyYmI3MGMyYzhjMGM1Zjk4ZDg2NDExLi44NzNlNmNkNGVkNDY5OTFkNWQ2MTBm
MGU0MjdlODBjMjU3Y2M4ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ09mZmVyQW5zd2VyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDT2ZmZXJBbnN3ZXJPcHRpb25zLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaWNlUmVzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faWNlUmVz
dGFydDsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IERp
Y3Rpb25hcnkmKSBvdmVycmlkZTsKKyAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlvbmFy
eSYpIG92ZXJyaWRlOwogICAgIFJUQ09mZmVyT3B0aW9ucygpOwogCiAgICAgaW50NjRfdCBtX29m
ZmVyVG9SZWNlaXZlVmlkZW87CkBAIC03Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmUHRyPFJUQ0Fuc3dlck9wdGlvbnM+IGNyZWF0ZShjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0
aW9uQ29kZSYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0
IERpY3Rpb25hcnkmKSBvdmVycmlkZTsKKyAgICBib29sIGluaXRpYWxpemUoY29uc3QgRGljdGlv
bmFyeSYpIG92ZXJyaWRlOwogICAgIFJUQ0Fuc3dlck9wdGlvbnMoKSB7IH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24uaAppbmRleCBjMjdiOWM0NDVmZWQ0YzVmOWJmN2JlMWIxMjQ1MDkxZmM1ZjIxNGQ3Li5kOWJj
YzM4NTEwMGU0MjhhY2UyMDdmN2MxYjhkMWU3YmJhOTg3NDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5oCkBAIC0x
MDEsOCArMTAxLDggQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBFdmVudFRhcmdldEludGVy
ZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJUQ1Bl
ZXJDb25uZWN0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB1
c2luZyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPjo6cmVmOwogICAgIHVzaW5nIFJlZkNv
dW50ZWQ8UlRDUGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKQEAgLTExMSw4ICsxMTEsOCBAQCBwcml2
YXRlOgogICAgIFJUQ1BlZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWZQ
dHI8UlRDQ29uZmlndXJhdGlvbj4mJiwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVm
KCk7IH0KIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0
c1Jlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRz
UmVzcG9uc2UuaAppbmRleCAxMjM1NzgzYTUyOWRhOWQ3ODUwMGZmZWFlZTJkMDIzOTQyZWJlNzI3
Li4yYTcyYmQ2M2UzYzc3MjRkZWU4YWZhN2M2ZmJlZjJhOGIzY2UzMWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaApA
QCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiBuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3Vw
cG9ydGVkUHJvcGVydHlOYW1lcygpOwogCi0gICAgdmlydHVhbCBzaXplX3QgYWRkUmVwb3J0KFN0
cmluZyBpZCwgU3RyaW5nIHR5cGUsIGRvdWJsZSB0aW1lc3RhbXApIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBhZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9ydCwgU3RyaW5nIG5hbWUsIFN0cmlu
ZyB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgc2l6ZV90IGFkZFJlcG9ydChTdHJpbmcgaWQsIFN0cmlu
ZyB0eXBlLCBkb3VibGUgdGltZXN0YW1wKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN0YXRpc3Rp
YyhzaXplX3QgcmVwb3J0LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBSVENTdGF0c1Jlc3BvbnNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uQ2hlY2su
aAppbmRleCA0NzY3MTVlMmQ0MGUwY2JiOTRjMjQxNjQ5NTM1NWQ4NmU0OTc4YjE2Li41MjY0ZjE0
NjM0NTgwMzI5MjI3MmQ5MjlhMjA4MjEzOTAzNmQyODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25DaGVjay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBVc2VyTWVkaWFQZXJtaXNzaW9u
Q2hlY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFVzZXJNZWRpYVBlcm1pc3Npb25DaGVja0Ns
aWVudCYpOwogCiAgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKLSAgICB2aXJ0dWFs
IHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY29udGV4
dERlc3Ryb3llZCgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgVXNlck1lZGlhUGVybWlzc2lvbkNo
ZWNrQ2xpZW50KiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9tZWRpYURldmljZUlkZW50aWZpZXJI
YXNoU2FsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
VXNlck1lZGlhUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmgKaW5kZXggOTc4OGYzNWNiMjliMjQ3MWFmYWI0YTg0YmRhMjg4MmM0
M2JjNjExMC4uNGY2MDlmOGI1YTkyMjliMWFjOGVhNTIyZDJkNmViNGIxNjY4OGZiNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1
ZXN0LmgKQEAgLTc3LDE0ICs3NywxNCBAQCBwcml2YXRlOgogICAgIFVzZXJNZWRpYVJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFVzZXJNZWRpYUNvbnRyb2xsZXIqLCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGF1ZGlvQ29uc3RyYWludHMsIFBhc3NSZWZQdHI8TWVkaWFDb25z
dHJhaW50cz4gdmlkZW9Db25zdHJhaW50cywgTWVkaWFEZXZpY2VzOjpQcm9taXNlJiYpOwogCiAg
ICAgLy8gTWVkaWFTdHJlYW1DcmVhdGlvbkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBjb25zdHJh
aW50c1ZhbGlkYXRlZChjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYg
YXVkaW9UcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+JiB2
aWRlb1RyYWNrcykgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnN0cmFpbnRz
SW52YWxpZChjb25zdCBTdHJpbmcmIGNvbnN0cmFpbnROYW1lKSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2
YXRlPikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvQ3JlYXRlU3Ry
ZWFtV2l0aENvbnN0cmFpbnRzRXJyb3IoY29uc3QgU3RyaW5nJiBjb25zdHJhaW50TmFtZSkgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvQ3JlYXRlU3RyZWFtV2l0aFBl
cm1pc3Npb25FcnJvcigpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY29uc3RyYWludHNWYWxp
ZGF0ZWQoY29uc3QgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlhU291cmNlPj4mIGF1ZGlvVHJh
Y2tzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiYgdmlkZW9UcmFj
a3MpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY29uc3RyYWludHNJbnZhbGlkKGNvbnN0IFN0
cmluZyYgY29uc3RyYWludE5hbWUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkQ3JlYXRl
U3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2YXRlPikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBmYWlsZWRUb0NyZWF0ZVN0cmVhbVdpdGhDb25zdHJhaW50c0Vycm9yKGNvbnN0IFN0
cmluZyYgY29uc3RyYWludE5hbWUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZmFpbGVkVG9D
cmVhdGVTdHJlYW1XaXRoUGVybWlzc2lvbkVycm9yKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICAv
LyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVz
dHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3Zl
cnJpZGUgZmluYWw7CiAgICAgCiAgICAgUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+IG1fYXVkaW9D
b25zdHJhaW50czsKICAgICBSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gbV92aWRlb0NvbnN0cmFp
bnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0
aW9ucy9ET01XaW5kb3dOb3RpZmljYXRpb25zLmgKaW5kZXggY2NjNzY4ZDQ1ZWY4YzFjOTdlNzgy
M2E0MmUxOWU3ZjJlNzdhNGRmNi4uMDYwNTQyNDBmMzViNTEwOTIwNGQ1ZmM2YzA0MjJjY2RiOTY1
NTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL0RP
TVdpbmRvd05vdGlmaWNhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvRE9NV2luZG93Tm90aWZpY2F0aW9ucy5oCkBAIC00NiwxMSArNDYsMTEgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBOb3RpZmljYXRpb25DZW50ZXIqIHdlYmtpdE5vdGlmaWNhdGlvbnMo
RE9NV2luZG93Jik7CiAgICAgc3RhdGljIERPTVdpbmRvd05vdGlmaWNhdGlvbnMqIGZyb20oRE9N
V2luZG93Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29ubmVjdEZyYW1lRnJv
bURvY3VtZW50U3VzcGVuc2lvbihGcmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJbkZyYW1lKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvckRvY3VtZW50U3VzcGVuc2lvbigpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKEZyYW1lKikg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpIG92
ZXJyaWRlOworICAgIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIE5vdGlmaWNhdGlvbkNlbnRlciogd2Via2l0Tm90aWZpY2F0
aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oCmluZGV4IDNjNGQ0NmIzMWM4ZDA0ZDc0ZjI3NzU1MGZiMWFkZjM4YTIyMmE4
YTEuLmU3NmJkMjU3MmYyMDk3YmRiN2I2NGZiMmY5MzNhMWQwYTk4YWNlOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKQEAg
LTExMSw4ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxOb3RpZmljYXRp
b24+OjpkZXJlZjsKIAogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTm90aWZpY2F0aW9uRXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICB2b2lkIHN0b3BMb2FkaW5nSWNvbigpOwogCkBAIC0x
NDMsOCArMTQzLDggQEAgcHJpdmF0ZToKICAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1
c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0IEFQSS4KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAg
ICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAgICAgdm9pZCBzdGFydExv
YWRpbmdJY29uKCk7CiAgICAgdm9pZCBmaW5pc2hMb2FkaW5nSWNvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaAppbmRleCA5YTk3MmFhZmYxZjIxMDA4MTVkZGVhZWRjNTM4MjJhZjhhYzQ3YjE5Li44
MjI3MWUxNzEwNjdmNzY4YmFiMjgzZTc2M2E2ZTI3YzM0ZDQxYTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaApAQCAtNTAsMTEgKzUwLDExIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxQbHVnaW5SZXBsYWNlbWVudD4gY3JlYXRlKEhUTUxQbHVnSW5FbGVtZW50JiwgY29uc3QgVmVj
dG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVl
cyk7CiAgICAgflF1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaW5zdGFsbFJlcGxhY2VtZW50KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2NyaXB0
T2JqZWN0OyB9CisgICAgYm9vbCBpbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCopIG92ZXJy
aWRlOworICAgIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2NyaXB0T2JqZWN0OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVy
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1l
bnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJy
aWRlOworICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9t
ZWRpYUVsZW1lbnQ7IH0KKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEhUTUxWaWRlb0VsZW1lbnQqIHBh
cmVudEVsZW1lbnQoKSB7IHJldHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50LmgKaW5kZXggYWQ5ZjAzOTI3ZmFmY2MxYzBjNTVmYWNmYjFiNjdhOTJjYjNmMTQ4OC4u
YzY4ZTA0OTlkNzgyNDdhMWVjYjA3ZmE2ZjJhMWUwYTRhYmFkM2E2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuaApAQCAtNTUsMTIgKzU1LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGx1Z2luUmVwbGFjZW1lbnQ+IGNyZWF0ZShIVE1MUGx1Z0luRWxlbWVudCYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpOwogCi0gICAgdmlydHVhbCBib29sIGluc3RhbGxSZXBsYWNlbWVudChTaGFkb3dSb290
Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBpbnN0YWxsUmVwbGFjZW1lbnQoU2hhZG93Um9vdCopIG92
ZXJyaWRlOwogICAgIAogICAgIFN0cmluZyB5b3VUdWJlVVJMKGNvbnN0IFN0cmluZyYgcmF3VVJM
KTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9lbWJlZFNoYWRvd0VsZW1lbnQ7IH0KLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoSFRNTFBsdWdJbkVsZW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgd2lsbENyZWF0ZVJlbmRlcmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9lbWJlZFNo
YWRvd0VsZW1lbnQ7IH0KKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKEhUTUxQbHVnSW5FbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKICAgICAKICAgICBIVE1MUGx1Z0luRWxlbWVu
dCogbV9wYXJlbnRFbGVtZW50OwogICAgIFJlZlB0cjxZb3VUdWJlRW1iZWRTaGFkb3dFbGVtZW50
PiBtX2VtYmVkU2hhZG93RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVl
Y2gvU3BlZWNoU3ludGhlc2lzLmgKaW5kZXggMGI3MThjZTY3ZjFmMTU5ZTUyYzMyMGEzZTk2N2Qz
NzYwNWIwNmY4Zi4uMjk0ODVlZGU0MzIwNmJiNjUzOTljMTZiOTI1M2ZhY2ExZmJiYmM5YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzLmgKQEAg
LTY1LDEzICs2NSwxMyBAQCBwcml2YXRlOgogICAgIFNwZWVjaFN5bnRoZXNpcygpOwogICAgIAog
ICAgIC8vIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXJDbGllbnQgb3ZlcnJpZGUgbWV0aG9kcy4K
LSAgICB2aXJ0dWFsIHZvaWQgdm9pY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZVNwZWFraW5n
KFBhc3NSZWZQdHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdW1lU3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Pikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFraW5nRXJyb3JPY2N1cnJlZChQYXNz
UmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGJvdW5kYXJ5RXZlbnRPY2N1cnJlZChQYXNzUmVmUHRyPFBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiwgU3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRl
eCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2b2ljZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFN0YXJ0U3BlYWtpbmcoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0
dGVyYW5jZT4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUGF1c2VTcGVha2luZyhQYXNzUmVmUHRy
PFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZXN1bWVTcGVha2luZyhQYXNzUmVmUHRyPFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaW5pc2hTcGVha2luZyhQYXNzUmVmUHRyPFBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzcGVh
a2luZ0Vycm9yT2NjdXJyZWQoUGFzc1JlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZT4pIG92ZXJyaWRlOworICAgIHZvaWQgYm91bmRhcnlFdmVudE9jY3VycmVkKFBhc3NSZWZQ
dHI8UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+LCBTcGVlY2hCb3VuZGFyeSwgdW5z
aWduZWQgY2hhckluZGV4KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RhcnRTcGVha2luZ0ltbWVk
aWF0ZWx5KFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSopOwogICAgIHZvaWQgaGFuZGxlU3BlYWtp
bmdDb21wbGV0ZWQoU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKiwgYm9vbCBlcnJvck9jY3VycmVk
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3lu
dGhlc2lzVXR0ZXJhbmNlLmgKaW5kZXggMTkwMTZkZmQ1MTMzMmNlMDYwY2QwZGFjNTIxZjgzOWE4
NzY4MTRmYS4uNGEyZDZhOGIzMWE1N2Q3YWEzMzUzM2UzYzVlZjYyY2U2NDViMTk5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPjo6ZGVyZWY7CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAgIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lz
VXR0ZXJhbmNlKiBwbGF0Zm9ybVV0dGVyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1V
dHRlcmFuY2UuZ2V0KCk7IH0KIApAQCAtNzYsOSArNzYsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0
cjxQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsK
ICAgICBSZWZQdHI8U3BlZWNoU3ludGhlc2lzVm9pY2U+IG1fdm9pY2U7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlRXZlbnRUYXJnZXRJbnRlcmZhY2VU
eXBlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJl
ZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2VFdmVudFRhcmdl
dEludGVyZmFjZVR5cGU7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBy
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsg
fQogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCmluZGV4IDY1NmUwMTY5M2FjNTI5YWI0NDRl
MTdiZGMzYWJlYWU4OWZhMDFjZTUuLmJjODMxNGNlMDExOGViYTkzOTkxYjAxMmQzOWI0N2RlZjFl
Njk1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5v
ZGUuaApAQCAtNDEsOCArNDEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QW5hbHlzZXJOb2Rl
KCk7CiAgICAgCiAgICAgLy8gQXVkaW9Ob2RlCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3Moc2l6
ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKIAogICAgIC8vIEphdmFzY3JpcHQgYmlu
ZGluZ3MKICAgICB1bnNpZ25lZCBmZnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbmFseXNlci5m
ZnRTaXplKCk7IH0KQEAgLTY0LDggKzY0LDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Qnl0ZVRp
bWVEb21haW5EYXRhKEpTQzo6VWludDhBcnJheSogYXJyYXkpIHsgbV9hbmFseXNlci5nZXRCeXRl
VGltZURvbWFpbkRhdGEoYXJyYXkpOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBkb3VibGUg
dGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91Ymxl
IHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRl
bmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAogICAgIEFuYWx5c2VyTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5oCmlu
ZGV4IDgxZDVlOTc1NWQ4MDNiOWMyZDYzZjI4MjJkNTQ4OTIwYWY4MTg0NjEuLmU5ZTY2YzBmOTc2
NTJkYTI4ODY2NzNhMWVlMjc2YjM0MzBmMGZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmgKQEAgLTM3
LDEwICszNywxMCBAQCBwdWJsaWM6CiAgICAgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9D
b250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgb3V0cHV0Q2hhbm5lbENvdW50KTsK
IAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBm
cmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEF1ZGlv
Tm9kZSosIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QodW5zaWduZWQg
b3V0cHV0SW5kZXgsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb25uZWN0KEF1ZGlvTm9kZSosIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1bnNpZ25l
ZCBpbnB1dEluZGV4LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25u
ZWN0KHVuc2lnbmVkIG91dHB1dEluZGV4LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUHVsbFN0YXR1cygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29y
Tm9kZS5oCmluZGV4IGZjMjVjMDMwNzM2ZDQ0OGM2MWY2YWY5NTM2N2VlZjczZGM3NDI2MjguLmY5
NTVjZTc1YjkwZTY4ZjgxNTgwNThlNDZmNTQ2ZmM0MzUwZjkwMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2Rl
LmgKQEAgLTQzLDIxICs0MywyMSBAQCBwdWJsaWM6CiAgICAgQXVkaW9CYXNpY1Byb2Nlc3Nvck5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICAvLyBBdWRpb05vZGUK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxp
emUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
b3ZlcnJpZGU7CisgICAgdm9pZCBwdWxsSW5wdXRzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemUo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwogCiAgICAgLy8g
Q2FsbGVkIGluIHRoZSBtYWluIHRocmVhZCB3aGVuIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9y
IHRoZSBpbnB1dCBtYXkgaGF2ZSBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdm9pZCBjaGVja051bWJl
ck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopIG92ZXJyaWRlOworICAgIHZvaWQg
Y2hlY2tOdW1iZXJPZkNoYW5uZWxzRm9ySW5wdXQoQXVkaW9Ob2RlSW5wdXQqKSBvdmVycmlkZTsK
IAogICAgIC8vIFJldHVybnMgdGhlIG51bWJlciBvZiBjaGFubmVscyBmb3IgYm90aCB0aGUgaW5w
dXQgYW5kIHRoZSBvdXRwdXQuCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscygpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBsYXRlbmN5VGltZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQXVkaW9Qcm9jZXNzb3IqIHByb2Nlc3NvcigpIHsgcmV0
dXJuIG1fcHJvY2Vzc29yLmdldCgpOyB9CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvUHJvY2Vz
c29yPiBtX3Byb2Nlc3NvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5oCmluZGV4IDRiMDI0MDI5ODJmOWNkNTBmNWE4
OTY4NGVmMWEyNzBkYWJjNGIzOTMuLjg4MzZlYzU4ZDcyNjA3MjNkMDAzNDI2MmI1MjhmNGVmNWIy
ODZmZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9C
dWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtNTAsOCArNTAsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+QXVkaW9CdWZmZXJTb3VyY2VOb2RlKCk7CiAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2
aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwog
CiAgICAgLy8gc2V0QnVmZmVyKCkgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4gIFRoaXMg
aXMgdGhlIGJ1ZmZlciB3ZSB1c2UgZm9yIHBsYXliYWNrLgogICAgIC8vIHJldHVybnMgdHJ1ZSBv
biBzdWNjZXNzLgpAQCAtOTYsMTYgKzk2LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUGFu
bmVyTm9kZSgpOwogCiAgICAgLy8gSWYgd2UgYXJlIG5vIGxvbmdlciBwbGF5aW5nLCBwcm9wb2dh
dGUgc2lsZW5jZSBhaGVhZCB0byBkb3duc3RyZWFtIG5vZGVzLgotICAgIHZpcnR1YWwgYm9vbCBw
cm9wYWdhdGVzU2lsZW5jZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJvcGFnYXRlc1Np
bGVuY2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZQotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2goKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaCgp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAotICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1l
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGxhdGVu
Y3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSB0YWlsVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAKICAgICBlbnVtIEJ1ZmZlclBsYXliYWNr
TW9kZSB7CiAgICAgICAgIEVudGlyZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5oCmluZGV4IGFiYTM2MTU3MzdiMzA0YjYxMzlkOWVjMGMxNThkOTdh
N2I3M2VlZDEuLmI2M2I0M2QyMTEwNTU1MGFlMmVhY2M2MDc5OTlkOGJmMTY4NzkyMzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaApAQCAtMjQw
LDggKzI0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlv
bihBdWRpb1N1bW1pbmdKdW5jdGlvbiopOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gQXVkaW9Db250ZXh0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBl
OyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBBdWRp
b0NvbnRleHRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAK
ICAgICAvLyBSZWNvbmNpbGUgcmVmL2RlcmVmIHdoaWNoIGFyZSBkZWZpbmVkIGJvdGggaW4gVGhy
ZWFkU2FmZVJlZkNvdW50ZWQgYW5kIEV2ZW50VGFyZ2V0LgogICAgIHVzaW5nIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEF1ZGlvQ29udGV4dD46OnJlZjsKQEAgLTI5MywxMSArMjkzLDExIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHNjaGVkdWxlTm9kZURlbGV0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgbWVkaWFDYW5TdGFydCgpIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFDYW5TdGFydCgpIG92
ZXJyaWRlOwogCiAgICAgLy8gTWVkaWFQcm9kdWNlcgotICAgIHZpcnR1YWwgTWVkaWFQcm9kdWNl
cjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVBy
b2R1Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAogICAgIC8vIFRoZSBj
b250ZXh0IGl0c2VsZiBrZWVwcyBhIHJlZmVyZW5jZSB0byBhbGwgc291cmNlIG5vZGVzLiAgVGhl
IHNvdXJjZSBub2RlcywgdGhlbiByZWZlcmVuY2UgYWxsIG5vZGVzIHRoZXkncmUgY29ubmVjdGVk
IHRvLgogICAgIC8vIEluIHR1cm4sIHRoZXNlIG5vZGVzIHJlZmVyZW5jZSBhbGwgbm9kZXMgdGhl
eSdyZSBjb25uZWN0ZWQgdG8uICBBbGwgbm9kZXMgYXJlIHVsdGltYXRlbHkgY29ubmVjdGVkIHRv
IHRoZSBBdWRpb0Rlc3RpbmF0aW9uTm9kZS4KQEAgLTMyNSw4ICszMjUsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0cmljdGlvbihQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdl
dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVy
cmlkZSB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQgaGFuZGxlRGlydHlBdWRpb1N1bW1pbmdKdW5j
dGlvbnMoKTsKICAgICB2b2lkIGhhbmRsZURpcnR5QXVkaW9Ob2RlT3V0cHV0cygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCmluZGV4IDJjN2I0NWFmYmVkYjgxZjI4NmJlMGVjMTdjODJiMzIwYmYzYmNjNTYuLmRlZWY3
N2QwOTkyNmY3NTRjMmY0MTY3MDA4NDcxYTIwZWI1NGE2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQy
LDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QXVkaW9EZXN0aW5hdGlvbk5vZGUo
KTsKICAgICAKICAgICAvLyBBdWRpb05vZGUgICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhz
aXplX3QpIG92ZXJyaWRlIHsgfTsgLy8gd2UncmUgcHVsbGVkIGJ5IGhhcmR3YXJlIHNvIHRoaXMg
aXMgbmV2ZXIgY2FsbGVkCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkgb3ZlcnJpZGUgeyBtX2N1
cnJlbnRTYW1wbGVGcmFtZSA9IDA7IH0KKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90KSBvdmVycmlk
ZSB7IH07IC8vIHdlJ3JlIHB1bGxlZCBieSBoYXJkd2FyZSBzbyB0aGlzIGlzIG5ldmVyIGNhbGxl
ZAorICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZSB7IG1fY3VycmVudFNhbXBsZUZyYW1lID0gMDsg
fQogICAgIAogICAgIC8vIFRoZSBhdWRpbyBoYXJkd2FyZSBjYWxscyByZW5kZXIoKSB0byBnZXQg
dGhlIG5leHQgcmVuZGVyIHF1YW50dW0gb2YgYXVkaW8gaW50byBkZXN0aW5hdGlvbkJ1cy4KICAg
ICAvLyBJdCB3aWxsIG9wdGlvbmFsbHkgZ2l2ZSB1cyBsb2NhbC9saXZlIGF1ZGlvIGlucHV0IGlu
IHNvdXJjZUJ1cyAoaWYgaXQncyBub3QgMCkuCi0gICAgdmlydHVhbCB2b2lkIHJlbmRlcihBdWRp
b0J1cyogc291cmNlQnVzLCBBdWRpb0J1cyogZGVzdGluYXRpb25CdXMsIHNpemVfdCBudW1iZXJP
ZkZyYW1lcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXIoQXVkaW9CdXMqIHNvdXJjZUJ1cywg
QXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMpIG92ZXJyaWRl
OwogCiAgICAgc2l6ZV90IGN1cnJlbnRTYW1wbGVGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
cmVudFNhbXBsZUZyYW1lOyB9CiAgICAgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3QgeyByZXR1
cm4gY3VycmVudFNhbXBsZUZyYW1lKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHNhbXBsZVJhdGUo
KSk7IH0KQEAgLTYzLDEzICs2MywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
KHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGF5aW5n
KCkgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpc1BsYXlpbmdEaWRDaGFuZ2UoKSBvdmVycmlkZTsKICAg
ICBib29sIGlzUGxheWluZ0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9pc0VmZmVjdGl2ZWx5UGxh
eWluZ0F1ZGlvOyB9CiAgICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0ZWQgPSBt
dXRlZDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAogICAgIHZvaWQgc2V0SXNTaWxlbnQoYm9vbCk7CiAg
ICAgdm9pZCB1cGRhdGVJc0VmZmVjdGl2ZWx5UGxheWluZ0F1ZGlvKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaAppbmRleCA5MzVhOGU1MzlkZDcwMjVhOTky
MGExOGJjZGI1MDc5MTZkNWE1NmI4Li5lNWRkYWU0NmIzMDY3MTNmNDk1Njk5NTNmNjEwZWI2MzJm
NjE4MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
QEAgLTE3OSw4ICsxNzksOCBAQCBwdWJsaWM6CiAgICAgQXVkaW9CdXM6OkNoYW5uZWxJbnRlcnBy
ZXRhdGlvbiBpbnRlcm5hbENoYW5uZWxJbnRlcnByZXRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
Y2hhbm5lbEludGVycHJldGF0aW9uOyB9CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBFdmVudFRhcmdldEludGVyZmFj
ZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKIAogcHJvdGVjdGVkOgogICAgIC8vIElucHV0cyBhbmQgb3V0cHV0cyBtdXN0IGJlIGNyZWF0
ZWQgYmVmb3JlIHRoZSBBdWRpb05vZGUgaXMgaW5pdGlhbGl6ZWQuCkBAIC0yMTgsOCArMjE4LDgg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgaW50IHNfbm9kZUNvdW50W05vZGVUeXBlRW5kXTsKICNl
bmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJl
ZigpOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAogcHJvdGVj
dGVkOgogICAgIHVuc2lnbmVkIG1fY2hhbm5lbENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVJbnB1dC5oCmluZGV4IDVhZmNkZWQzNzk2Y2M3YmYw
YTcyNGRlNDkwMTk1MjM0MmY4NDlmZTAuLjA3NjQwNDM2Zjk3ZWNiMDBmMmUwNTI5ODFhNGQ5YjYx
N2EzNzNiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Ob2RlSW5wdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Tm9kZUlucHV0LmgKQEAgLTQ1LDggKzQ1LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEF1ZGlv
Tm9kZUlucHV0KEF1ZGlvTm9kZSopOwogCiAgICAgLy8gQXVkaW9TdW1taW5nSnVuY3Rpb24KLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuVXBkYXRlU3RhdGUoKSBvdmVycmlkZSB7IHJldHVybiAhbm9kZSgp
LT5pc01hcmtlZEZvckRlbGV0aW9uKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBjYW5VcGRhdGVTdGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuICFu
b2RlKCktPmlzTWFya2VkRm9yRGVsZXRpb24oKTsgfQorICAgIHZvaWQgZGlkVXBkYXRlKCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KICAgICBBdWRp
b05vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgKaW5kZXggMjY5YmJlMTdlMTNiMTljOWZiNGJl
OWI3MmNiZjU2NDJjZTMxNGJkMi4uNmVmNTVkMjU5NTQ5Nzk1YzI2OWMzMzIyYmRhM2MxYmY1NTIx
MGVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmgK
QEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEF1ZGlvU3VtbWluZ0p1
bmN0aW9uCi0gICAgdmlydHVhbCBib29sIGNhblVwZGF0ZVN0YXRlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGUoKSBvdmVycmlkZSB7IH0KKyAg
ICBib29sIGNhblVwZGF0ZVN0YXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZv
aWQgZGlkVXBkYXRlKCkgb3ZlcnJpZGUgeyB9CiAKICAgICAvLyBJbnRyaW5zaWMgdmFsdWUuCiAg
ICAgZmxvYXQgdmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Qcm9jZXNzaW5nRXZlbnQuaAppbmRleCAzNWRmZTczYmI5YjhmYWMxYTQyY2Qz
YjIyYjJmMDE0NGY1ZjAxYmMxLi5iZDZkYjIyODliMDczMWYzZWRhNjM3NDQ3OGE2NzRjNTAzMjdi
ZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUHJv
Y2Vzc2luZ0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b1Byb2Nlc3NpbmdFdmVudC5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBBdWRpb0J1
ZmZlciogb3V0cHV0QnVmZmVyKCkgeyByZXR1cm4gbV9vdXRwdXRCdWZmZXIuZ2V0KCk7IH0KICAg
ICBkb3VibGUgcGxheWJhY2tUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1RpbWU7IH0K
IAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZERTUEtlcm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWREU1BLZXJuZWwuaAppbmRleCBmM2ViMGY1
YjBjMTVlMDFmNDAyNDE0NDRmYmFkYTkzNDFlYTUzN2IxLi43NDUwMDUxY2VmODk4YjgwZmNkZTBj
NmMyYjZmZmYxMmI4ZjMyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0JpcXVhZERTUEtlcm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRFNQS2VybmVsLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIH0K
ICAgICAKICAgICAvLyBBdWRpb0RTUEtlcm5lbAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNv
bnN0IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZSB7IG1fYmlxdWFkLnJl
c2V0KCk7IH0KKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQqIGRl
c3QsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBv
dmVycmlkZSB7IG1fYmlxdWFkLnJlc2V0KCk7IH0KIAogICAgIC8vIEdldCB0aGUgbWFnbml0dWRl
IGFuZCBwaGFzZSByZXNwb25zZSBvZiB0aGUgZmlsdGVyIGF0IHRoZSBnaXZlbgogICAgIC8vIHNl
dCBvZiBmcmVxdWVuY2llcyAoaW4gSHopLiBUaGUgcGhhc2UgcmVzcG9uc2UgaXMgaW4gcmFkaWFu
cy4KQEAgLTUzLDggKzUzLDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQqIG1hZ1Jlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQqIHBoYXNlUmVzcG9uc2UpOwogCi0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgQmlxdWFkIG1f
YmlxdWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJv
Y2Vzc29yLmgKaW5kZXggMTI1NjdkZDEyYzczOGNkMTI0Y2FiYjhhOTA3NzkwMjdiM2YwYzZhMS4u
MzUyMGIxNGU2NzNkNDE4OTkxNGNmNmQ5MzhiODk3MDIxMTA4M2JlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCkBAIC01NCw5ICs1
NCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkJpcXVhZFByb2Nlc3NvcigpOwogICAgIAot
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwo
KSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtl
cm5lbCgpIG92ZXJyaWRlOwogICAgICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhjb25z
dCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291
cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJy
aWRlOwogCiAgICAgLy8gR2V0IHRoZSBtYWduaXR1ZGUgYW5kIHBoYXNlIHJlc3BvbnNlIG9mIHRo
ZSBmaWx0ZXIgYXQgdGhlIGdpdmVuCiAgICAgLy8gc2V0IG9mIGZyZXF1ZW5jaWVzIChpbiBIeiku
IFRoZSBwaGFzZSByZXNwb25zZSBpcyBpbiByYWRpYW5zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oCmluZGV4IDE5NmE5YTc0ODY1
ZDFhZmMxMTcyYTJmY2IxODczYzYwNWQxM2Y1MjUuLmE1MTQ2YWZiMzUwOTIwOTkwMjg1MDEzNTY1
ZTkwOTRkYjQ3ZDU1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTQxLDE3ICs0MSwxNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKIAogICAgIC8vIEF1ZGlv
Tm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgaW4gdGhlIGF1ZGlvIHRocmVhZCAocHJlLXJlbmRl
cmluZyB0YXNrKSB3aGVuIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIGFuIGlucHV0IG1heSBo
YXZlIGNoYW5nZWQuCi0gICAgdmlydHVhbCB2b2lkIGNoZWNrTnVtYmVyT2ZDaGFubmVsc0Zvcklu
cHV0KEF1ZGlvTm9kZUlucHV0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGVja051bWJlck9mQ2hh
bm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1dCopIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IHVuc2lnbmVkIG1fZGVzaXJlZE51bWJlck9mT3V0cHV0Q2hhbm5lbHM7CiAKLSAgICB2aXJ0dWFs
IGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAg
ICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCiAgICAgQ2hh
bm5lbE1lcmdlck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmgKaW5kZXggODU0OTgzYzg5MjJhY2U2NjExMDkz
NDYyYmIyNDdhYmYwMjVmODAwZS4uNTRjNTE5YTBlMTM0NzkwNmM0ZTQ4ZjRiYzVkYTBiZjc2NWVi
N2ZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVs
U3BsaXR0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFu
bmVsU3BsaXR0ZXJOb2RlLmgKQEAgLTM3LDEyICszNywxMiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiwgZmxvYXQg
c2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKIAogICAgIC8vIEF1ZGlvTm9k
ZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vz
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAogICAgIENoYW5uZWxTcGxpdHRlck5vZGUoQXVkaW9Db250
ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRwdXRzKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCmluZGV4
IDM0MzgyZTk5NTIzZWUzNmMxNTM3ZWU1ZDc5NmM3ZTI1ZTA2ZjFkNzguLjBhMjVhMWZjOGE1NmJk
OTRiOTg1NDYxNDEzNjNlNTk5ZDc5OTc0OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oCkBAIC00NSwxMCArNDUsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgfkNvbnZvbHZlck5vZGUoKTsKICAgICAKICAgICAvLyBBdWRpb05vZGUKLSAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5p
dGlhbGl6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7
CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgdW5pbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbXB1bHNl
IHJlc3BvbnNlcwogICAgIHZvaWQgc2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiwgRXhjZXB0aW9uQ29k
ZSYpOwpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENvbnZvbHZlck5v
ZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICB2aXJ0dWFsIGRvdWJs
ZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmV2ZXJiPiBtX3JldmVyYjsKICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1f
YnVmZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggODliZDc4ODcxOWU0ZGY5NzI2
ZTkxNTkxYWFiM2E5YmQwODJiOTMzYS4uNzFmNWI1OWRkNjFlZmQ0ZjRjMTcwZDI2YzFhZTExNTZm
OWY4NTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC00MywxOCArNDMsMTggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSgpOwogICAg
IAogICAgIC8vIEF1ZGlvTm9kZSAgIAotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDaGFubmVsQ291bnQodW5zaWduZWQgbG9uZywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5p
bml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDaGFubmVsQ291bnQodW5zaWduZWQg
bG9uZywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlv
bk5vZGUKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERl
dmljZUlkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRSZW5kZXJpbmcoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2Uoc3RkOjpmdW5jdGlvbjx2b2lkKCk+KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbWF4Q2hhbm5lbENvdW50KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlOworICAg
IHZvaWQgZW5hYmxlSW5wdXQoY29uc3QgU3RyaW5nJiBpbnB1dERldmljZUlkKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN1bWUoc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmQoc3RkOjpmdW5j
dGlvbjx2b2lkKCk+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9p
ZCgpPikgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbG9uZyBtYXhDaGFubmVsQ291bnQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzUGxheWluZygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlEU1BLZXJu
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlEU1BLZXJuZWwuaApp
bmRleCBmMjMxZDQ0MjMwZjQzODdhMTIyMjkxNjc0MWMyNGQyNjc2MjYxOWJkLi4yZGNjMmNlZDgw
MTQ5MDYzMWZkYTA2YzlmOTA5NGVjN2JhZTk0ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5RFNQS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9EZWxheURTUEtlcm5lbC5oCkBAIC0zOCwxNSArMzgsMTUgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IERlbGF5RFNQS2VybmVsKERlbGF5UHJvY2Vzc29yKik7CiAgICAg
RGVsYXlEU1BLZXJuZWwoZG91YmxlIG1heERlbGF5VGltZSwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQqIHNvdXJjZSwgZmxvYXQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgZmxvYXQq
IHNvdXJjZSwgZmxvYXQqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgZG91YmxlIG1heERl
bGF5VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4RGVsYXlUaW1lOyB9CiAgICAgCiAgICAgdm9p
ZCBzZXREZWxheUZyYW1lcyhkb3VibGUgbnVtYmVyT2ZGcmFtZXMpIHsgbV9kZXNpcmVkRGVsYXlG
cmFtZXMgPSBudW1iZXJPZkZyYW1lczsgfQogCi0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRv
dWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEF1ZGlv
RmxvYXRBcnJheSBtX2J1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVsYXlQcm9jZXNzb3IuaAppbmRleCA2MmE3NGM4MWJmOTE1NDdmNzk3ZDRhMDllMjc5MmNk
ZWJhOThkNzVlLi5kMWRkMzQ4N2Y1YjYwNDZhOWI1MTQxMmM4M2IxMzNjYWIyNTUwZjA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBkb3VibGUgbWF4
RGVsYXlUaW1lKTsKICAgICB2aXJ0dWFsIH5EZWxheVByb2Nlc3NvcigpOwogICAgIAotICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVy
cmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgp
IG92ZXJyaWRlOwogICAgICAgICAKICAgICBBdWRpb1BhcmFtKiBkZWxheVRpbWUoKSBjb25zdCB7
IHJldHVybiBtX2RlbGF5VGltZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCmluZGV4IDg0MzAz
OWI2MjI4NThiYzY5MjZmNmY4MTAzM2EzMzUzOWFhOGNmMzYuLjQyYTllZjY1ZTgwYTQ2MGFjZmZi
MzE1YWFmY2MwNWFmODMxMzg5MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5oCkBAIC00MywxMCArNDMsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgfkR5bmFtaWNzQ29tcHJlc3Nvck5vZGUoKTsKIAogICAg
IC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1By
b2Nlc3MpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVu
aW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Q
cm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBp
bml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsK
IAogICAgIC8vIFN0YXRpYyBjb21wcmVzc2lvbiBjdXJ2ZSBwYXJhbWV0ZXJzLgogICAgIEF1ZGlv
UGFyYW0qIHRocmVzaG9sZCgpIHsgcmV0dXJuIG1fdGhyZXNob2xkLmdldCgpOyB9CkBAIC01OSw4
ICs1OSw4IEBAIHB1YmxpYzoKICAgICBBdWRpb1BhcmFtKiByZWR1Y3Rpb24oKSB7IHJldHVybiBt
X3JlZHVjdGlvbi5nZXQoKTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgZG91YmxlIHRhaWxU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuaAppbmRleCA0Y2U5NzhkZTRhMjlkYjNh
YTYyMDc1ZGJhNzI2ZDI2ZTk4OGM3NzljLi4zOTBjZGQxYWMyZDI2NGJhZWY4MTU3ZDU1ZjQ3MDEw
MTA1NTkxY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dh
aW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5o
CkBAIC00NSwxOCArNDUsMTggQEAgcHVibGljOgogICAgIH0KIAogICAgIC8vIEF1ZGlvTm9kZQot
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBDYWxsZWQgaW4gdGhlIG1haW4gdGhyZWFkIHdoZW4gdGhlIG51bWJlciBv
ZiBjaGFubmVscyBmb3IgdGhlIGlucHV0IG1heSBoYXZlIGNoYW5nZWQuCi0gICAgdmlydHVhbCB2
b2lkIGNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0Kikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRpb05vZGVJbnB1
dCopIG92ZXJyaWRlOwogCiAgICAgLy8gSmF2YVNjcmlwdCBpbnRlcmZhY2UKICAgICBBdWRpb1Bh
cmFtKiBnYWluKCkgeyByZXR1cm4gbV9nYWluLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAg
dmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAg
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAogICAg
IEdhaW5Ob2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRp
b1NvdXJjZU5vZGUuaAppbmRleCBlMjIxY2NhYTYxMjA5NmIzYmE2Mzc3NWM2NjY2NTg5MzA0YjBk
NDVjLi5jMTgwNDJmYmNlMjliNGQ2Y2U5ZGQxNzM4NWQ1MDQ5MTkyNDU2YzczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlLmgKQEAgLTQ4LDExICs0OCwxMSBAQCBwdWJsaWM6CiAgICAgSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAKICAgICAvLyBBdWRp
b05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBy
b2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgp
IG92ZXJyaWRlOwogICAgIAogICAgIC8vIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzYW1w
bGVSYXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZDaGFu
bmVscywgZmxvYXQgc2FtcGxlUmF0ZSkgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBsb2NrKCk7
CiAgICAgdm9pZCB1bmxvY2soKTsKQEAgLTYwLDExICs2MCwxMSBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVk
aWFFbGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gQXMgYW4gYXVkaW8gc291cmNlLCB3ZSB3aWxsIG5l
dmVyIHByb3BhZ2F0ZSBzaWxlbmNlLgotICAgIHZpcnR1YWwgYm9vbCBwcm9wYWdhdGVzU2lsZW5j
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBwcm9wYWdhdGVz
U2lsZW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBSZWZQdHI8
SFRNTE1lZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CiAgICAgTG9jayBtX3Byb2Nlc3NNdXRl
eDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKaW5kZXggMGJhZGRhYTE4NmU2MzNh
ZTVmMDhmMTZlNDVlMDZkZGFhMjQwMGIwNC4uOGY2YjYyNTYxYzY0MjU4MzAzOTE2ZDBkMjc5N2U0
MGVhYTE2MmQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKQEAgLTQ2LDE5
ICs0NiwxOSBAQCBwdWJsaWM6CiAgICAgTWVkaWFTdHJlYW0qIHN0cmVhbSgpIHsgcmV0dXJuIG1f
c3RyZWFtLmdldCgpOyB9CiAKICAgICAvLyBBdWRpb05vZGUuCi0gICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlc2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9jZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKICAgICAKICAgICBSZWFs
dGltZU1lZGlhU291cmNlKiBtZWRpYVN0cmVhbVNvdXJjZSgpOwogCiBwcml2YXRlOgogICAgIE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0Jiwgc2l6ZV90IG51bWJl
ck9mQ2hhbm5lbHMpOwogCi0gICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIEFzIGFuIGF1ZGlvIHNvdXJjZSwgd2Ugd2lsbCBu
ZXZlciBwcm9wYWdhdGUgc2lsZW5jZS4KLSAgICB2aXJ0dWFsIGJvb2wgcHJvcGFnYXRlc1NpbGVu
Y2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcHJvcGFnYXRl
c1NpbGVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtPiBtX3N0cmVhbTsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZT4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQuaAppbmRleCA2ZGYyNzZiN2Q2Y2M3
MTRkZGJhMWFjYzYwMzRhMmVmYTg4MzI5NWIxLi44NjcyMjAyYTlmM2Q3YTQyYWY4NjI3MTE2N2Jl
Njg3NGZhNjRhOTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmgKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogCiAgICAgQXVkaW9CdWZmZXIqIHJlbmRlcmVkQnVmZmVyKCkgeyByZXR1cm4g
bV9yZW5kZXJlZEJ1ZmZlci5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBl
dmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgT2Zm
bGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50KFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IHJlbmRlcmVk
QnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDIxYTJjM2ZmMjE4ZjY1Njg3
ZjhlMTQwYjhjYjQ2YWMwODI2ZDAzMjUuLmExNjNiOGFkOGVlOTVmYzQxZDBmMGQwYWFmMThlYjdj
ZjViOWQxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaApAQCAtNDYsMTQgKzQ2LDE0IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoKTsKICAg
ICAKICAgICAvLyBBdWRpb05vZGUgICAKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJy
aWRlOwogCiAgICAgLy8gQXVkaW9EZXN0aW5hdGlvbk5vZGUKLSAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlSW5wdXQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0
YXJ0UmVuZGVyaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmFibGVJbnB1dChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHN0YXJ0UmVuZGVyaW5nKCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3JlbmRlclRhcmdldC0+c2FtcGxlUmF0ZSgpOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAog
cHJpdmF0ZToKICAgICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0Jiwg
QXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgKaW5kZXggZTRlNzM3ZjlmNmYxNDBlMDI0NWEwMDdk
MDRjMmY5OTIzZWIyOTUwMC4uY2U2MDU4NzQxNDZjYmNlZWUwYzhkZTA3ZGVmNGY1MjllYTM3OTg1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9y
Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5v
ZGUuaApAQCAtNTYsOCArNTYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+T3NjaWxsYXRvck5v
ZGUoKTsKICAgICAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzcyhz
aXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHR5cGUoKSBj
b25zdDsKIApAQCAtNzIsMTMgKzcyLDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3NjaWxs
YXRvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0ZSk7CiAKLSAgICB2aXJ0dWFs
IGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAg
ICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgZG91
YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCiAgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBzYW1wbGUtYWNjdXJhdGUgdGltZWxpbmUgcGFyYW1l
dGVyIGNoYW5nZXMuCiAgICAgYm9vbCBjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVBoYXNlSW5jcmVt
ZW50cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwcm9wYWdh
dGVzU2lsZW5jZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJvcGFnYXRlc1NpbGVuY2Uo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE9uZSBvZiB0aGUgd2F2ZWZvcm0gdHlwZXMgZGVm
aW5lZCBpbiB0aGUgZW51bS4KICAgICB1bnNpZ25lZCBzaG9ydCBtX3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5oCmluZGV4IGRkNGU5MzE1OWMxOTUx
MGJhOTc5NTMwY2EwZThiZGM3NWQyYWY1YTkuLmE3NzgyYTNlMjUxYWI0OWM2ZTE1OTc3MjA3MmI2
MDQwM2VmMjI2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
UGFubmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5oCkBAIC03MiwxMSArNzIsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBhbm5lck5v
ZGUoKTsKIAogICAgIC8vIEF1ZGlvTm9kZQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKHNpemVf
dCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwdWxsSW5wdXRz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNl
dCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vz
cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHB1bGxJbnB1dHMo
c2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJy
aWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdW5pbml0aWFs
aXplKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBMaXN0ZW5lcgogICAgIEF1ZGlvTGlzdGVuZXIqIGxp
c3RlbmVyKCk7CkBAIC0xMjksOCArMTI5LDggQEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIGRp
c3RhbmNlR2FpbigpIHsgcmV0dXJuIG1fZGlzdGFuY2VHYWluLmdldCgpOyB9CiAgICAgQXVkaW9Q
YXJhbSogY29uZUdhaW4oKSB7IHJldHVybiBtX2NvbmVHYWluLmdldCgpOyB9CiAKLSAgICB2aXJ0
dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFubmVyID8g
bV9wYW5uZXItPnRhaWxUaW1lKCkgOiAwOyB9Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Bhbm5lciA/IG1fcGFubmVyLT5sYXRlbmN5
VGltZSgpIDogMDsgfQorICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fcGFubmVyID8gbV9wYW5uZXItPnRhaWxUaW1lKCkgOiAwOyB9CisgICAgZG91YmxlIGxh
dGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+
bGF0ZW5jeVRpbWUoKSA6IDA7IH0KIAogcHJpdmF0ZToKICAgICBQYW5uZXJOb2RlKEF1ZGlvQ29u
dGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA3YmNjOWRiOTkyNDVhMzRl
NGI5OWQ0NDFiYWYwM2Y0ZTZhYjlhNzA5Li42YjY1ZDAxOGViZmFmNjk2YTA1ZGQ4ZDNkZjgwNGE2
M2M0YmFkNDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Nj
cmlwdFByb2Nlc3Nvck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuaApAQCAtNTgsMTYgKzU4LDE2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5TY3JpcHRQcm9jZXNzb3JOb2RlKCk7CiAKICAgICAvLyBBdWRpb05vZGUKLSAgICB2
aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgdW5pbml0aWFsaXplKCkgb3ZlcnJpZGU7CiAKICAgICBzaXplX3QgYnVmZmVy
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyU2l6ZTsgfQogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIFNjcmlwdFByb2Nlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0
ZSwgc2l6ZV90IGJ1ZmZlclNpemUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRDaGFubmVscywgdW5z
aWduZWQgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlckRTUEtlcm5lbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgKaW5kZXggNDZhZDE3Y2Y5
OTRjNjA2ODdiZmE0YmFjODI1YmFhY2RkNWU1MzljMS4uYWEwNWQ3ZmY4OGRiYzM2NThmZGE3Mzdm
MTg3MTgyYWQzZDk2YTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9XYXZlU2hhcGVyRFNQS2VybmVsLmgKQEAgLTQzLDEwICs0MywxMCBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgV2F2ZVNoYXBlckRTUEtlcm5lbChXYXZlU2hhcGVyUHJvY2Vzc29yKik7
CiAKICAgICAvLyBBdWRpb0RTUEtlcm5lbAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKGNvbnN0
IGZsb2F0KiBzb3VyY2UsIGZsb2F0KiBkZXN0LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRv
dWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFs
IGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzcyhj
b25zdCBmbG9hdCogc291cmNlLCBmbG9hdCogZGVzdCwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOworICAgIGRvdWJsZSB0YWlsVGlt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE92ZXJzYW1wbGluZyByZXF1aXJlcyBtb3JlIHJl
c291cmNlcywgc28gbGV0J3Mgb25seSBhbGxvY2F0ZSB0aGVtIGlmIG5lZWRlZC4KICAgICB2b2lk
IGxhenlJbml0aWFsaXplT3ZlcnNhbXBsaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCmluZGV4IGVhMWZiYWQ1Nzkx
MmQ3NDZmZWJjYjAzZWZkOGM2NGQ2ZmI1ZTQ0NzQuLjNiMDVhZTZhZTEzMmQ4MTlkMjhlODhiZGJi
ZDA2NDZlMmY4ZDRiZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgfldhdmVTaGFwZXJQcm9jZXNzb3IoKTsKIAotICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBjcmVhdGVLZXJuZWwoKSBvdmVycmlkZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9C
dXMqIGRlc3RpbmF0aW9uLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2
b2lkIHByb2Nlc3MoY29uc3QgQXVkaW9CdXMqIHNvdXJjZSwgQXVkaW9CdXMqIGRlc3RpbmF0aW9u
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0Q3VydmUo
RmxvYXQzMkFycmF5Kik7CiAgICAgRmxvYXQzMkFycmF5KiBjdXJ2ZSgpIHsgcmV0dXJuIG1fY3Vy
dmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUYXNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGFzay5oCmluZGV4IDIxNGJiNDYwOTMzNDAzNjUwNWIyM2Q1ZmFjODVmNTJiMzkyY2I1
ODQuLjJmZjhkZjVlN2RhNWQwMWVhZGI1YzAzMDU0MzczZjk2YmE0NDk5YjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUYXNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRhc2suaApAQCAtOTks
OSArOTksOSBAQCBwdWJsaWM6CiAgICAgRGF0YWJhc2VPcGVuVGFzayhEYXRhYmFzZSYsIGJvb2wg
c2V0VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlVGFza1N5bmNocm9uaXplciYsIERhdGFi
YXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgYm9vbCYgc3VjY2Vzcyk7CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvUGVyZm9ybVRhc2soKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRvUGVyZm9ybVRhc2soKSBvdmVycmlkZTsKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgdmlydHVh
bCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3Qg
Y2hhciogZGVidWdUYXNrTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBib29s
IG1fc2V0VmVyc2lvbkluTmV3RGF0YWJhc2U7CkBAIC0xMTUsOSArMTE1LDkgQEAgcHVibGljOgog
ICAgIERhdGFiYXNlQ2xvc2VUYXNrKERhdGFiYXNlJiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVy
Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvUGVyZm9ybVRhc2soKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRvUGVyZm9ybVRhc2soKSBvdmVycmlkZTsKICNpZiAhTE9HX0RJU0FCTEVE
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgY29uc3QgY2hhciogZGVidWdUYXNrTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlm
CiB9OwogCkBAIC0xMjksOSArMTI5LDkgQEAgcHVibGljOgogICAgIFNRTFRyYW5zYWN0aW9uQmFj
a2VuZCogdHJhbnNhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOyB9
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRvUGVyZm9ybVRhc2soKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRvUGVyZm9ybVRhc2soKSBvdmVycmlkZTsKICNpZiAhTE9HX0RJU0FCTEVECi0g
ICAgdmlydHVhbCBjb25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgY29uc3QgY2hhciogZGVidWdUYXNrTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAK
ICAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0aW9uOwpAQCAtMTQz
LDkgKzE0Myw5IEBAIHB1YmxpYzoKICAgICBEYXRhYmFzZVRhYmxlTmFtZXNUYXNrKERhdGFiYXNl
JiwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyJiwgVmVjdG9yPFN0cmluZz4mIG5hbWVzKTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9QZXJmb3JtVGFzaygpIG92ZXJyaWRlOworICAg
IHZvaWQgZG9QZXJmb3JtVGFzaygpIG92ZXJyaWRlOwogI2lmICFMT0dfRElTQUJMRUQKLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIGRlYnVnVGFza05hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBj
b25zdCBjaGFyKiBkZWJ1Z1Rhc2tOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAg
IFZlY3RvcjxTdHJpbmc+JiBtX3RhYmxlTmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmgKaW5kZXggZDlkZGE4NzJhYmRjMTJh
MzI2Y2U3ZDY0MWQ4MmQwZTU0M2RkYWYxYi4uZGVjOWI4YTlkZjZjZWI3Yzk5NDk3YmUwNGJjNTI1
NTFiOGRiZmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb24uaApAQCAtNzIsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2xlYXJDYWxsYmFja1dyYXBwZXJzKCk7CiAKICAgICAvLyBTdGF0ZSBNYWNoaW5lIGZ1bmN0aW9u
czoKLSAgICB2aXJ0dWFsIFN0YXRlRnVuY3Rpb24gc3RhdGVGdW5jdGlvbkZvcihTUUxUcmFuc2Fj
dGlvblN0YXRlKSBvdmVycmlkZTsKKyAgICBTdGF0ZUZ1bmN0aW9uIHN0YXRlRnVuY3Rpb25Gb3Io
U1FMVHJhbnNhY3Rpb25TdGF0ZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlTmV4dFN0YXRl
QW5kQ2xlYW51cElmTmVlZGVkKCk7CiAKICAgICAvLyBTdGF0ZSBmdW5jdGlvbnM6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlv
bkJhY2tlbmQuaAppbmRleCBlOTBlNzZjZmQzNmI0ODhjMmQ2MmI3YTM5ZWJhYWU5ZTQ0NjljNWE4
Li4zMGNkZjI5ZWY2MWIwYjRmZGY5YzA2MzQ0MmI2YmM3MzI0NGFiM2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVucXVldWVTdGF0
ZW1lbnRCYWNrZW5kKHN0ZDo6dW5pcXVlX3B0cjxTUUxTdGF0ZW1lbnQ+KTsKIAogICAgIC8vIFN0
YXRlIE1hY2hpbmUgZnVuY3Rpb25zOgotICAgIHZpcnR1YWwgU3RhdGVGdW5jdGlvbiBzdGF0ZUZ1
bmN0aW9uRm9yKFNRTFRyYW5zYWN0aW9uU3RhdGUpIG92ZXJyaWRlOworICAgIFN0YXRlRnVuY3Rp
b24gc3RhdGVGdW5jdGlvbkZvcihTUUxUcmFuc2FjdGlvblN0YXRlKSBvdmVycmlkZTsKICAgICB2
b2lkIGNvbXB1dGVOZXh0U3RhdGVBbmRDbGVhbnVwSWZOZWVkZWQoKTsKIAogICAgIC8vIFN0YXRl
IGZ1bmN0aW9uczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9DbG9zZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvQ2xvc2VF
dmVudC5oCmluZGV4IDg4YWJjZDIyOWQ3Yjg2M2UyYTNjZDMxMzc2ZDYwN2NlNzA3ODA4MDIuLjE1
NDk3Y2FhMmYwZTI0MDRjMzI2MGNhODdlODZkZTE2Njc0MDA0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9DbG9zZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL0Nsb3NlRXZlbnQuaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgU3RyaW5nIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uOyB9CiAK
ICAgICAvLyBFdmVudCBmdW5jdGlvbi4KLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2xvc2VFdmVudEludGVyZmFjZVR5
cGU7IH0KKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIENsb3NlRXZlbnRJbnRlcmZhY2VUeXBlOyB9CiAKIHByaXZhdGU6CiAgICAgQ2xv
c2VFdmVudChib29sIHdhc0NsZWFuLCBpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXggZTA3
ZjQwODUxMThkN2EzNTBjZmE1MTIzMmUxM2VjYThiM2IzZGI4Ni4uZjYwYzVlYzYwZTU3M2NlN2Iz
ZjM3NWZjODgyMmU5OTlkYWZmZTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuaApAQCAtOTEsMjAgKzkxLDIwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEJpbmFyeVR5cGUoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBFdmVudFRhcmdldCBmdW5j
dGlvbnMuCi0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVy
ZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50VGFy
Z2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpyZWY7CiAgICAgdXNp
bmcgUmVmQ291bnRlZDxXZWJTb2NrZXQ+OjpkZXJlZjsKIAogICAgIC8vIFdlYlNvY2tldENoYW5u
ZWxDbGllbnQgZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCaW5hcnlEYXRhKFZl
Y3RvcjxjaGFyPiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2VFcnJvcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFt
b3VudCh1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3Np
bmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBT
dHJpbmcmIHJlYXNvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDb25uZWN0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJpbmFyeURhdGEoVmVjdG9yPGNoYXI+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VFcnJvcigpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQodW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTdGFydENsb3NpbmdIYW5kc2hha2UoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQs
IENsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKQEAgLTEyMSw4ICsxMjEsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2
ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3Zl
cnJpZGUgeyBkZXJlZigpOyB9CiAKICAgICBzaXplX3QgZ2V0RnJhbWluZ092ZXJoZWFkKHNpemVf
dCBwYXlsb2FkU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDA0M2RjMGZjYzg3ZDEzY2U0YjBkNGFhNmI0
Zjg4N2YzZDY3YWJmY2UuLjNhZTcyZDk1OGQ4MGY3NmRjMTVlMGQ4MTcxZWUzZGJkZmE2YTRkZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaApAQCAtNjUsMjkgKzY1LDI5IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmQoY29u
c3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbCBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwcm90b2NvbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3Vi
cHJvdG9jb2woKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBleHRlbnNpb25zKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJyYXlC
dWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNl
bmQoQmxvYiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZShpbnQgY29kZSwg
Y29uc3QgU3RyaW5nJiByZWFzb24pIG92ZXJyaWRlOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFr
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwg
dm9pZCBzdXNwZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgY29ubmVjdChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29s
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3VicHJvdG9jb2woKSBvdmVycmlkZTsKKyAgICBTdHJp
bmcgZXh0ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
OjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IEpTQzo6QXJy
YXlCdWZmZXImLCB1bnNpZ25lZCBieXRlT2Zmc2V0LCB1bnNpZ25lZCBieXRlTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKEJs
b2ImKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
IG92ZXJyaWRlOyAvLyBTdGFydCBjbG9zaW5nIGhhbmRzaGFrZS4KKyAgICB2b2lkIGZhaWwoY29u
c3QgU3RyaW5nJiByZWFzb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJy
aWRlOworCisgICAgdm9pZCBzdXNwZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN1bWUoKSBv
dmVycmlkZTsKIAogICAgIC8vIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCBmdW5jdGlvbnMuCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRPcGVuU29ja2V0U3RyZWFtKFNvY2tldFN0
cmVhbUhhbmRsZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZVNvY2tldFN0
cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgY2hhcios
IGludCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJ1ZmZlcmVkQW1vdW50
KFNvY2tldFN0cmVhbUhhbmRsZSosIHNpemVfdCBidWZmZXJlZEFtb3VudCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwg
Y29uc3QgU29ja2V0U3RyZWFtRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsT3BlblNv
Y2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE9w
ZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRDbG9zZVNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUqKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0
IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQo
U29ja2V0U3RyZWFtSGFuZGxlKiwgc2l6ZV90IGJ1ZmZlcmVkQW1vdW50KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEZhaWxTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgU29j
a2V0U3RyZWFtRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShTb2NrZXRTdHJlYW1IYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoU29ja2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBvdmVycmlkZTsKIAogICAgIGVudW0gQ2xvc2VFdmVudENvZGUgewogICAgICAgICBDbG9zZUV2
ZW50Q29kZU5vdFNwZWNpZmllZCA9IC0xLApAQCAtMTA5LDE3ICsxMDksMTcgQEAgcHVibGljOgog
ICAgIH07CiAKICAgICAvLyBGaWxlUmVhZGVyTG9hZGVyQ2xpZW50IGZ1bmN0aW9ucy4KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRMb2FkaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExv
YWRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChpbnQgZXJyb3JDb2Rl
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFN0YXJ0TG9hZGluZygpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWwoaW50IGVycm9yQ29kZSkgb3ZlcnJpZGU7CiAK
ICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpyZWY7CiAgICAgdXNpbmcg
UmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBvdmVycmlkZSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwo
KSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICB2b2lkIHJlZlRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsKCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiBwcml2YXRlOgogICAgIFdl
YlNvY2tldENoYW5uZWwoRG9jdW1lbnQqLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVmbGF0
ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggYzZhM2E1OTU4MjIyODNhNjM2NjEyNDIxOWRjM2RjOGZi
N2M2NGY5NS4uNDY3N2MwNTNkM2Q1ZjhkOWZhZWU2MzIwYWIxNmQyMDQ4NjYwMjViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxhdGVG
cmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtNDYsOSArNDYsOSBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViU29ja2V0RXh0ZW5zaW9uRGVmbGF0ZUZyYW1lKFdlYlNvY2tldERlZmxhdGVGcmFtZXIq
KTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRFeHRlbnNpb25EZWZsYXRlRnJhbWUoKSB7IH0KIAot
ICAgIHZpcnR1YWwgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBwcm9jZXNzUmVzcG9uc2UoY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBmYWlsdXJlUmVhc29uKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9mYWlsdXJlUmVhc29uOyB9CisgICAgU3RyaW5nIGhhbmRzaGFrZVN0cmluZygpIG92
ZXJyaWRlOworICAgIGJvb2wgcHJvY2Vzc1Jlc3BvbnNlKGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+Jikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGZhaWx1cmVSZWFzb24oKSBvdmVycmlkZSB7
IHJldHVybiBtX2ZhaWx1cmVSZWFzb247IH0KIAogcHJpdmF0ZToKICAgICBXZWJTb2NrZXREZWZs
YXRlRnJhbWVyKiBtX2ZyYW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKaW5kZXggNjJlZDNjZDcyOTA0ZmQyMDQ1OGY2ODI1MjAyZmRjMDc0OWNkMTAwYy4uYmM4Mzky
ZTVlM2QwNmUzMDBmMjczNzczODA2ZjcxOGZjOTgyZWUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTYyLDE4ICs2MiwxOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKTsKIAogICAgIC8vIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgY29ubmVj
dChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBzdWJwcm90b2NvbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGV4
dGVuc2lvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IHNlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IHNlbmQoY29u
c3QgSlNDOjpBcnJheUJ1ZmZlciYsIHVuc2lnbmVkIGJ5dGVPZmZzZXQsIHVuc2lnbmVkIGJ5dGVM
ZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgc2VuZChCbG9iJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNs
b3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7IC8vIFdpbGwgc3VwcHJlc3MgZGlkQ2xvc2UoKS4K
LSAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXN1bWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbm5lY3QoY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBwcm90b2NvbCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHN1YnByb3RvY29sKCkgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGV4dGVuc2lvbnMoKSBvdmVycmlkZTsKKyAgICBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBzZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3Zl
cnJpZGU7CisgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgc2VuZChj
b25zdCBKU0M6OkFycmF5QnVmZmVyJiwgdW5zaWduZWQgYnl0ZU9mZnNldCwgdW5zaWduZWQgYnl0
ZUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRS
ZXN1bHQgc2VuZChCbG9iJikgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbG9uZyBidWZmZXJlZEFt
b3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2UoaW50IGNvZGUsIGNvbnN0IFN0
cmluZyYgcmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGZhaWwoY29uc3QgU3RyaW5nJiByZWFz
b24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOyAvLyBXaWxsIHN1
cHByZXNzIGRpZENsb3NlKCkuCisgICAgdm9pZCBzdXNwZW5kKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZXN1bWUoKSBvdmVycmlkZTsKIAogICAgIC8vIEdlbmVyYXRlZCBieSB0aGUgYnJpZGdlLiAg
VGhlIFBlZXIgYW5kIGl0cyBicmlkZ2Ugc2hvdWxkIGhhdmUgaWRlbnRpY2FsCiAgICAgLy8gbGlm
ZXRpbWVzLgpAQCAtOTgsMTMgKzk4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCByZXN1bWUo
KTsKIAogICAgICAgICAvLyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50IGZ1bmN0aW9ucy4KLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZENvbm5lY3QoKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8Y2hhcj4mJikg
b3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVCdWZmZXJlZEFtb3VudCh1
bnNpZ25lZCBsb25nIGJ1ZmZlcmVkQW1vdW50KSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFN0YXJ0Q2xvc2luZ0hhbmRzaGFrZSgpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xvc2UodW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xv
c2luZ0hhbmRzaGFrZUNvbXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0
IFN0cmluZyYgcmVhc29uKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlRXJyb3IoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRDb25uZWN0KCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQmluYXJ5RGF0YShWZWN0b3I8
Y2hhcj4mJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkVXBkYXRlQnVmZmVyZWRBbW91bnQo
dW5zaWduZWQgbG9uZyBidWZmZXJlZEFtb3VudCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlk
U3RhcnRDbG9zaW5nSGFuZHNoYWtlKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkQ2xvc2Uo
dW5zaWduZWQgbG9uZyB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgQ2xvc2luZ0hhbmRzaGFrZUNv
bXBsZXRpb25TdGF0dXMsIHVuc2lnbmVkIHNob3J0IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29u
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUVycm9yKCkgb3ZlcnJp
ZGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBQZWVyKFBhc3NSZWZQdHI8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiwgV29ya2VyTG9hZGVyUHJveHkmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSk7CkBAIC0xMTksOCArMTE5
LDggQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw+OjpkZXJlZjsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCByZWZU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIG92ZXJyaWRlIHsgZGVy
ZWYoKTsgfQorICAgIHZvaWQgcmVmVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwoKSBvdmVycmlk
ZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkg
b3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gQnJpZGdlIGZvciBQZWVy
LiAgUnVubmluZyBvbiB0aGUgd29ya2VyIHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oCmluZGV4IGYxNmNiOTE2YTA4
YmU5YmU5ZmRmYTFlYjY3YmM3NDJlMDFjMDU0MjYuLjc1OTExMTFmZTA5OGE5ZjI0NDNkNmZkMzBj
ZmUwZWRiNjEwNTYwNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaApAQCAtNDIsMTYgKzQyLDE2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPEFjY2Vzc2liaWxpdHlBUklBR3JpZD4gY3JlYXRlKFJlbmRlck9iamVjdCop
OwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZCgpOwogICAgIAotICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBv
dmVycmlkZTsKICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eUFSSUFH
cmlkKFJlbmRlck9iamVjdCopOwogCiAgICAgLy8gQVJJQSB0cmVlZ3JpZHMgYW5kIGdyaWRzIHN1
cHBvcnQgc2VsZWN0ZWQgcm93cy4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJv
d3MoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlT
ZWxlY3RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBjb21wdXRlSXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FyaWFUYWJsZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRzU2VsZWN0
ZWRSb3dzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNdWx0aVNlbGVj
dGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjb21wdXRl
SXNUYWJsZUV4cG9zYWJsZVRocm91Z2hBY2Nlc3NpYmlsaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNBcmlhVGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAgICAgCiAgICAgdm9pZCBhZGRSb3dEZXNjZW5kYW50KEFjY2Vzc2liaWxp
dHlPYmplY3QqLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1
bnNpZ25lZCYgY29sdW1uQ291bnQpOwogICAgIGJvb2wgYWRkVGFibGVDZWxsQ2hpbGQoQWNjZXNz
aWJpbGl0eU9iamVjdCosIEhhc2hTZXQ8QWNjZXNzaWJpbGl0eU9iamVjdCo+JiBhcHBlbmRlZFJv
d3MsIHVuc2lnbmVkJiBjb2x1bW5Db3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCmluZGV4IGFhNzcxMzZi
ZTIwYTE5MjkyNDQ5NGU5MDkyNzc2MzhhYjRhMDMyYWIuLmJkNGRkMzMxYTkwY2RmMjgyMWM2NmYy
ODRmZGFlODg5YzBlNGUwNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oCkBAIC0zOSwxNCArMzksMTQgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwoKTsKICAgICAK
ICAgICAvLyBmaWxscyBpbiB0aGUgc3RhcnQgbG9jYXRpb24gYW5kIHJvdyBzcGFuIG9mIGNlbGwK
LSAgICB2aXJ0dWFsIHZvaWQgcm93SW5kZXhSYW5nZShzdGQ6OnBhaXI8dW5zaWduZWQsIHVuc2ln
bmVkPiYgcm93UmFuZ2UpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcm93SW5kZXhSYW5nZShz
dGQ6OnBhaXI8dW5zaWduZWQsIHVuc2lnbmVkPiYgcm93UmFuZ2UpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIC8vIGZpbGxzIGluIHRoZSBzdGFydCBsb2NhdGlvbiBhbmQgY29sdW1uIHNwYW4gb2YgY2Vs
bAotICAgIHZpcnR1YWwgdm9pZCBjb2x1bW5JbmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwg
dW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb2x1bW5J
bmRleFJhbmdlKHN0ZDo6cGFpcjx1bnNpZ25lZCwgdW5zaWduZWQ+JiBjb2x1bW5SYW5nZSkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlB
UklBR3JpZENlbGwoUmVuZGVyT2JqZWN0Kik7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlU
YWJsZSogcGFyZW50VGFibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5VGFi
bGUqIHBhcmVudFRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50Um93R3JvdXAoKSBjb25zdDsKICAgICB1bnNpZ25lZCBhcmlhUm93U3BhbldpdGhS
b3dJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiB9OyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oCmluZGV4IDJk
OWFjMjkyZmI5ZGFlODNhMDY1MWQ4NGI1ZWUwYzZjZTgzZjI2ZWQuLjQ0MzZjODAzODY4OTQ4ZDY1
M2E3N2Q1MjRmY2I3YTk5MTY3N2Y0ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaApAQCAtNDMsMTQgKzQzLDE0
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yJik7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZGlzY2xvc2VkQnlSb3coKSBjb25z
dDsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgp
IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlck9iamVjdCgpIG92ZXJy
aWRlOwogICAgIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3coUmVuZGVyT2JqZWN0Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBUklBVHJlZUdyaWRSb3co
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlUYWJsZSogcGFyZW50
VGFibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudE9iamVjdFVuaWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBUklB
VHJlZUdyaWRSb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5VGFibGUqIHBh
cmVudFRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuaAppbmRleCA2OWE3ZTIwYTUzZTIyMDU2Mjk0MWNhMTEy
NDAzMzEwY2U2YzQwY2U2Li4wZGQ1MjdjZTIzZjNlNGVlMjYwNTJiMjY3NjFmOGVlYTFjZDhmYTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJ
bWFnZU1hcExpbmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlJbWFnZU1hcExpbmsuaApAQCAtNDYsMzQgKzQ2LDM0IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldEhUTUxNYXBFbGVtZW50KEhUTUxNYXBFbGVtZW50KiBlbGVtZW50KSB7IG1fbWFwRWxlbWVu
dCA9IGVsZW1lbnQ7IH0gICAgCiAgICAgSFRNTE1hcEVsZW1lbnQqIG1hcEVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX21hcEVsZW1lbnQuZ2V0KCk7IH0KICAgICAKLSAgICB2aXJ0dWFsIE5vZGUq
IG5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2FyZWFFbGVtZW50LmdldCgpOyB9Cisg
ICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXJlYUVsZW1lbnQuZ2V0
KCk7IH0KICAgICAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBFbGVtZW50KiBhbmNob3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRWxl
bWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFVSTCB1cmwoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBhY2Nlc3Np
YmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFN0
cmluZyBzdHJpbmdWYWx1ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzdHJpbmdWYWx1
ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbmFtZUZvck1TQUEoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGF0aCBl
bGVtZW50UGF0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgp
IG92ZXJyaWRlOworICAgIFBhdGggZWxlbWVudFBhdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICBS
ZW5kZXJFbGVtZW50KiBpbWFnZU1hcExpbmtSZW5kZXJlcigpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+Jikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzSW1hZ2VNYXBMaW5rKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BhdGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChWZWN0b3I8
QWNjZXNzaWJpbGl0eVRleHQ+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0ltYWdlTWFwTGluaygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRzUGF0aCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxIVE1MQXJlYUVs
ZW1lbnQ+IG1fYXJlYUVsZW1lbnQ7CiAgICAgUmVmUHRyPEhUTUxNYXBFbGVtZW50PiBtX21hcEVs
ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlM
aXN0LmgKaW5kZXggMTBkNDI3NmY3MGNjMDg3OWNjMmNmNGZlZTkxMTY5NWJkZjE2ODdmYi4uZWQx
Y2U3NWNiMGY5ZGI4OWUzODNiY2VhYWYxMmUwYzE0Y2EzM2JmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuaApAQCAtNDIsMTMgKzQyLDEz
IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3JkZXJlZExpc3QoKSBjb25zdDsKICAgICBib29sIGlz
RGVzY3JpcHRpb25MaXN0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2li
aWxpdHlMaXN0KFJlbmRlck9iamVjdCopOwotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3QoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNMaXN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3Np
YmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlOwogICAgIGJv
b2wgY2hpbGRIYXNQc2V1ZG9WaXNpYmxlTGlzdEl0ZW1NYXJrZXJzKFJlbmRlck9iamVjdCopOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5TGlzdEJveC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
TGlzdEJveC5oCmluZGV4IGFkMmRmMWRhNGJkZTRmMzc2MGRjOTBkYzY3M2QwOWIyY2NiODllNTEu
LjgyOTE5ZDBmN2MxNmI4MmFjNWYyOGFmYTlhZGZlM2JlNzk0YjI5MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0Qm94LmgKQEAgLTM4
LDIxICszOCwyMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5TGlzdEJv
eD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlMaXN0
Qm94KCk7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRy
aWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblNldFNlbGVjdGVkQ2hpbGRyZW5B
dHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hpbGRyZW4o
Y29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMaXN0Qm94Um9s
ZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIExpc3RCb3hSb2xlOyB9CiAgICAgICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rl
ZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCB2aXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RlZENoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciYpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TGlzdEJveChSZW5kZXJPYmplY3Qq
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vzc2liaWxp
dHlPYmplY3QoSFRNTEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGVsZW1lbnRBY2Nlc3NpYmlsaXR5
SGl0VGVzdChjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKICAgICAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaAppbmRleCAzMWM0MzM2NzBhMmU0ODEx
NDFjOWM4Y2QxMGQzNjE3NTgzOWMyOGU5Li4zZDM2NDllMTU4NDhiNjI1MTMxMjJlODYzMGVlMTUz
MmVjNGFkZTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oCkBAIC00NywyOSArNDcsMjkgQEAgcHVibGlj
OgogICAgIAogICAgIHZvaWQgc2V0SFRNTEVsZW1lbnQoSFRNTEVsZW1lbnQqIGVsZW1lbnQpIHsg
bV9vcHRpb25FbGVtZW50ID0gZWxlbWVudDsgfQogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGlzdEJveE9wdGlv
blJvbGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBFbGVt
ZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOb2RlKiBu
b2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vcHRpb25FbGVtZW50OyB9Ci0gICAgdmly
dHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExpc3RCb3hPcHRpb25S
b2xlOyB9CisgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2VsZWN0ZWRPcHRpb25BY3Rp
dmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Tm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3B0aW9uRWxlbWVudDsgfQor
ICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TZXRTZWxl
Y3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0
eUxpc3RCb3hPcHRpb24oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xpc3RCb3hPcHRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVD
aGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0xp
c3RCb3hPcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIEhU
TUxTZWxlY3RFbGVtZW50KiBsaXN0Qm94T3B0aW9uUGFyZW50Tm9kZSgpIGNvbnN0OwogICAgIGlu
dCBsaXN0Qm94T3B0aW9uSW5kZXgoKSBjb25zdDsKICAgICBJbnRSZWN0IGxpc3RCb3hPcHRpb25S
ZWN0KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdEJveE9wdGlvbkFjY2Vz
c2liaWxpdHlPYmplY3QoSFRNTEVsZW1lbnQqKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY29t
cHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNv
bXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBIVE1M
RWxlbWVudCogbV9vcHRpb25FbGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuaAppbmRleCBhMGNl
NzE3OTJhMzc2ZTc4YThkNzgxNzJiOGFiZTgzMjQ0MzQ1YjFmLi5kOGMzMmY4MzdkMzVlNGYxMjI0
ZTI0YWQzZTU5MmY1NTU5NTZiMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9scy5oCkBAIC00MywyMCArNDMs
MjAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4gY3JlYXRl
KFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2wo
KSB7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJy
aWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJv
bChSZW5kZXJPYmplY3QqKTsKICAgICBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBjb250cm9sVHlw
ZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgY29udHJvbFR5cGVOYW1lKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5VGV4dChW
ZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NpYmls
aXR5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+Jikgb3ZlcnJpZGU7CiB9OwogCiAKQEAg
LTY2LDE0ICs2NiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1l
ZGlhVGltZWxpbmUoKSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyB2YWx1ZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShSZW5k
ZXJPYmplY3QqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhVGltZWxpbmUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc01lZGlhVGltZWxpbmUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiAKQEAgLTgzLDE2ICs4MywxNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVhdGUoUmVuZGVy
T2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWlu
ZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gVG9vbGJhclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9s
ZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUb29sYmFyUm9sZTsgfQogCi0g
ICAgdmlydHVhbCBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWNjZXNzaWJpbGl0
eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIoUmVuZGVyT2JqZWN0Kik7CiAgICAg
Ym9vbCBjb250cm9sbGluZ1ZpZGVvRWxlbWVudCgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYg
ZWxlbWVudFR5cGVOYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjb21wdXRlQWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogCkBAIC0xMDIsMTUgKzEw
MiwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBjcmVh
dGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eU1lZGlhVGltZURp
c3BsYXkoKSB7IH0KIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQXBwbGljYXRpb25UaW1lclJvbGU7IH0KKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBcHBsaWNh
dGlvblRpbWVyUm9sZTsgfQogCi0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXko
UmVuZGVyT2JqZWN0Kik7Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sTGFiZWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVB
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01lZGlh
Q29udHJvbExhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
Y29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVu
dUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0LmgKaW5kZXggYzA4MWE3MmY3MTEzN2U3NzJlODJmNWI3ZGRjOGIyZDIwNjUwYzE4Mi4uYTBh
YzQ5MGMzNWFhZGZjMTFjMDQ0ODg0MGQ4OTM0MDU0ZDgyZjBjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCkBAIC0zOSwy
MCArMzksMjAgQEAgY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0IGZpbmFsIDogcHVibGljIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNz
aWJpbGl0eU1lbnVMaXN0PiBjcmVhdGUoUmVuZGVyTWVudUxpc3QqIHJlbmRlcmVyKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0NvbGxhcHNlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBwcmVzcygpIG92ZXJyaWRlOworICAgIGJvb2wgaXNDb2xsYXBzZWQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHByZXNzKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUFj
dGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5kZXgpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFj
Y2Vzc2liaWxpdHlNZW51TGlzdChSZW5kZXJNZW51TGlzdCopOwogCi0gICAgdmlydHVhbCBib29s
IGlzTWVudUxpc3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
b3BVcEJ1dHRvblJvbGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTWVudUxpc3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gUG9wVXBCdXR0b25Sb2xlOyB9CisgICAgYm9vbCBjYW5TZXRGb2N1
c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxk
cmVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVu
Q2hhbmdlZCgpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RP
cHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVM
aXN0T3B0aW9uLmgKaW5kZXggYjY4MTUwMzU1ZTVkZDM5Njk4NGU1NmZkNzA1NDAwOTU0NDdlNTFk
ZS4uYjE5YzQ0OTg1YTgxMzQxN2M1YjVjMGY2ZWMyMGU3MTk2YTRmOTkyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlz
dE9wdGlvbi5oCkBAIC00MiwyMiArNDIsMjIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBBY2Nl
c3NpYmlsaXR5TWVudUxpc3RPcHRpb24oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVMaXN0
T3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNZW51
TGlzdE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
TWVudUxpc3RPcHRpb25Sb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgQWNjZXNzaWJpbGl0eVJvbGUg
cm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWVudUxpc3RPcHRpb25Sb2xlOyB9
CisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgdmlydHVhbCBFbGVtZW50KiBhY3Rpb25FbGVtZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNPZmZTY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3Rl
ZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1NlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG5hbWVGb3JNU0FB
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlkZTsK
KyAgICBib29sIGNhblNldFNlbGVjdGVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
TGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzdHJp
bmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJ
c0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gbV9l
bGVtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaAppbmRleCA2YjRkMjIzYjMyM2JmODkyMWQ4N2Y1
YTEwMzEyYzE2MjIxNGI5OGZhLi5iM2NlM2NhYWNlZmFlNWU2YzU5MDVlZTQ1MTNhNDQ1MmViZTc0
N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlNZW51TGlzdFBvcHVwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oCkBAIC0zOSwyNCArMzksMjQgQEAgY2xhc3MgQWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXAgZmluYWwgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU1vY2tPYmpl
Y3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXA+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9w
dXApOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzT2ZmU2NyZWVuKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUFjdGl2ZU9wdGlvbihpbnQgb3B0aW9uSW5k
ZXgpOwogCiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlNZW51TGlzdFBvcHVwKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNNZW51TGlzdFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZW51TGlzdFBvcHVw
Um9sZTsgfQorICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBNZW51TGlzdFBvcHVwUm9sZTsgfQogCi0gICAgdmlydHVh
bCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwcmVz
cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcHJlc3MoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBBY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24q
IG1lbnVMaXN0T3B0aW9uQWNjZXNzaWJpbGl0eU9iamVjdChIVE1MRWxlbWVudCopIGNvbnN0Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU1vY2tPYmplY3QuaAppbmRleCA1MDU5MzUwYjgxZmM1ZTYxOTRkMjk3Y2I1YTM1MjgyZDYxNTkx
YTYzLi4yYjYzYzg2MWE0MzkwNGYzZjdkNDZlYzM4NWQyOTkyN2E2ZDM3ZGI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVj
dC5oCkBAIC0zNywyMSArMzcsMjEgQEAgcHJvdGVjdGVkOgogcHVibGljOgogICAgIHZpcnR1YWwg
fkFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0KCk7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmVu
dDsgfQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogbV9wYXJlbnQ7CiAKICAgICAvLyBNdXN0
IGJlIGNhbGxlZCB3aGVuIHRoZSBwYXJlbnQgb2JqZWN0IGNsZWFycyBpdHMgY2hpbGRyZW4uCi0g
ICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IG1fcGFyZW50ID0g
bnVsbHB0cjsgfQorICAgIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIG92ZXJyaWRlIHsgbV9wYXJl
bnQgPSBudWxscHRyOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzTW9ja09iamVj
dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNEZXRhY2hlZEZyb21QYXJlbnQoKSBvdmVycmlkZSB7IHJldHVybiAhbV9wYXJlbnQ7IH0K
KyAgICBib29sIGlzTW9ja09iamVjdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGlzRGV0YWNoZWRGcm9tUGFyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4g
IW1fcGFyZW50OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5oCmluZGV4IDdhZWU3NDI5MjBlMmFlMjE1MWJlNWY1MTRiOGNjNjY5NzY2NWUwMjcu
LjYzNWQ1ZGZlMjI2NDQ1ZjIwNDlkZjFhNjE2ZDM5Y2M1NDNmZjY4YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgK
QEAgLTY1LDk1ICs2NSw5NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdD4gY3JlYXRlKE5vZGUqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGluaXQoKSBvdmVycmlkZTsKLQotICAgIHZp
cnR1YWwgYm9vbCBjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNGaWVsZHNldCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0dy
b3VwKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzSGVhZGluZygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0hvdmVyZWQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0ltYWdlQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlz
SW5wdXRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmsoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGlzTWVudUJhcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpc01lbnVCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNNZW51SXRlbSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01lbnVSZWxh
dGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTXVsdGlTZWxlY3RhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0KCkgb3ZlcnJpZGU7CisKKyAgICBib29s
IGNhbnZhc0hhc0ZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBp
c0NvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRmllbGRzZXQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzR3JvdXAoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
SGVhZGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNIb3ZlcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0lt
YWdlQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0lucHV0SW1hZ2UoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTGluaygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNNZW51KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01lbnVCYXIoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTWVudUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNNZW51SXRlbSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNZW51UmVsYXRlZCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVDaGVja2JveE9yUmFkaW8oKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpc05hdGl2ZVRleHRDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcm9ncmVzc0luZGljYXRvcigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDaGVja2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0luZGV0ZXJt
aW5hdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzc2VkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
TmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUGFzc3dvcmRG
aWVsZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhc3N3b3Jk
RmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1By
b2dyZXNzSW5kaWNhdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlYXJjaEZpZWxk
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlOwor
CisgICAgYm9vbCBpc0NoZWNrZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRW5hYmxl
ZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNJbmRldGVybWluYXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1ByZXNzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
UmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUmVxdWlyZWQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzUmVxdWlyZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVy
cmlkZTsKKworICAgIGJvb2wgY2FuU2V0U2VsZWN0ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0Tm9kZShOb2RlKik7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ub2RlOyB9Ci0gICAgdmlydHVhbCBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRGb2N1
c0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGhlYWRpbmdMZXZl
bCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVEZXNjcmlwdGlv
bigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgbWF4VmFsdWVGb3JSYW5nZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgc3RlcFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRSYWRpb0J1
dHRvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0
ZWRUYWJJdGVtKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5QnV0dG9uU3Rh
dGUgY2hlY2tib3hPclJhZGlvVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwg
dW5zaWduZWQgaGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9k
ZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBoZWxwVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgdGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1ZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbG9yVmFsdWUoaW50JiByLCBp
bnQmIGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgYXJpYUxh
YmVsZWRCeUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNB
dHRyaWJ1dGVzUmVxdWlyZWRGb3JJbmNsdXNpb24oKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsKLQotICAgIHZpcnR1
YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIE5vZGUqIG5v
ZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX25vZGU7IH0KKyAgICBEb2N1bWVudCogZG9j
dW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaGVhZGluZ0xldmVsKCkgY29uc3Qgb3ZlcnJpZGU7
CisKKyAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGZs
b2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBtYXhWYWx1ZUZv
clJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgbWluVmFsdWVGb3JSYW5nZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGZsb2F0IHN0ZXBWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBzZWxlY3RlZFJhZGlvQnV0dG9uKCkgb3Zl
cnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2VsZWN0ZWRUYWJJdGVtKCkgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eUJ1dHRvblN0YXRlIGNoZWNrYm94T3JSYWRpb1ZhbHVlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyB0ZXh0VW5kZXJFbGVtZW50KEFjY2Vzc2liaWxpdHlUZXh0
VW5kZXJFbGVtZW50TW9kZSA9IEFjY2Vzc2liaWxpdHlUZXh0VW5kZXJFbGVtZW50TW9kZSgpKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGhlbHBUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
U3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbG9yVmFsdWUoaW50JiByLCBpbnQmIGcsIGludCYgYikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgU3RyaW5nIGFyaWFMYWJlbGVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGhhc0F0dHJpYnV0ZXNSZXF1aXJlZEZvckluY2x1c2lvbigpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlkZTsKKworICAgIEVsZW1l
bnQqIGFjdGlvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBFbGVtZW50KiBtb3VzZUJ1
dHRvbkxpc3RlbmVyKE1vdXNlQnV0dG9uTGlzdGVuZXJSZXN1bHRGaWx0ZXIgPSBFeGNsdWRlQm9k
eUVsZW1lbnQpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtZW51Rm9yTWVudUJ1dHRvbigpIGNvbnN0Owog
ICAgCiAgICAgdmlydHVhbCB2b2lkIGNoYW5nZVZhbHVlQnlQZXJjZW50KGZsb2F0IHBlcmNlbnRD
aGFuZ2UpOwogIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RDaGlsZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbGFzdENo
aWxkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBw
cmV2aW91c1NpYmxpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIG5leHRTaWJsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhpc3RzKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IG92ZXJy
aWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5leHRTaWJsaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURldGFj
aG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3Np
YmlsaXR5Um9sZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRh
Y2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSopIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGluY3JlbWVudCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkZWNyZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluY3JlbWVudCgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGVjcmVtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGVs
ZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChOb2RlKik7CkBAIC0xNjUsMTggKzE2NSwxOCBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBtX2luaXRpYWxpemVkOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX25vZGU7IH0KKyAgICBi
b29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9ub2RlOyB9CiAKICAg
ICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0Q2hpbGQoQWNjZXNzaWJpbGl0eU9iamVjdCosIHVuc2lnbmVkIGluZGV4KSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRD
aGlsZChBY2Nlc3NpYmlsaXR5T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNlcnRDaGls
ZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgdW5zaWduZWQgaW5kZXgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlSb2xlIGFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgQWNjZXNz
aWJpbGl0eVJvbGUgZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdDsKICAgICBBY2Nl
c3NpYmlsaXR5Um9sZSByZW1hcEFyaWFSb2xlRHVlVG9QYXJlbnQoQWNjZXNzaWJpbGl0eVJvbGUp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpc0Rlc2NlbmRhbnRPZkJhcnJlblBhcmVudCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNEZXNjZW5kYW50T2ZCYXJyZW5QYXJlbnQoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIGFsdGVyU2xpZGVyVmFsdWUoYm9vbCBpbmNyZWFzZSk7CiAg
ICAgdm9pZCBjaGFuZ2VWYWx1ZUJ5U3RlcChib29sIGluY3JlYXNlKTsKICAgICAvLyBUaGlzIHJl
dHVybnMgdHJ1ZSBpZiBpdCdzIGZvY3VzYWJsZSBidXQgaXQncyBub3QgY29udGVudCBlZGl0YWJs
ZSBhbmQgaXQncyBub3QgYSBjb250cm9sIG9yIEFSSUEgY29udHJvbC4KQEAgLTE4NSwyMyArMTg1
LDIzIEBAIHByb3RlY3RlZDoKICAgICBTdHJpbmcgYXJpYUFjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgYXJpYUxhYmVsZWRCeUVsZW1lbnRzKFZlY3RvcjxFbGVtZW50
Kj4mIGVsZW1lbnRzKSBjb25zdDsKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9u
Rm9yRWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiAmZWxlbWVudHMpIGNvbnN0OwotICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBib3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMYXlvdXRSZWN0IGJvdW5kaW5nQm94UmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBhcmlhRGVzY3JpYmVkQnlBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBF
bGVtZW50KiBtZW51RWxlbWVudEZvck1lbnVCdXR0b24oKSBjb25zdDsKICAgICBFbGVtZW50KiBt
ZW51SXRlbUVsZW1lbnRGb3JNZW51KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bWVudUJ1dHRvbkZvck1lbnUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
aXNBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzaWJpbGl0eVRleHQoVmVjdG9yPEFjY2Vz
c2liaWxpdHlUZXh0PiYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGFj
Y2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgdGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+
JikgY29uc3Q7CiAgICAgdm9pZCBhbHRlcm5hdGl2ZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlU
ZXh0PiYpIGNvbnN0OwogICAgIHZvaWQgdmlzaWJsZVRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlU
ZXh0PiYpIGNvbnN0OwogICAgIHZvaWQgaGVscFRleHQoVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0
PiYpIGNvbnN0OwogICAgIFN0cmluZyBhbHRlcm5hdGl2ZVRleHRGb3JXZWJBcmVhKCkgY29uc3Q7
CiAgICAgdm9pZCBhcmlhTGFiZWxlZEJ5VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0eVRleHQ+Jikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgdXNlc0FsdFRhZ0ZvclRleHRDb21wdXRhdGlvbigp
IGNvbnN0OwogCiAgICAgTm9kZSogbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmgKaW5k
ZXggZjU4ZjM5NDYwY2YyOGZjMDA0NzM4NGI4MTllZDQzYWY3ZjU4ZTQyYS4uMTZlNTJmNzMwYzQ4
YjFkMzgzYmJlMzMzMmJiYzRmYjc0M2JjZGYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5o
CkBAIC0zOSwxNiArMzksMTYgQEAgcHVibGljOgogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQog
ICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yPiBjcmVhdGUoUmVu
ZGVyTWV0ZXIqKTsKICNlbmRpZgotICAgIHZpcnR1YWwgRWxlbWVudCogZWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFByb2dyZXNzSW5kaWNhdG9yUm9sZTsgfQorICAgIEFjY2Vzc2liaWxp
dHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFByb2dyZXNzSW5kaWNh
dG9yUm9sZTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1Byb2dyZXNzSW5kaWNhdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBmbG9hdCB2
YWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1
ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZv
clJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgdmFsdWVGb3JSYW5nZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGZsb2F0IG1heFZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IoUmVuZGVyUHJvZ3Jlc3MqKTsKICAg
ICBIVE1MUHJvZ3Jlc3NFbGVtZW50KiBwcm9ncmVzc0VsZW1lbnQoKSBjb25zdDsKQEAgLTU4LDcg
KzU4LDcgQEAgcHJpdmF0ZToKICAgICBIVE1MTWV0ZXJFbGVtZW50KiBtZXRlckVsZW1lbnQoKSBj
b25zdDsKICNlbmRpZgogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAppbmRl
eCBlMTgxODY3N2ZlNWYxYzIxOWNkMzgwYjE4NTYxNzgyNDJjNzM1ZjRkLi45YzZhNWEzM2FhYjBi
MTkwMmFhMmMwNzRjYmI3YjhlYjQ2Y2ZlMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaApAQCAtNjEsMTcx
ICs2MSwxNzEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdD4gY3JlYXRlKFJlbmRlck9iamVjdCopOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbml0KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBpbml0KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzQXR0YWNobWVu
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGVVcGxvYWRCdXR0b24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNGaWxlVXBsb2FkQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNPZmZTY3JlZW4oKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1VudmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpc1Zpc2l0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNM
aW5rZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQm9sZEZvbnQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSXRhbGljRm9udCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzU2FtZUZvbnQoUmVuZGVyT2JqZWN0KikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVGb250Q29sb3IoUmVuZGVyT2JqZWN0KikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc1NhbWVTdHlsZShSZW5kZXJPYmplY3Qq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlbGVjdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0ZvY3VzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTG9hZGVkKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc09mZlNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNVbnZpc2l0ZWQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVmlzaXRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNMaW5rZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0JvbGRGb250KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNJdGFsaWNGb250KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBoYXNQbGFpblRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1Nh
bWVGb250KFJlbmRlck9iamVjdCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU2FtZUZv
bnRDb2xvcihSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1NhbWVT
dHlsZShSZW5kZXJPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc1VuZGVybGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0
dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VmFsdWVB
dHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0RXhwYW5k
ZWRBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblNldFRleHRSYW5nZUF0
dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblNldFZhbHVlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFjY2Vzc2libGVOYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QWNjZXNzaWJsZU5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gUHJvdmlkZXMgY29tbW9u
IGxvZ2ljIHVzZWQgYnkgYWxsIGVsZW1lbnRzIHdoZW4gZGV0ZXJtaW5pbmcgaXNJZ25vcmVkLgot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lvbiBkZWZhdWx0T2JqZWN0SW5j
bHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdEluY2x1c2lv
biBkZWZhdWx0T2JqZWN0SW5jbHVzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmly
dHVhbCBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJs
ZSBlc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGF5
b3V0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgZXN0aW1hdGVkTG9hZGluZ1By
b2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0
SWZFeGlzdHMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9ic2VydmFibGVPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
bGlua2VkVUlFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogY29ycmVz
cG9uZGluZ0NvbnRyb2xGb3JMYWJlbEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNvbnRyb2xFbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RDaGls
ZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGxhc3RDaGlsZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGlu
ZygpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG5leHRTaWJsaW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0
SWZFeGlzdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNl
cnZhYmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5rZWRVSUVsZW1lbnRz
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
ZXhwb3Nlc1RpdGxlVUlFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcnJlc3BvbmRpbmdMYWJlbEZvckNv
bnRyb2xFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYU93
bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3ducygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbmFsQ2hpbGRPZkFyaWFSb2xlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0aW9uYWxDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzQVJJ
QU93bnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uYWxDaGlsZE9m
QXJpYVJvbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFyaWFSb2xlSGFzUHJlc2VudGF0
aW9uYWxDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIC8vIFNob3VsZCBiZSBj
YWxsZWQgb24gdGhlIHJvb3QgYWNjZXNzaWJpbGl0eSBvYmplY3QgdG8ga2ljayBvZmYgYSBoaXQg
dGVzdC4KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRU
ZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgRWxlbWVudCogYW5jaG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgYm91bmRpbmdCb3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCkgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBi
b3VuZGluZ0JveFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRS
ZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgY2xpY2tQb2ludCgpIG92ZXJyaWRl
OwogICAgIAogICAgIHZvaWQgc2V0UmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZW5k
ZXJlcjsgfQorICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3JlbmRlcmVyOyB9CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1v
ZGVsT2JqZWN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBEb2N1
bWVudCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlbmRlclZpZXcqIHRvcFJlbmRlcmVyKCkgY29uc3Q7
CiAgICAgUmVuZGVyVGV4dENvbnRyb2wqIHRleHRDb250cm9sKCkgY29uc3Q7CiAgICAgSFRNTExh
YmVsRWxlbWVudCogbGFiZWxFbGVtZW50Q29udGFpbmVyKCkgY29uc3Q7CiAgICAgCi0gICAgdmly
dHVhbCBVUkwgdXJsKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5n
ZSBzZWxlY3RlZFRleHRSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmlzaWJs
ZVNlbGVjdGlvbiBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBzdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGhlbHBU
ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4dFVuZGVyRWxlbWVu
dChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVu
ZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGV4
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHRleHRMZW5ndGgoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgYWNjZXNzS2V5KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVVJMIHVybCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYWluVGV4dFJhbmdl
IHNlbGVjdGVkVGV4dFJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFsdWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgaGVscFRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgdGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1v
ZGUgPSBBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudE1vZGUoKSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgdGV4dExlbmd0aCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzZWxlY3RlZFRleHQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBhY3Rpb25WZXJiKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBXaWRnZXQqIHdpZGdldCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2lkZ2V0KiB3
aWRnZXRGb3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlOworICAgIFdpZGdldCogd2lk
Z2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmll
dygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudExpbmtzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwotICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1
bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOworICAgIEZyYW1lVmlldyogZG9jdW1lbnRG
cmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxk
cmVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3Nh
cnkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2VsZWN0ZWRUZXh0UmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFNlbGVjdGVkUm93cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsK
KyAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50
VHlwZSwgQVhPYmplY3RDYWNoZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0Q2hh
bmdlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0YWJDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRm9jdXNBY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZXRhY2goQWNjZXNzaWJpbGl0eURldGFjaG1lbnRUeXBlLCBBWE9iamVjdENhY2hlKikg
b3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
Q2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0ZWRDaGlsZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2libGVDaGlsZHJlbihBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHRhYkNoaWxkcmVuKEFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRm9jdXNBY3Rp
dmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGROb3RpZnlBY3Rp
dmVEZXNjZW5kYW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBh
Y3RpdmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhh
bmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlQXJpYUV4
cGFuZGVkQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZSh1bnNp
Z25lZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2li
bGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNBUklBRmxvd1RvKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGFyaWFGbG93VG9FbGVtZW50cyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBRGVzY3JpYmVkQnkoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXJpYURlc2NyaWJlZEJ5RWxlbWVudHMoQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQVJJQUNvbnRyb2xzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFyaWFDb250cm9sc0VsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhcmlhSGFzUG9wdXAoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJh
bmdlRm9yTGluZSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBib3VuZHNG
b3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZShjb25z
dCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9y
dHNBUklBRmxvd1RvKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcmlhRmxvd1RvRWxlbWVu
dHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBzdXBwb3J0c0FSSUFEZXNjcmliZWRCeSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXJp
YURlc2NyaWJlZEJ5RWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0FSSUFDb250cm9scygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgYXJpYUNvbnRyb2xzRWxlbWVudHMoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhcmlhSGFzUG9wdXAoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcm9wcGluZygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FSSUFEcmFnZ2luZygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0FSSUFHcmFiYmVkKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRldGVybWluZUFSSUFEcm9wRWZmZWN0cyhWZWN0b3I8U3RyaW5nPiYpIG92
ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNBUklBRHJvcHBpbmcoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHN1cHBvcnRzQVJJQURyYWdnaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0FSSUFHcmFiYmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBUklBRHJvcEVm
ZmVjdHMoVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJbnRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHVuc2lnbmVkIGluZGV4VmFsdWUsIGJvb2wgbGFzdEluZGV4T0spIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgaW50IGluZGV4KGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0
IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChj
b25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiB2aXNp
YmxlUG9zaXRpb25Gb3JJbmRleCh1bnNpZ25lZCBpbmRleFZhbHVlLCBib29sIGxhc3RJbmRleE9L
KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgaW5kZXgoY29uc3QgVmlzaWJsZVBvc2l0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JJbmRleChpbnQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGluZGV4
Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JJbmRleChpbnQpIGNvbnN0
IG92ZXJyaWRlOworICAgIGludCBpbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBsaW5lQnJlYWtz
KFZlY3RvcjxpbnQ+JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQbGFpblRleHRSYW5n
ZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBsYWluVGV4dFJhbmdlIGRvQVhSYW5nZUZvckluZGV4KHVuc2lnbmVkKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIGxpbmVCcmVha3MoVmVjdG9yPGludD4mKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JMaW5lKHVuc2lnbmVkKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBQbGFpblRleHRSYW5nZSBkb0FYUmFuZ2VGb3JJbmRleCh1bnNpZ25lZCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBTdHJpbmcgZG9BWFN0cmluZ0ZvclJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0
IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyBkb0FYU3RyaW5nRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGRvQVhCb3VuZHNGb3JSYW5nZShjb25zdCBQbGFp
blRleHRSYW5nZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ1ZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHN0
cmluZ1JvbGVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgbmFt
ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlv
bkZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nVmFs
dWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FB
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG5hbWVGb3JNU0FBKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGRlc2NyaXB0aW9uRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZUZvck1TQUEoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgU3RyaW5nIHBhc3N3b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFN0cmluZyBwYXNzd29yZEZpZWxkVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0
Kik7CiAgICAgdm9pZCBzZXRSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBt
X3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KICAgICB2b2lkIGFyaWFFbGVtZW50c0Zyb21BdHRyaWJ1
dGUoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0OwogICAgIGJvb2wgbmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbkRpcnR5OyB9Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxlQXJlYSogZ2V0U2Nyb2xsYWJs
ZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsVG8oY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY3JvbGxhYmxlQXJl
YSogZ2V0U2Nyb2xsYWJsZUFyZWFJZlNjcm9sbGFibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHNjcm9sbFRvKGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAg
dmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9yZW5k
ZXJlcjsgfQorICAgIGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFt
X3JlbmRlcmVyOyB9CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFj
Y2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eVJv
bGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKKyAgICBib29sIGNvbXB1
dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZW5kZXJP
YmplY3QqIG1fcmVuZGVyZXI7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGls
ZHJlbihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94
VmlzaWJsZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwogICAgIGJvb2wg
aXNBbGxvd2VkQ2hpbGRPZlRyZWUoKSBjb25zdDsKQEAgLTIzNCw4ICsyMzQsOCBAQCBwcml2YXRl
OgogICAgIFBsYWluVGV4dFJhbmdlIGRvY3VtZW50QmFzZWRTZWxlY3RlZFRleHRSYW5nZSgpIGNv
bnN0OwogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihjb25zdCBQ
b3NpdGlvbiYpIGNvbnN0OwogICAgIGJvb2wgbm9kZUlzVGV4dENvbnRyb2woY29uc3QgTm9kZSop
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVy
cmlkZSB7IG1fY2hpbGRyZW5EaXJ0eSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIFBhdGggZWxlbWVu
dFBhdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5lZWRzVG9VcGRhdGVDaGlsZHJl
bigpIG92ZXJyaWRlIHsgbV9jaGlsZHJlbkRpcnR5ID0gdHJ1ZTsgfQorICAgIFBhdGggZWxlbWVu
dFBhdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBib29sIGlzVGFiSXRlbVNlbGVjdGVk
KCkgY29uc3Q7CiAgICAgTGF5b3V0UmVjdCBjaGVja2JveE9yUmFkaW9SZWN0KCkgY29uc3Q7CkBA
IC0yNDMsNyArMjQzLDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBpbnRl
cm5hbExpbmtFbGVtZW50KCkgY29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNz
aWJpbGl0eUltYWdlTWFwSGl0VGVzdChIVE1MQXJlYUVsZW1lbnQqLCBjb25zdCBJbnRQb2ludCYp
IGNvbnN0OwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlQYXJlbnRGb3JJ
bWFnZU1hcChIVE1MTWFwRWxlbWVudCopIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZWxlbWVudEFjY2Vzc2liaWxp
dHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHJl
bmRlck9iamVjdElzT2JzZXJ2YWJsZShSZW5kZXJPYmplY3QmKSBjb25zdDsKICAgICBSZW5kZXJP
YmplY3QqIHJlbmRlclBhcmVudE9iamVjdCgpIGNvbnN0OwpAQCAtMjU0LDcgKzI1NCw3IEBAIHBy
aXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVNWR1Jvb3QqIHJlbW90ZVNWR1Jvb3RFbGVtZW50KCkg
Y29uc3Q7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmVtb3RlU1ZHRWxlbWVudEhpdFRlc3Qo
Y29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICB2b2lkIG9mZnNldEJvdW5kaW5nQm94Rm9yUmVt
b3RlU1ZHRWxlbWVudChMYXlvdXRSZWN0JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHN1cHBv
cnRzUGF0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNQYXRoKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZEhpZGRlbkNoaWxkcmVuKCk7CiAgICAgdm9pZCBhZGRU
ZXh0RmllbGRDaGlsZHJlbigpOwpAQCAtMjY1LDggKzI2NSw4IEBAIHByaXZhdGU6CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCB1cGRhdGVBdHRhY2htZW50Vmlld1BhcmVudHMoKTsKICNl
bmRpZgotICAgIHZpcnR1YWwgU3RyaW5nIGV4cGFuZGVkVGV4dFZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHN1cHBvcnRzRXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHVwZGF0ZVJvbGVBZnRlckNoaWxkcmVuQ3JlYXRpb24oKTsKICAgICAKICAgICB2b2lk
IGFyaWFTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CkBAIC0yNzQs
NjYgKzI3NCw2NiBAQCBwcml2YXRlOgogICAgIGJvb2wgZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2b2lkIHNldEVsZW1lbnRBdHRyaWJ1dGVW
YWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgYm9vbCk7CiAgICAgCi0gICAgdmlydHVhbCBFU3Bl
YWsgc3BlYWtQcm9wZXJ0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVTcGVhayBzcGVha1Byb3Bl
cnR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcgYXJp
YUxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgYXJpYUxpdmVSZWdpb25SZWxldmFudCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkF0b21pYygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBhcmlhTGl2ZVJlZ2lvbkJ1c3koKSBjb25zdCBvdmVycmlkZTsKKyAgICBj
b25zdCBTdHJpbmcgYXJpYUxpdmVSZWdpb25TdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGFyaWFMaXZlUmVnaW9uQXRvbWljKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBhcmlhTGl2ZVJlZ2lvbkJ1c3koKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBpbmhlcml0c1ByZXNlbnRhdGlvbmFsUm9sZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaW5oZXJpdHNQcmVzZW50YXRpb25hbFJvbGUoKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVO
QUJMRShNQVRITUwpCiAgICAgLy8gQWxsIG1hdGggZWxlbWVudHMgcmV0dXJuIHRydWUgZm9yIGlz
TWF0aEVsZW1lbnQoKS4KLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGcmFjdGlvbigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhGZW5jZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoUm93KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzTWF0aFVuZGVyT3ZlcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFNx
dWFyZVJvb3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoVGV4dCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoT3BlcmF0b3IoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoRmVuY2VPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGlzTWF0aFRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGlzTWF0aFRhYmxlQ2VsbCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBp
c01hdGhNdWx0aXNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01h
dGhUb2tlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01hdGhTY3JpcHRP
YmplY3QoQWNjZXNzaWJpbGl0eU1hdGhTY3JpcHRPYmplY3RUeXBlKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRo
RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRoRnJhY3Rpb24oKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTWF0aEZlbmNlZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNNYXRoU3Vic2NyaXB0U3VwZXJzY3JpcHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTWF0aFJvdygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRoVW5kZXJPdmVy
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01hdGhSb290KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc01hdGhTcXVhcmVSb290KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c01hdGhUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01hdGhOdW1iZXIoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTWF0aE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc01hdGhGZW5jZU9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c01hdGhTZXBhcmF0b3JPcGVyYXRvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRo
SWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRoVGFibGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTWF0aFRhYmxlUm93KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc01hdGhUYWJsZUNlbGwoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTWF0
aE11bHRpc2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01hdGhUb2tlbigpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYXRoU2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoU2NyaXB0T2JqZWN0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01hdGhNdWx0
aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZSkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gR2VuZXJpYyBjb21wb25lbnRzLgotICAgIHZpcnR1
YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aEJhc2VPYmplY3QoKSBvdmVycmlkZTsKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoQmFzZU9iamVjdCgpIG92ZXJyaWRlOwogICAgIAogICAg
IC8vIFJvb3QgY29tcG9uZW50cy4KLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1h
dGhSYWRpY2FuZE9iamVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aFJvb3RJbmRleE9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhSYWRpY2FuZE9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhSb290SW5kZXhPYmplY3QoKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBGcmFj
dGlvbiBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aE51
bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogbWF0aERlbm9taW5hdG9yT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogbWF0aE51bWVyYXRvck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG1hdGhEZW5vbWluYXRvck9iamVjdCgpIG92ZXJyaWRlOwogCiAgICAgLy8gVW5kZXIg
b3ZlciBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbWF0aFVu
ZGVyT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBt
YXRoT3Zlck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhV
bmRlck9iamVjdCgpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG1hdGhPdmVy
T2JqZWN0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gU3Vic2NyaXB0L3N1cGVyc2NyaXB0IGNv
bXBvbmVudHMuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRoU3Vic2NyaXB0
T2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtYXRo
U3VwZXJzY3JpcHRPYmplY3QoKSBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBt
YXRoU3Vic2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gRmVuY2VkIGNv
bXBvbmVudHMuCi0gICAgdmlydHVhbCBTdHJpbmcgbWF0aEZlbmNlZE9wZW5TdHJpbmcoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBtYXRoTGluZVRoaWNrbmVzcygpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBtYXRoRmVuY2VkT3BlblN0cmluZygpIGNvbnN0IG92ZXJy
aWRlOworICAgIFN0cmluZyBtYXRoRmVuY2VkQ2xvc2VTdHJpbmcoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBpbnQgbWF0aExpbmVUaGlja25lc3MoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIE11
bHRpc2NyaXB0cyBjb21wb25lbnRzLgotICAgIHZpcnR1YWwgdm9pZCBtYXRoUHJlc2NyaXB0cyhB
Y2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0UGFpcnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgbWF0aFBvc3RzY3JpcHRzKEFjY2Vzc2liaWxpdHlNYXRoTXVsdGlzY3JpcHRQYWlycyYp
IG92ZXJyaWRlOworICAgIHZvaWQgbWF0aFByZXNjcmlwdHMoQWNjZXNzaWJpbGl0eU1hdGhNdWx0
aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXRoUG9zdHNjcmlwdHMoQWNjZXNz
aWJpbGl0eU1hdGhNdWx0aXNjcmlwdFBhaXJzJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBp
c0lnbm9yZWRFbGVtZW50V2l0aGluTWF0aFRyZWUoKSBjb25zdDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCmluZGV4
IDQ0ZWVkYzU5MWI5MzljN2Q1ZjlhOGM4OWU4NDcxNTYyZGNjZTlkN2IuLjRmZjVlNDdjNjcyMDlh
YzVhNGU1OGQyZGI4M2NlNzM3ZTA5NTNhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNWR1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKQEAgLTQzLDggKzQzLDggQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChSZW5kZXJP
YmplY3QqKTsKICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9i
amVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vzc2liaWxpdHlT
VkdSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2Nl
c3NpYmlsaXR5U1ZHUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG1fcGFyZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaAppbmRleCAwYzQ2
NGJiMDk0YzFiOGUwNmYzMjhkNjA5MDg3MzA0NWM4ODMyOTdlLi4yNjcyMzU0ODg4MmQzNTdhYTg0
NjYzNDhmOTU5M2JmNTk4MjU5ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCkBAIC0zNyw0MyArMzcsNDMgQEAg
Y2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3IGZpbmFsIDog
cHVibGljIEFjY2Vzc2liaWxpdHlPYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXc+IGNyZWF0ZShTY3JvbGxWaWV3Kik7Ci0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTY3Jv
bGxBcmVhUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbEFyZWFSb2xlOyB9CiAgICAgU2Nyb2xsVmlldyogc2Nyb2xs
VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsVmlldzsgfQogCiAgICAgdmlydHVhbCB+QWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2li
aWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSopIG92ZXJyaWRlOworICAgIHZvaWQg
ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhPYmplY3RDYWNoZSopIG92ZXJy
aWRlOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYU9iamVjdCgpIGNvbnN0Owog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KFNjcm9sbFZp
ZXcqKTsKICAgICAKLSAgICB2aXJ0dWFsIFNjcm9sbGFibGVBcmVhKiBnZXRTY3JvbGxhYmxlQXJl
YUlmU2Nyb2xsYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxU
byhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgU2Nyb2xsYWJsZUFyZWEqIGdldFNjcm9sbGFibGVBcmVhSWZTY3Jv
bGxhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBJbnRQb2lu
dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VuYWJsZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlz
QXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2lkZ2V0KiB3aWRnZXRG
b3JBdHRhY2htZW50VmlldygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNBdHRhY2htZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2lkZ2V0KiB3aWRnZXRGb3JBdHRhY2htZW50Vmlldygp
IGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCog
c2Nyb2xsQmFyKEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2hp
bGRyZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vz
c2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNoaWxkcmVuSWZOZWNlc3NhcnkoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNUb1VwZGF0ZUNoaWxkcmVuKCkgb3ZlcnJpZGUgeyBtX2NoaWxkcmVu
RGlydHkgPSB0cnVlOyB9CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyKEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZHJlbigpIG92
ZXJyaWRlOworICAgIHZvaWQgY2xlYXJDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0IEludFBvaW50JikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXROZWVkc1RvVXBkYXRlQ2hpbGRyZW4oKSBvdmVycmlkZSB7IG1fY2hpbGRy
ZW5EaXJ0eSA9IHRydWU7IH0KICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnMoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Rm9jdXNlZChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNG
b2N1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGb2N1c2VkKGJvb2wpIG92ZXJy
aWRlOworICAgIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzRm9jdXNlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgRnJh
bWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0IG92
ZXJyaWRlOworICAgIEZyYW1lVmlldyogZG9jdW1lbnRGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0Q2hpbGQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB3ZWJBcmVhT2JqZWN0KCk7IH0KKyAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gd2ViQXJlYU9iamVj
dCgpOyB9CiAgICAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogYWRkQ2hpbGRTY3JvbGxiYXIoU2Ny
b2xsYmFyKik7CiAgICAgdm9pZCByZW1vdmVDaGlsZFNjcm9sbGJhcihBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kik7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVNjcm9sbGJhci5oCmluZGV4IDJhZjNjOTUzNzA3NThlZTY5OGVlYWQ1MjJlNDEy
ZTgzMGM3YTQ0ZWUuLjc2YzY1ODczNDlhMDVlZmIzOTcyOTVlMDE0MGJmZGM3ZDc5YTZjMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9s
bGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNj
cm9sbGJhci5oCkBAIC00NCwyMCArNDQsMjAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyKFNjcm9sbGJhciopOwogCi0gICAgdmlydHVhbCBi
b29sIGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBjYW5TZXROdW1lcmljVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGNhblNldE51bWVyaWNWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAot
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU2Nyb2xsQmFyUm9sZTsgfQotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBEb2N1bWVu
dCogZG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbmFibGVk
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsQmFyUm9sZTsgfQorICAgIEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIERvY3VtZW50KiBk
b2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgCiAgICAgLy8gQXNzdW1lcyBmbG9hdCBbMC4uMV0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgdmFsdWVGb3JS
YW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWUoZmxvYXQpIG92ZXJyaWRl
OworICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0
cjxTY3JvbGxiYXI+IG1fc2Nyb2xsYmFyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNsaWRlci5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmgKaW5kZXggMWYyZTU3M2M5ZWJlNzEwZDBj
ZGY3MWRmNmVlZmZlZjFkN2MyNmMwMy4uZGQ2ZmU1NjRlNzA0MzBkZjNmYTZlMTRlMjkyZjg2NTI4
ZGU4NTczNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U2xpZGVyLmgKQEAgLTQ2LDIzICs0NiwyMyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6
CiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3Qg
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBlbGVt
ZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gU2xpZGVyUm9sZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJ
bnB1dFNsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNsaWRl
clJvbGU7IH0KKyAgICBib29sIGlzU2xpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNJbnB1dFNsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29s
IGNhblNldFZhbHVlQXR0cmlidXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgY2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCB2YWx1ZUZvclJh
bmdlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBtYXhWYWx1ZUZvclJhbmdl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBtaW5WYWx1ZUZvclJhbmdlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOworICAgIGZsb2F0IHZhbHVlRm9yUmFuZ2UoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBmbG9hdCBtYXhWYWx1ZUZvclJhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQg
bWluVmFsdWVGb3JSYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogY2xhc3MgQWNjZXNz
aWJpbGl0eVNsaWRlclRodW1iIGZpbmFsIDogcHVibGljIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0
IHsKQEAgLTcwLDE0ICs3MCwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmls
aXR5U2xpZGVyVGh1bWI+IGNyZWF0ZSgpOwogICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlTbGlk
ZXJUaHVtYigpIHsgfQogCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTbGlkZXJUaHVtYlJvbGU7IH0KLSAgICB2aXJ0dWFs
IExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBY2Nlc3NpYmls
aXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTbGlkZXJUaHVtYlJv
bGU7IH0KKyAgICBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVNsaWRlclRodW1iKCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNTbGlkZXJUaHVtYigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzU2xpZGVyVGh1bWIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oCmluZGV4IGUwY2I2
YzM5YWQyNWJkZmE2NTMyNWI2YzRmMjgwMWI5NjRmYzM3YTAuLjdiZTg5ZjIzMjNjMWRkYjU4MDEw
ZjhjMTUyZWNhZGIzYTVlNDY0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTcGluQnV0dG9uLmgKQEAgLTQ3LDExICs0NywxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEFjY2Vzc2liaWxpdHlTcGluQnV0dG9uKCk7CiAKLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFNwaW5CdXR0b25Sb2xlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNOYXRpdmVT
cGluQnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVt
ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNwaW5CdXR0b25Sb2xlOyB9CisgICAgYm9vbCBp
c1NwaW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBp
c05hdGl2ZVNwaW5CdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
dm9pZCBhZGRDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIExheW91dFJlY3QgZWxlbWVudFJlY3Qo
KSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBTcGluQnV0dG9uRWxlbWVudCogbV9zcGluQnV0
dG9uRWxlbWVudDsKIH07IApAQCAtNjcsMTAgKzY3LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0KCk7CiAgICAgCi0gICAgdmlydHVhbCBib29s
IHByZXNzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFs
dWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCdXR0b25Sb2xlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzU3BpbkJ1dHRvblBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBMYXlvdXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBwcmVzcygpIG92ZXJyaWRlOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJ1dHRvblJvbGU7IH0KKyAgICBib29sIGlzU3BpbkJ1
dHRvblBhcnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgTGF5b3V0UmVj
dCBlbGVtZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgbV9pc0luY3Jl
bWVudG9yIDogMTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGUuaAppbmRleCAyNTU3MjlkYzVjMzYzZWFmM2Y0ZjM5ZDg0MDYzZmVkZDRh
NzY3NmUwLi4wYWExY2U3N2JhMzYwYjU2MzllMTkxZDgyNjM2ZWFjYzYxZmJjZDc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmgKQEAg
LTQzLDEzICs0MywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3NpYmlsaXR5VGFi
bGU+IGNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5VGFi
bGUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbml0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCBpbml0KCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIEFjY2Vzc2liaWxpdHlSb2xl
IHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgYm9vbCBpc0Fy
aWFUYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ2hpbGRyZW4o
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGVhckNoaWxkcmVuKCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgCiAgICAgY29uc3QgQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjb2x1bW5zKCk7CiAgICAgY29uc3QgQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJiByb3dzKCk7CkBAIC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3RlZFJvd3MoKSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHVuc2lnbmVkIGNvbHVtbkNvdW50KCk7CiAgICAgdW5zaWduZWQgcm93Q291bnQoKTsKLSAg
ICB2aXJ0dWFsIGludCB0YWJsZUxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50
IHRhYmxlTGV2ZWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICAKLSAgICB2aXJ0dWFsIFN0
cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFN0cmluZyB0aXRsZSgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwogICAgIAogICAgIC8vIGFsbCB0aGUgY2VsbHMgaW4gdGhlIHRh
YmxlCiAgICAgdm9pZCBjZWxscyhBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTkw
LDE1ICs5MCwxNSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBoYXNBUklBUm9sZSgpIGNvbnN0Owog
CiAgICAgLy8gaXNUYWJsZSBpcyB3aGV0aGVyIGl0J3MgYW4gQWNjZXNzaWJpbGl0eVRhYmxlIG9i
amVjdC4KLSAgICB2aXJ0dWFsIGJvb2wgaXNUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzVGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAgICAgLy8gaXNEYXRhVGFibGUgaXMgd2hldGhlciBpdCBpcyBleHBv
c2VkIGFzIGFuIEFjY2Vzc2liaWxpdHlUYWJsZSBiZWNhdXNlIHRoZSBoZXVyaXN0aWMKICAgICAv
LyB0aGluayB0aGlzICJsb29rcyIgbGlrZSBhIGRhdGEtYmFzZWQgdGFibGUgKGluc3RlYWQgb2Yg
YSB0YWJsZSB1c2VkIGZvciBsYXlvdXQpLgotICAgIHZpcnR1YWwgYm9vbCBpc0RhdGFUYWJsZSgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBjb21wdXRlQWNjZXNzaWJp
bGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgaXNEYXRhVGFi
bGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5
SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgdmlydHVh
bCBib29sIGNvbXB1dGVJc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKSBjb25z
dDsKLSAgICB2aXJ0dWFsIHZvaWQgdGl0bGVFbGVtZW50VGV4dChWZWN0b3I8QWNjZXNzaWJpbGl0
eVRleHQ+JikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCB0aXRsZUVsZW1lbnRUZXh0
KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4dD4mKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICBI
VE1MVGFibGVFbGVtZW50KiB0YWJsZUVsZW1lbnQoKSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxk
cmVuRnJvbVNlY3Rpb24oUmVuZGVyVGFibGVTZWN0aW9uKiwgdW5zaWduZWQmIG1heENvbHVtbkNv
dW50KTsKICAgICB2b2lkIGFkZFRhYmxlQ2VsbENoaWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBI
YXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1bnNpZ25lZCYgY29s
dW1uQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlUYWJsZUNlbGwuaAppbmRleCA4NWM0MTgyNTI3OTIxMGFiNDgwNjQxNjFiZGExNzY3
NzZmNjFhNzE0Li41ZjJkZjNjODNiOWYzYWQyZTBmZmU1NzQ2MGZiYTg4NWZhYzcxMzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbCgpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2Vs
bCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgaXNUYWJsZUNlbGwoKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKICAgICBib29sIGlzVGFibGVIZWFkZXJDZWxsKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0NvbHVtbkhlYWRlckNlbGwoKSBjb25zdDsKICAgICBib29sIGlzUm93SGVhZGVyQ2Vs
bCgpIGNvbnN0OwpAQCAtNjUsMTggKzY1LDE4IEBAIHByb3RlY3RlZDoKIAogICAgIEFjY2Vzc2li
aWxpdHlUYWJsZVJvdyogcGFyZW50Um93KCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmls
aXR5VGFibGUqIHBhcmVudFRhYmxlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIEFj
Y2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGUgZmlu
YWw7CiAKICAgICBpbnQgbV9yb3dJbmRleDsKICAgICBpbnQgbV9hcmlhQ29sSW5kZXhGcm9tUm93
OwogCiBwcml2YXRlOgogICAgIC8vIElmIGEgdGFibGUgY2VsbCBpcyBub3QgZXhwb3NlZCBhcyBh
IHRhYmxlIGNlbGwsIGEgVEggZWxlbWVudCBjYW4gc2VydmUgYXMgaXRzIHRpdGxlIFVJIGVsZW1l
bnQuCi0gICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBTdHJpbmcgZXhwYW5kZWRUZXh0VmFsdWUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRpdGxlVUlFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBleHBvc2VzVGl0bGVVSUVsZW1lbnQo
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjb21wdXRl
QWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFN0cmlu
ZyBleHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgc3Vw
cG9ydHNFeHBhbmRlZFRleHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgYm9v
bCBpc1RhYmxlQ2VsbEluU2FtZVJvd0dyb3VwKEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqKTsKICAg
ICBib29sIGlzVGFibGVDZWxsSW5TYW1lQ29sR3JvdXAoQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uLmgKaW5kZXggNWI2ZWI3YjFjZjgyMjY0MjgwNmM4YjI5Y2Q3ZjNlYjEyYmI1
ZTljNC4uOTlkMTU4ZGFkMzJjZGJjMGNhMmNiY2I0Y2FiNmJkMWQ3YjUwYmFlNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbi5oCkBAIC00NCwyMiArNDQsMjIgQEAgcHVibGljOgogICAgIAogICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGhlYWRlck9iamVjdCgpOwogICAgICAgICAKLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbHVtblJvbGU7
IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBDb2x1bW5Sb2xlOyB9CiAgICAgCiAgICAgdm9pZCBzZXRDb2x1bW5JbmRleChpbnQgY29s
dW1uSW5kZXgpIHsgbV9jb2x1bW5JbmRleCA9IGNvbHVtbkluZGV4OyB9CiAgICAgaW50IGNvbHVt
bkluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5JbmRleDsgfSAgICAKICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxk
cmVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQYXJlbnQoQWNjZXNzaWJpbGl0eU9iamVjdCop
IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBlbGVtZW50UmVjdCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIExheW91dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKICAgICAKIHByaXZhdGU6CiAgICAgQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKCk7CiAgICAg
CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogaGVhZGVyT2JqZWN0Rm9yU2VjdGlvbihSZW5kZXJU
YWJsZVNlY3Rpb24qLCBib29sIHRoVGFnUmVxdWlyZWQpOwotICAgIHZpcnR1YWwgYm9vbCBjb21w
dXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBpc1RhYmxlQ29sdW1uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzVGFibGVDb2x1bW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICB1bnNpZ25lZCBtX2NvbHVtbkluZGV4OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRh
aW5lci5oCmluZGV4IGU0Y2U3NDA2ODMxNTBkYzVmMzg2YmUxODczMGM4ODk2MGM1NzkyOTUuLmM5
NmNhNjc2OWI1ODM2YWQxOGZlZWRiNDY2ZDJmN2IzNDJjYWEyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVI
ZWFkZXJDb250YWluZXIuaApAQCAtNDAsMTYgKzQwLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPEFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lcj4gY3JlYXRlKCk7CiAgICAgdmly
dHVhbCB+QWNjZXNzaWJpbGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyKCk7CiAgICAgCi0gICAgdmly
dHVhbCBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU7IH0KKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xl
VmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBUYWJsZUhlYWRlckNvbnRhaW5lclJvbGU7
IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2
b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGVsZW1lbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVj
dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5VGFi
bGVIZWFkZXJDb250YWluZXIoKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZUFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbXB1dGVBY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRSZWN0IG1f
aGVhZGVyUmVjdDsKIH07IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlUm93LmgKaW5kZXggODg3YzIxM2M3ODY0MzBhOWZiODY0OTYzNmEw
MGQ0M2VhOWRkMjBhNi4uNTk3ZGRlZjI2OTQ5NGNmYjlkM2ZiM2Q0MWM0MTVhYjA4MmVkMjg3NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFi
bGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlU
YWJsZVJvdy5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAvLyBpbiB0aGUgcm93LCBi
dXQgdGhlaXIgY29sL3JvdyBzcGFucyBvdmVybGFwIGludG8gaXQKICAgICB2b2lkIGFwcGVuZENo
aWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGRyZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkcmVuKCkgb3ZlcnJpZGU7CiAgICAg
CiAgICAgaW50IGFyaWFDb2x1bW5JbmRleCgpIGNvbnN0OwogICAgIGludCBhcmlhUm93SW5kZXgo
KSBjb25zdDsKQEAgLTU5LDEyICs1OSwxMiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQWNjZXNzaWJpbGl0eVRhYmxlUm93KFJlbmRlck9iamVjdCopOwogCi0gICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpIG92ZXJyaWRl
IGZpbmFsOworICAgIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xl
KCkgb3ZlcnJpZGUgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzVGFibGVS
b3coKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9ic2VydmFibGVPYmplY3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IGJvb2wgY29tcHV0ZUFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICBib29sIGlzVGFibGVSb3coKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxlT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgYm9vbCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwogCiAgICAgaW50IG1fcm93SW5kZXg7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZS5oCmluZGV4IDJlNjlmZTljZDkzNWQ4ZmY4
NDc2MTBiYjcxNmZkYzQ5OWU1ZDgyMzUuLjg3NjlhYjEwOTYyNzU0YjkzYTk1ZGM4YzI4YTQzZmM2
OTJkODg3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUcmVlLmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IEFjY2Vzc2liaWxpdHlUcmVlKFJlbmRlck9iamVjdCopOwotICAgIHZpcnR1YWwgYm9v
bCBjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVy
cmlkZTsKKyAgICBib29sIGNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUo
KSBvdmVycmlkZTsKICAgICBib29sIGlzVHJlZVZhbGlkKCkgY29uc3Q7CiB9OwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0
ZW0uaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRyZWVJdGVt
LmgKaW5kZXggZjZlMzMyYWQ4ZjdjZDJhMGY3M2E2ODk0OGZjOWJkNmI0YTU2ZDU5MC4uZDhjNGVm
ZDFjOWZkNzVlMmNiOTJlMzdjYjgwYzg0MTE4OWQ4ODEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VHJlZUl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUcmVlSXRlbS5oCkBAIC0zOCwxMSAr
MzgsMTEgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVRyZWVJdGVtPiBj
cmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVRyZWVJdGVt
KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICFtX2lzVHJlZUl0ZW1WYWxpZDsgfQorICAgIGJvb2wgc2hvdWxk
SWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2lzVHJlZUl0
ZW1WYWxpZDsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlUcmVlSXRl
bShSZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWlu
ZUFjY2Vzc2liaWxpdHlSb2xlKCkgb3ZlcnJpZGU7CisgICAgQWNjZXNzaWJpbGl0eVJvbGUgZGV0
ZXJtaW5lQWNjZXNzaWJpbGl0eVJvbGUoKSBvdmVycmlkZTsKICAgICBib29sIG1faXNUcmVlSXRl
bVZhbGlkOwogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvRE9NT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9ET01PYmplY3RDYWNoZS5jcHAKaW5kZXggYmMwZTBhOTJhYWU3NDJkNjU2Yjk2NTVmMTdhMDEz
NTNiYmJmNGMxZS4uMTM5OTVhNWM1Y2ZkZmJhNjA0YmQzODlmNzRjMjA1NDg1Yjg4MzQ0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9ET01PYmplY3RDYWNoZS5j
cHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBwcml2YXRlOgogICAgICAgICBXZWJDb3JlOjpET01XaW5k
b3cqIGRvbVdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fZG9tV2luZG93OyB9CiAKICAgICBwcml2
YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFt
ZSgpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgd2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFt
ZSgpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBET01XaW5k
b3dQcm9wZXJ0eSBmaXJzdCwgYW5kIHRoZW4gbm90aWZ5IHRoZSBGcmFtZSBvYnNlcnZlci4KICAg
ICAgICAgICAgIERPTVdpbmRvd1Byb3BlcnR5Ojp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZy
YW1lKCk7CkBAIC0xNjgsMTIgKzE2OCwxMiBAQCBwcml2YXRlOgogICAgICAgICB9KTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFjaFBhZ2UoKSBvdmVycmlkZQorICAgIHZvaWQg
d2lsbERldGFjaFBhZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY2xlYXIoKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVEZXN0cm95ZWQoKSBvdmVycmlkZQorICAgIHZvaWQg
ZnJhbWVEZXN0cm95ZWQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgY2xlYXIoKTsKICAgICAg
ICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24u
aAppbmRleCA1MzY2YTUzOGM1NDFhOTM5MThiOTkxYmNiNzdmZGM4YzI4MmU3NDQ3Li43ODI5Mjkw
Nzc5OGUyN2ZlZjZlZTlhYmY1M2E4ZGFjZjQ4OTU5MTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3ROb2RlRmlsdGVyQ29uZGl0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0Tm9kZUZpbHRlckNvbmRpdGlv
bi5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgR09iamVjdE5vZGVGaWx0ZXJDb25kaXRpb24oZmlsdGVyKSk7CiAgICAgfQogCi0gICAgdmly
dHVhbCBzaG9ydCBhY2NlcHROb2RlKE5vZGUqKSBjb25zdCBvdmVycmlkZTsKKyAgICBzaG9ydCBh
Y2NlcHROb2RlKE5vZGUqKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBHT2JqZWN0
Tm9kZUZpbHRlckNvbmRpdGlvbihXZWJLaXRET01Ob2RlRmlsdGVyKiBmaWx0ZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobUJ1aWxkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5o
CmluZGV4IDNlOGFlMjVhMmIyYzY2MzE3MWZkYjA5MDBlZTRmY2IwYWE5MTkxOGYuLmQ1MzdiNGM2
NzcxYjk3YTEwNzgyYTQ1ZmU5OWQ4YWE4NWIwMGVlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtQnVpbGRlci5oCkBAIC00NCwxMiAr
NDQsMTIgQEAgcHVibGljOgogCiAgICAgSlNDOjpKU09iamVjdCogcmVzdWx0KCkgY29uc3QgeyBy
ZXR1cm4gbV9kaWN0aW9uYXJ5OyB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXI+IGNyZWF0ZUVtcHR5Q2xvbmUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25C
dWlsZGVyPiBjcmVhdGVFbXB0eUNsb25lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZChjb25zdCBjaGFyKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGFkZChjb25zdCBjaGFyKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGFkZChjb25zdCBjaGFyKiwgY29uc3QgQ3J5cHRvQWxnb3JpdGht
RGVzY3JpcHRpb25CdWlsZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGQoY29uc3QgY2hhcios
IHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZChjb25zdCBjaGFyKiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGQoY29uc3QgY2hhciosIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkKGNvbnN0IGNoYXIqLCBjb25zdCBDcnlw
dG9BbGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBKU0M6OkV4ZWNTdGF0ZSogbV9leGVjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaAppbmRleCBlMTEyNjc1NDZh
ZWM0MjdkYzUyNDE1MWQ5MTA0YWYyZTg5OWJiYzNkLi5iN2U2Mjc1MGE4NjIzOWQwMzM4N2IxOTA5
YjE0OTE0ZDY3ZGU0NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suaApAQCAtNTMsMTIgKzUzLDEyIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIHNlcmlhbGl6ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgQ3J5cHRvS2V5Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlY29uY2ls
ZUFsZ29yaXRobShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiYsIHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgcmVjb25jaWxlQWxnb3JpdGhtKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+Jiwg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JikgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb25jaWxlVXNhZ2VzKENyeXB0b0tleVVzYWdlJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZUV4dHJhY3RhYmxlKGJv
b2wmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlV
c2FnZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVjb25jaWxlRXh0cmFjdGFibGUoYm9v
bCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRv
S2V5RGF0YT4ga2V5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9LZXlEYXRhPiBrZXlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGtleVNp
emVJc1ZhbGlkKHNpemVfdCBzaXplSW5CaXRzKSBjb25zdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvS2V5RGF0YT4ga2V5RGF0YU9jdGV0U2VxdWVuY2UoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmgKaW5kZXggZDM3MWFmMzRlN2IwZDI4
ODAxNzI2MDhkYjQ4NzMzMTY0MmQ1MTdmMi4uYWE3MWNiYWYzODhmMmFiMTc4MDllNWE5YTdjYWVj
MzA5ZGM5NTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVu
dExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SlNFdmVudExp
c3RlbmVyKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3Rl
bmVyJiBvdGhlcikgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBvdmVycmlkZTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2
ZW50IGxpc3RlbmVyIHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwg
bGlrZSAib25sb2FkIiBvciAib25jbGljayIuCiAgICAgYm9vbCBpc0F0dHJpYnV0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBdHRyaWJ1dGU7IH0KQEAgLTYzLDEyICs2MywxMiBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5jdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2l0
SlNGdW5jdGlvbihKU0M6OlNsb3RWaXNpdG9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRKU0Z1
bmN0aW9uKEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAgICBib29sIHZpcnR1YWxpc0F0
dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgSlNFdmVudExpc3Rl
bmVyKEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBib29s
IGlzQXR0cmlidXRlLCBET01XcmFwcGVyV29ybGQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICBtdXRhYmxlIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0PiBtX2pzRnVu
Y3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVu
dExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3Rl
bmVyLmgKaW5kZXggYjEzNjBhYzMxYThlN2NhNDcxMzFkMjRmODA0MTA0ZDEzMjYyMTJhMy4uNjE0
OGFlYjIwOGY4NjM0ZWMxZjA2ZDA2NzEyMGE4Njg1YTM3ZWFjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaApAQCAtNDYsOCArNDYsOCBA
QCBwcml2YXRlOgogCiAgICAgSlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYg
Y29kZSwgQ29udGFpbmVyTm9kZSosIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBUZXh0
UG9zaXRpb24mLCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQmIGlzb2xh
dGVkV29ybGQpOwogCi0gICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBpbml0aWFsaXplSlNGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHdhc0NyZWF0ZWRGcm9tTWFya3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIEpTQzo6SlNPYmplY3QqIGluaXRpYWxpemVKU0Z1bmN0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHdhc0NyZWF0ZWRGcm9tTWFy
a3VwKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgbXV0YWJsZSBTdHJp
bmcgbV9mdW5jdGlvbk5hbWU7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9ldmVudFBhcmFtZXRlck5h
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2Fs
bGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5o
CmluZGV4IGNiNzEzZjc5ODA0YWQyODBiZGE5ZWQ4ZDQwYThjNTQ4YWVkNDE0ZDMuLjU3ZTU5NDk2
N2ViYWU0ZGQ1ZGY0ZTVhYzlhNjlhODNmNjc4ZmQ0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5oCkBAIC00Niw5ICs0Niw5IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfkpTTXV0YXRpb25DYWxsYmFjaygpOwogCi0gICAgdmlydHVhbCB2
b2lkIGNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4+JiwgTXV0YXRpb25P
YnNlcnZlciopIG92ZXJyaWRlOworICAgIHZvaWQgY2FsbChjb25zdCBWZWN0b3I8UmVmUHRyPE11
dGF0aW9uUmVjb3JkPj4mLCBNdXRhdGlvbk9ic2VydmVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlv
bk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogcHJpdmF0ZToKICAgICBK
U011dGF0aW9uQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlVHlw
ZWRBcnJheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlci5oCmluZGV4IGNlOWYwYTQ2MjM5MDI0MTAzYzY3NDI3YjEwN2Iw
YjZhZDUwODJlNGQuLjg2ZmEyMzIyNzRmNzFmM2RhNjU4NjgxYTcxNTc4MTc1NjkyN2U2NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oCkBAIC00MCwxNiArNDAsMTYgQEAgcHVibGljOgogICAgIFdlYkNvcmVU
eXBlZEFycmF5Q29udHJvbGxlcigpOwogICAgIHZpcnR1YWwgfldlYkNvcmVUeXBlZEFycmF5Q29u
dHJvbGxlcigpOwogICAgIAotICAgIHZpcnR1YWwgSlNDOjpKU0FycmF5QnVmZmVyKiB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJXcmFwcGVyKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBBcnJheUJ1ZmZlciosIEpTQzo6SlNBcnJheUJ1ZmZlciopIG92ZXJyaWRlOworICAg
IEpTQzo6SlNBcnJheUJ1ZmZlciogdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkFycmF5QnVmZmVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3Rlcldy
YXBwZXIoSlNDOjpKU0dsb2JhbE9iamVjdCosIEFycmF5QnVmZmVyKiwgSlNDOjpKU0FycmF5QnVm
ZmVyKikgb3ZlcnJpZGU7CiAKICAgICBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVy
KCkgeyByZXR1cm4gJm1fb3duZXI7IH0KIAogcHJpdmF0ZToKICAgICBjbGFzcyBKU0FycmF5QnVm
ZmVyT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKSBvdmVycmlk
ZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqIGNvbnRleHQpIG92ZXJyaWRlOworICAgICAgICBib29sIGlzUmVhY2hhYmxlRnJv
bU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpT
Qzo6U2xvdFZpc2l0b3ImKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmaW5hbGl6ZShKU0M6Okhh
bmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKICAgICB9OwogCiAg
ICAgSlNBcnJheUJ1ZmZlck93bmVyIG1fb3duZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9jX2NsYXNzLmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2NsYXNzLmgK
aW5kZXggMzIxYzg3MjkyNjQ1ZGEwODdiMzcxMDQwN2Y1MDI3OTkwNGI3NGY5NC4uZDRiNmIwZWU2
ZWEzMmRhNzQ5M2E2YTVjZTY0Yjg3ZTU5YjA1MzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19jbGFzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfY2xh
c3MuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENDbGFzcyogY2xhc3NG
b3JJc0EoTlBDbGFzcyopOwogICAgIHZpcnR1YWwgfkNDbGFzcygpOwogCi0gICAgdmlydHVhbCBN
ZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2UqKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIEZpZWxkKiBmaWVsZE5hbWVkKFByb3BlcnR5TmFtZSwgSW5zdGFuY2Uq
KSBjb25zdCBvdmVycmlkZTsKKyAgICBNZXRob2QqIG1ldGhvZE5hbWVkKFByb3BlcnR5TmFtZSwg
SW5zdGFuY2UqKSBjb25zdCBvdmVycmlkZTsKKyAgICBGaWVsZCogZmllbGROYW1lZChQcm9wZXJ0
eU5hbWUsIEluc3RhbmNlKikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgTlBDbGFz
cyogbV9pc2E7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmgKaW5kZXggNWRiZTk0NjZm
YzAzMTZkZmZlNmYzYzFhZDBmN2YxMWUyY2JhZmQwNy4uZWU4NjYyODBlZTMwMmE2ZDU3MjJlZGE5
Y2ExYzc0MjVmMTE0MjU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuaApAQCAt
NTIsMjAgKzUyLDIwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNJbnN0YW5jZSgpOwogCi0g
ICAgdmlydHVhbCBDbGFzcyAqZ2V0Q2xhc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBDbGFzcyAq
Z2V0Q2xhc3MoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSlNWYWx1ZSB2YWx1ZU9m
KEV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSlNWYWx1ZSBkZWZhdWx0
VmFsdWUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgSlNWYWx1ZSB2YWx1ZU9mKEV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOworICAgIEpT
VmFsdWUgZGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSosIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VNZXRo
b2QoRXhlY1N0YXRlKiwgUnVudGltZU1ldGhvZCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0ludm9rZURlZmF1bHRNZXRob2QoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKSBvdmVycmlkZTsKKyAg
ICBKU1ZhbHVlIGdldE1ldGhvZChFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUpIG92ZXJyaWRlOwor
ICAgIEpTVmFsdWUgaW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSosIFJ1bnRpbWVNZXRob2QqKSBvdmVy
cmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW52b2tlRGVmYXVsdE1ldGhvZCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIEpTVmFsdWUgaW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnN0cnVjdCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgSlNWYWx1ZSBpbnZva2VDb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNDb25zdHJ1Y3QoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBKU1ZhbHVlIGludm9rZUNvbnN0cnVjdChFeGVjU3RhdGUqLCBjb25zdCBB
cmdMaXN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0UHJv
cGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpIG92ZXJyaWRlOwogCiAg
ICAgSlNWYWx1ZSBzdHJpbmdWYWx1ZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICBKU1ZhbHVlIG51
bWJlclZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIENJbnN0YW5jZShOUE9iamVjdCosIFJlZlB0cjxSb290T2JqZWN0PiYmKTsK
IAotICAgIHZpcnR1YWwgUnVudGltZU9iamVjdCogbmV3UnVudGltZU9iamVjdChFeGVjU3RhdGUq
KSBvdmVycmlkZTsKKyAgICBSdW50aW1lT2JqZWN0KiBuZXdSdW50aW1lT2JqZWN0KEV4ZWNTdGF0
ZSopIG92ZXJyaWRlOwogICAgIGJvb2wgdG9KU1ByaW1pdGl2ZShFeGVjU3RhdGUqLCBjb25zdCBj
aGFyKiwgSlNWYWx1ZSYpIGNvbnN0OwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfcnVudGltZS5oIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19ydW50aW1lLmgK
aW5kZXggMTIwMTMxNmUxMTBhNGM4YTc0NjM5NTZlOTQzMjg5NGQxNmJkMDJhZi4uMTA2NzJlZDk4
MWJmOWI2ODQ4ZjU2ZDMzMzM0NzJjZWJjN2VhZDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYnJpZGdlL2MvY19ydW50aW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19y
dW50aW1lLmgKQEAgLTM4LDggKzM4LDggQEAgY2xhc3MgQ0ZpZWxkIDogcHVibGljIEZpZWxkIHsK
IHB1YmxpYzoKICAgICBDRmllbGQoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9maWVsZElkZW50aWZp
ZXIoaWRlbnQpIHsgfQogCi0gICAgdmlydHVhbCBKU1ZhbHVlIHZhbHVlRnJvbUluc3RhbmNlKEV4
ZWNTdGF0ZSosIGNvbnN0IEluc3RhbmNlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlVG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFs
dWUpIGNvbnN0IG92ZXJyaWRlOworICAgIEpTVmFsdWUgdmFsdWVGcm9tSW5zdGFuY2UoRXhlY1N0
YXRlKiwgY29uc3QgSW5zdGFuY2UqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVl
VG9JbnN0YW5jZShFeGVjU3RhdGUqLCBjb25zdCBJbnN0YW5jZSosIEpTVmFsdWUpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgTlBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBf
ZmllbGRJZGVudGlmaWVyOyB9CiAKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIENNZXRo
b2QoTlBJZGVudGlmaWVyIGlkZW50KSA6IF9tZXRob2RJZGVudGlmaWVyKGlkZW50KSB7IH0KIAog
ICAgIE5QSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gX21ldGhvZElkZW50
aWZpZXI7IH0KLSAgICB2aXJ0dWFsIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorICAgIGludCBudW1QYXJhbWV0ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gMDsgfQogCiBwcml2YXRlOgogICAgIE5QSWRlbnRpZmllciBfbWV0aG9kSWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuaAppbmRleCA0MTM4NWE2ZTk4NGZlZWI0
N2ZmNmY1OWFlYjUzMWRlMGVjODJiY2UxLi5hOTk4Y2YwN2NkMzg0ODViY2FhODgzOWFmMWY2NjY4
M2Y0YWE4ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5oCkBAIC04Miw3ICs4
Miw3IEBAIHByaXZhdGU6CiAgICAgUm9vdE9iamVjdChjb25zdCB2b2lkKiBuYXRpdmVIYW5kbGUs
IEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAvLyBXZWFrSGFuZGxlT3duZXIKLSAgICB2aXJ0dWFs
IHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2
b2lkKiBjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1ZhbGlkOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bkVycm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25FcnJvci5jcHAKaW5kZXggZmQzYzI1YWZmNGIwYWI1NjdjMmIxOGFhZmJiNjM2NTcwNzFh
OTk2Yy4uNTJlOWNmMmZkMTFjMTRkOTEzNDA1MTZjYzNmMWEyYjIzYjA0MGU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkVycm9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uRXJyb3IuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkm
IGNvbnRlbnRFeHRlbnNpb25FcnJvckNhdGVnb3J5KCkKICAgICAgICAgICAgIHJldHVybiAiY29u
dGVudCBleHRlbnNpb24iOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBzdGQ6OnN0cmlu
ZyBtZXNzYWdlKGludCBlcnJvckNvZGUpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIHN0ZDo6c3Ry
aW5nIG1lc3NhZ2UoaW50IGVycm9yQ29kZSkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDb250ZW50RXh0ZW5zaW9uRXJyb3I+KGVycm9y
Q29kZSkpIHsKICAgICAgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52
YWxpZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUFFU19DQkMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19DQkMuaAppbmRleCBiZTdjOTE3N2E5Y2MwNGY4Y2VlOGVmMTM5ZGFk
NjVlNjc3NjE3NDQ0Li4xNjQ2MzY0MWUwNjFlNjNkYWE0MDRmNTMyOTUzOGI2MWE3OTk4MDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1BRVNfQ0JDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtQUVTX0NCQy5oCkBAIC00MiwxMiArNDIsMTIgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgdmly
dHVhbCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJh
dGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVL
ZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENy
eXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9L
ZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYs
IFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwg
Y29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1l
dGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxs
YmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1BRVNf
Q0JDKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1BRVNfS1cuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUFFU19LVy5oCmluZGV4IGI5ZjQ0NmY4MGYwYmU3ZDFhZGYxMWQ3ZDg3ZmEy
NGIwZDdhMzAzOTMuLjEwZTliMmU3MGEyODQwMjNiZWQ0MjY4ZDYzYzJjMzc2OTA1MDlmMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUFFU19LVy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUFFU19LVy5oCkBAIC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVh
bCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0Rm9yV3JhcEtleShjb25zdCBDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWNyeXB0Rm9yVW53
cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBi
b29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwg
Vm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuY3J5cHRGb3JXcmFwS2V5KGNvbnN0IENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9P
cGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNh
bGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0Rm9yVW53
cmFwS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkm
LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxi
YWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRy
YWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobUFFU19LVygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5o
CmluZGV4IDAwMmM2ZGUzYzM5YTFlNWFjNmM5MmZjZWNiODc4MTFiZDhmMWU3YzEuLjUwMDkxNmEw
ZDJkYTcwZjViMTA5NmIzYjVmOTcxMmExN2VmY2VjZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKQEAgLTQyLDEy
ICs0MiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobT4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZp
ZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENyeXB0b0FsZ29yaXRobUlkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNp
Z24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2sm
JiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWls
dXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25z
dCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgc2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNh
bGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgdmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1
cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIGRhdGEsIEJvb2xDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGdlbmVyYXRlS2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5T3JLZXlQYWlyQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0
IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ3J5cHRvQWxnb3JpdGhtSE1BQygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
RVNfUEtDUzFfdjFfNS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUlNBRVNfUEtDUzFfdjFfNS5oCmluZGV4IDQ4NDcyZDk3NDMwNWU2MzQ4MTFlZWVm
YWE5ZWU0OTgxMDhjYTU0NmMuLjU0YmE0NjVkZWEzMWQxZDE4OTc3ZGEwNTc2YzMyNWE2NDgxYWZk
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVJTQUVTX1BLQ1MxX3YxXzUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1SU0FFU19QS0NTMV92MV81LmgKQEAgLTQyLDEyICs0Miwx
MiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bT4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIg
aWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGVuY3J5cHQo
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURhdGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRp
b25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNr
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyeXB0KGNvbnN0IENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZW5lcmF0ZUtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgaW1wb3J0S2V5KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBl
eHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYm
IGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIENyeXB0b0FsZ29yaXRobVJTQUVTX1BLQ1MxX3YxXzUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJTQVNTQV9QS0NTMV92
MV81LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FTU0FfUEtDUzFfdjFfNS5oCmluZGV4IDg0MTBiZDZkYzM1MTVkNWU4YmExNzkxMzdhMDEyOGMy
OGE2YWRhNDcuLmJlMDY3YWYxMmZiZWI0ODExZjM2NmZmYmY3NTllNjQxOWIwOWI4YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVJT
QVNTQV9QS0NTMV92MV81LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUlNBU1NBX1BLQ1MxX3YxXzUuaApAQCAtNDIsMTIgKzQyLDEyIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiBjcmVh
dGUoKTsKIAotICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2lnbihjb25zdCBDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJpZnko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0
IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUtleShj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2UsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVD
YWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbXBv
cnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleURh
dGEmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSwgS2V5Q2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlw
dG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9p
ZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB2ZXJpZnkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENy
eXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgQm9vbENhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZh
aWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2VuZXJh
dGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUs
IENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBm
YWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGltcG9y
dEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5RGF0
YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlDYWxsYmFjayYmLCBWb2lk
Q2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1SU0FTU0FfUEtDUzFfdjFfNSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNB
X09BRVAuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVJTQV9PQUVQLmgKaW5kZXggNjI2OTJmNWRiZTBiMTgzZjc1YmM0MzRmZGJlNzI4ZDI2YzliZTFj
Ny4uYWU4M2E0ZGFhZjQ2OGMwZmZjMDE0NGIzMGU5Y2ZiMjQxMmFkMjliMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUlNBX09BRVAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1S
U0FfT0FFUC5oCkBAIC00MiwxMiArNDIsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBlbmNyeXB0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
LCBjb25zdCBDcnlwdG9LZXkmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2Fs
bGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlY3J5cHQoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEm
LCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJh
Y2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1wb3J0S2V5
KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwg
Ym9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxs
YmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgZW5jcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRv
S2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRD
YWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGVjcnlwdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5
cHRvS2V5JiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZv
aWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZ2VuZXJhdGVLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGJv
b2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlPcktleVBhaXJDYWxsYmFjayYmLCBW
b2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGltcG9ydEtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29u
c3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlLCBLZXlD
YWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUm
KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1SU0FfT0FFUCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMS5oCmluZGV4IDhlNDYyYmNlNjc5Nzg5NTIyYjQ0MTM2ZTBlNWQxYWYwNjMxYmU1Mjgu
LjVkZTFkNWQyM2ZjOWI1YmM5MTU2MGMxODQyNjVlNjRjOTA3YjA0YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEExLmgK
QEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBDcnlwdG9BbGdvcml0
aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0
b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJl
Q2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYs
IFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTEo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVNIQTIyNC5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtU0hBMjI0LmgKaW5kZXggNWYyOTRmYzFkZTNkOTRlOTAxMzllMWQyM2JjZDEwYmE3
OTc4NmViNS4uZDQwNDFkMzgyOWY2MGEzZTk0MmU2MWQ0NTUzNzMxZjU4ODc0N2RiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hB
MjI0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtU0hBMjI0LmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBDcnlw
dG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBD
cnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYs
IGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJh
Y2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3Bl
cmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxs
YmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0Fs
Z29yaXRobVNIQTIyNCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBMjU2LmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaAppbmRleCA3N2MzNWZkMDg2MzBkYTU5OWY1
YzlhYTc2ZGVjNDJjNDY1NWMwYjAyLi43ZmY3ZmJkYTQ5MzIxOTUyMmVjNGUyZWM5MmU3MTkxZWU4
NGYxMTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1TSEEyNTYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGht
cy9DcnlwdG9BbGdvcml0aG1TSEEyNTYuaApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobT4gY3JlYXRlKCk7CiAKLSAg
ICB2aXJ0dWFsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZ2VzdChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZlY3RvckNhbGxiYWNr
JiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlnZXN0KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBj
b25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNr
JiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgQ3J5cHRvQWxnb3JpdGhtU0hBMjU2KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1TSEEzODQuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5oCmluZGV4IDk1Mjc1
ZWYyYWRjOWEyMTcxOTg0N2MwNGI5YTM2ZjgzNWU5YTg0OGIuLjk0NjFmMWM0NGI2OWY2YTc4MDgx
YzcyYjFkYTIzNjEyYjkyOGI0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTM4NC5oCkBAIC0zOSw5ICszOSw5IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiBj
cmVhdGUoKTsKIAotICAgIHZpcnR1YWwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlnZXN0KGNvbnN0
IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiwg
VmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYm
LCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKICAgICBDcnlwdG9BbGdvcml0aG1TSEEzODQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVNIQTUxMi5o
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEy
LmgKaW5kZXggMTEwNmI0YTZiZGE2ZTI3ZGI3NzEyMjZhOTVhZGExMTNiMWIwMjRmNy4uN2UwMzQ2
MDNhYjU4ODcxYWYxZGE0MTI4Y2ZkY2QzY2QwNGQxNzRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtU0hBNTEyLmgKQEAg
LTM5LDkgKzM5LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG0+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWdlc3QoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2ssIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZ2VzdChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIFZl
Y3RvckNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaywgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENyeXB0b0FsZ29yaXRobVNIQTUxMigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5QUVTLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlBRVMuaAppbmRleCBhNmViNDIy
M2VkMDRiYWUyZjMwMWJiMTBiNzA2MGEwMWZmODhlOGZkLi40NWE1YmI4MjM2NGVlYjExZmRjNTMw
NTFiMWRmMzVmYTM1MzJhZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5
cy9DcnlwdG9LZXlBRVMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlBRVMuaApAQCAtNDYsMTUgKzQ2LDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8
Q3J5cHRvS2V5QUVTPiBnZW5lcmF0ZShDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyLCBzaXplX3Qg
bGVuZ3RoQml0cywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2UpOwogCi0gICAgdmly
dHVhbCBDcnlwdG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENy
eXB0b0tleUNsYXNzOjpBRVM7IH0KKyAgICBDcnlwdG9LZXlDbGFzcyBrZXlDbGFzcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIENyeXB0b0tleUNsYXNzOjpBRVM7IH0KIAogICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9rZXk7IH0KIAogcHJpdmF0ZToK
ICAgICBDcnlwdG9LZXlBRVMoQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBidWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKENyeXB0b0FsZ29yaXRobURl
c2NyaXB0aW9uQnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0tleURhdGE+IGV4cG9ydERhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRpb24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25C
dWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURh
dGE+IGV4cG9ydERhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBt
X2tleTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9L
ZXlITUFDLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlITUFDLmgKaW5k
ZXggMjg3M2RiOTMzNjIyNWU0YTI2MmI0MmE1NDM3YTAzMDkyNWE3ODQ3NS4uNDY4YWQwNzdmMTk2
MWFkOGRhZDdiNGI0Mzk5OGViMTcyY2QyMzMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2tleXMvQ3J5cHRvS2V5SE1BQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleUhNQUMuaApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgLy8gSWYg
bGVuZ3RoQnl0ZXMgaXMgMCwgYSByZWNvbW1lbmRlZCBsZW5ndGggaXMgdXNlZCwgd2hpY2ggaXMg
dGhlIHNpemUgb2YgdGhlIGFzc29jaWF0ZWQgaGFzaCBmdW5jdGlvbidzIGJsb2NrIHNpemUuCiAg
ICAgc3RhdGljIFJlZlB0cjxDcnlwdG9LZXlITUFDPiBnZW5lcmF0ZShzaXplX3QgbGVuZ3RoQnl0
ZXMsIENyeXB0b0FsZ29yaXRobUlkZW50aWZpZXIgaGFzaCwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2UpOwogCi0gICAgdmlydHVhbCBDcnlwdG9LZXlDbGFzcyBrZXlDbGFzcygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIENyeXB0b0tleUNsYXNzOjpITUFDOyB9CisgICAgQ3J5cHRv
S2V5Q2xhc3Mga2V5Q2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDcnlwdG9LZXlDbGFz
czo6SE1BQzsgfQogCiAgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkoKSBjb25zdCB7IHJl
dHVybiBtX2tleTsgfQogCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Q3J5cHRvS2V5SE1BQyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgQ3J5cHRvQWxnb3JpdGht
SWRlbnRpZmllciBoYXNoLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZSk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihDcnlwdG9BbGdvcml0aG1E
ZXNjcmlwdGlvbkJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBleHBvcnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBidWlsZEFsZ29yaXRobURlc2NyaXB0aW9uKENyeXB0b0FsZ29yaXRobURlc2NyaXB0aW9u
QnVpbGRlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhPiBleHBvcnREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBDcnlwdG9BbGdvcml0aG1J
ZGVudGlmaWVyIG1faGFzaDsKICAgICBWZWN0b3I8dWludDhfdD4gbV9rZXk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9DcnlwdG9LZXlSU0EuaCBiL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCmluZGV4IDE3ZDI0YTk5MTVkM2QxYjBhOWE0
MDJjMjlkZTU2MzhmYzlkYzY3NDQuLjZlYTIwMGI4YzE3MWU4MzIwMzRmNDZlZjQzZGM5NjVmMGM1
ZDllZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJT
QS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleVJTQS5oCkBAIC02
OSwxMCArNjksMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDcnlwdG9LZXlSU0EoQ3J5cHRv
QWxnb3JpdGhtSWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29s
IGhhc0hhc2gsIENyeXB0b0tleVR5cGUsIFBsYXRmb3JtUlNBS2V5LCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZSk7CiAKLSAgICB2aXJ0dWFsIENyeXB0b0tleUNsYXNzIGtleUNsYXNz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ3J5cHRvS2V5Q2xhc3M6OlJTQTsgfQorICAgIENy
eXB0b0tleUNsYXNzIGtleUNsYXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ3J5cHRvS2V5
Q2xhc3M6OlJTQTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGJ1aWxkQWxnb3JpdGhtRGVzY3JpcHRp
b24oQ3J5cHRvQWxnb3JpdGhtRGVzY3JpcHRpb25CdWlsZGVyJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhwb3J0RGF0YSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgYnVpbGRBbGdvcml0aG1EZXNjcmlwdGlvbihDcnlwdG9B
bGdvcml0aG1EZXNjcmlwdGlvbkJ1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gZXhwb3J0RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgUGxhdGZvcm1SU0FLZXkgbV9wbGF0Zm9ybUtleTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5U2VyaWFsaXphdGlvblJhdy5oCmluZGV4IDhjOTY4
YTlmODJiODg1ZmJhZmIwNGI0ZmYyYjExYjVkZGM0Y2EwYzIuLjI2NmI2ZmYzYTBiNWU0MDY1MjMz
NTFkZWIwN2MyMDA0MzhjYTY1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9r
ZXlzL0NyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8va2V5cy9DcnlwdG9LZXlTZXJpYWxpemF0aW9uUmF3LmgKQEAgLTUxLDEyICs1MSwxMiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIENyeXB0b0tleVNlcmlhbGl6YXRpb25SYXcoY29uc3QgQ3J5
cHRvT3BlcmF0aW9uRGF0YSYpOwogCi0gICAgdmlydHVhbCBib29sIHJlY29uY2lsZUFsZ29yaXRo
bShzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtPiYsIHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcmVjb25j
aWxlQWxnb3JpdGhtKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG0+Jiwgc3RkOjp1bmlx
dWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjb25jaWxlVXNhZ2VzKENyeXB0b0tleVVzYWdlJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29uY2lsZUV4dHJhY3RhYmxlKGJvb2wmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29uY2lsZVVzYWdlcyhDcnlwdG9LZXlVc2FnZSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVjb25jaWxlRXh0cmFjdGFibGUoYm9vbCYpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4g
a2V5RGF0YSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlE
YXRhPiBrZXlEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8dWludDhfdD4gbV9k
YXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobUFlc0NiY1BhcmFtcy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFt
ZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zLmgKaW5kZXggN2EzN2IyZWM5MjlkZDM3
NDFhNTI5NzdhYTJkZGNiNDYxYmQ4NTY4Ny4uMmE3OThmN2U1NjI4M2I1YTkzNzBhMWMzMDBkZmU2
NWJhNDYyMjEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMv
Q3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtQWVzQ2JjUGFyYW1zLmgKQEAgLTM4LDcgKzM4LDcg
QEAgcHVibGljOgogICAgIC8vIFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IuIE1VU1QgYmUgMTYg
Ynl0ZXMuCiAgICAgc3RkOjphcnJheTxjaGFyLCAxNj4gaXY7CiAKLSAgICB2aXJ0dWFsIENsYXNz
IHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsYXNzOjpBZXNDYmNQ
YXJhbXM7IH0KKyAgICBDbGFzcyBwYXJhbWV0ZXJzQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBDbGFzczo6QWVzQ2JjUGFyYW1zOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdv
cml0aG1BZXNLZXlHZW5QYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJz
L0NyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oCmluZGV4IDczZDUyZGQxMzY5ZjExZWMx
MTk4NGViYmVlM2ZlM2IzZjQ1MjQyMGYuLmU1NGM1Y2ZiNjIyYzk5MTk3ZmM3MGEyNzI1OGFlNjVk
NDI3MmIwM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0Ny
eXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUFlc0tleUdlblBhcmFtcy5oCkBAIC0zNyw3ICsz
Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgbGVuZ3RoLCBpbiBiaXRzLCBvZiB0aGUga2V5Lgog
ICAgIHVuc2lnbmVkIGxlbmd0aDsKIAotICAgIHZpcnR1YWwgQ2xhc3MgcGFyYW1ldGVyc0NsYXNz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2xhc3M6OkFlc0tleUdlblBhcmFtczsgfQorICAg
IENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsYXNzOjpB
ZXNLZXlHZW5QYXJhbXM7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobUhtYWNL
ZXlQYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29y
aXRobUhtYWNLZXlQYXJhbXMuaAppbmRleCAzMWEzZTRkZmRmY2Y1Y2NmZWMxMDE2ZTY2MTk1MWQ1
NWNkOWQ0ODE0Li45MjFiMTVkODlkMDM4NWI4ZTU2Mjk2ZDlmY2U3YTVhMTg3YTZhOGE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1I
bWFjS2V5UGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5
cHRvQWxnb3JpdGhtSG1hY0tleVBhcmFtcy5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0xlbmd0aDsKICAgICB1bnNpZ25lZCBsZW5ndGg7CiAKLSAgICB2aXJ0dWFsIENs
YXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsYXNzOjpIbWFj
S2V5UGFyYW1zOyB9CisgICAgQ2xhc3MgcGFyYW1ldGVyc0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQ2xhc3M6OkhtYWNLZXlQYXJhbXM7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0
b0FsZ29yaXRobUhtYWNQYXJhbXMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJz
L0NyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXMuaAppbmRleCA4MjYzZWRlOGM0YmIyZjk4ZWZmNzQz
YTM1YjBjMzZiNWQ3NDg1ODY4Li41Mzc5M2I2ZmE1ZDc1M2UzNWE4OTYyZjVhZTY4ODhkMGUwZWY3
Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRl
cnMvQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtcy5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoK
ICAgICAvLyBUaGUgaW5uZXIgaGFzaCBmdW5jdGlvbiB0byB1c2UuCiAgICAgQ3J5cHRvQWxnb3Jp
dGhtSWRlbnRpZmllciBoYXNoOwogCi0gICAgdmlydHVhbCBDbGFzcyBwYXJhbWV0ZXJzQ2xhc3Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDbGFzczo6SG1hY1BhcmFtczsgfQorICAgIENsYXNz
IHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsYXNzOjpIbWFjUGFy
YW1zOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FLZXlHZW5QYXJhbXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYUtl
eUdlblBhcmFtcy5oCmluZGV4IGY2MDdkYWQ3OWNlYTE2NDgwM2IyNTQ3OTUzMTQ3NGEyZjM5Njdi
NWMuLmY2M2E1N2NlZDNlM2MzNjYzYjMxMTJkNTk5MmE4MWMzMjEyZDM5MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYUtleUdl
blBhcmFtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0Fs
Z29yaXRobVJzYUtleUdlblBhcmFtcy5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBi
b29sIGhhc0hhc2g7CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoOwogCi0gICAg
dmlydHVhbCBDbGFzcyBwYXJhbWV0ZXJzQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBD
bGFzczo6UnNhS2V5R2VuUGFyYW1zOyB9CisgICAgQ2xhc3MgcGFyYW1ldGVyc0NsYXNzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2xhc3M6OlJzYUtleUdlblBhcmFtczsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3Bh
cmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0aEhhc2guaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYUtleVBhcmFtc1dpdGhI
YXNoLmgKaW5kZXggMmQ1YjFjYmViYWM3MjViZTg3YmQ2NDFkY2JiNzgwZTQxYTIzODdkNS4uZGVm
Y2FhMTczNjgwZDZhZmQwNjUzNzNjZGMxYjY5ZDA2OWRkZTRmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNhS2V5UGFyYW1zV2l0
aEhhc2guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdv
cml0aG1Sc2FLZXlQYXJhbXNXaXRoSGFzaC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc0hhc2g7CiAgICAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoOwogCi0g
ICAgdmlydHVhbCBDbGFzcyBwYXJhbWV0ZXJzQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBDbGFzczo6UnNhS2V5UGFyYW1zV2l0aEhhc2g7IH0KKyAgICBDbGFzcyBwYXJhbWV0ZXJzQ2xh
c3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDbGFzczo6UnNhS2V5UGFyYW1zV2l0aEhhc2g7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJhbXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9wYXJhbWV0ZXJzL0NyeXB0b0FsZ29yaXRobVJzYU9hZXBQYXJh
bXMuaAppbmRleCBmOTYxNjQ3YWRlMzU2NjNiMjNjMjhiYzU2OTVlMWIyZjJlMWNlYzFjLi4wZDJj
MzRjZDFhNjZmZTI5YmY4OWJlZDYyNTUwY2VkZGRlMjlkYzQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0aG1Sc2FPYWVwUGFyYW1zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGhtUnNh
T2FlcFBhcmFtcy5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0xhYmVs
OwogICAgIFZlY3Rvcjx1aW50OF90PiBsYWJlbDsKIAotICAgIHZpcnR1YWwgQ2xhc3MgcGFyYW1l
dGVyc0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2xhc3M6OlJzYU9hZXBQYXJhbXM7
IH0KKyAgICBDbGFzcyBwYXJhbWV0ZXJzQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBD
bGFzczo6UnNhT2FlcFBhcmFtczsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL3BhcmFtZXRlcnMvQ3J5cHRvQWxnb3JpdGht
UnNhU3NhUGFyYW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9B
bGdvcml0aG1Sc2FTc2FQYXJhbXMuaAppbmRleCA3MGVjZmZjYTcxZGI2OWU5NmYzYTJjN2VmNzJm
OTRiODY3Mzc5ZDMyLi44MTg1ZjhkZmI4M2FkOWIzZjVjODdlNDJhMjI0NGZkODY0N2E0ZjgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9DcnlwdG9BbGdvcml0
aG1Sc2FTc2FQYXJhbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vcGFyYW1ldGVycy9D
cnlwdG9BbGdvcml0aG1Sc2FTc2FQYXJhbXMuaApAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gVGhlIGhhc2ggYWxnb3JpdGhtIHRvIHVzZS4KICAgICBDcnlwdG9BbGdvcml0aG1JZGVu
dGlmaWVyIGhhc2g7CiAKLSAgICB2aXJ0dWFsIENsYXNzIHBhcmFtZXRlcnNDbGFzcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIENsYXNzOjpSc2FTc2FQYXJhbXM7IH0KKyAgICBDbGFzcyBwYXJh
bWV0ZXJzQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDbGFzczo6UnNhU3NhUGFyYW1z
OyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1No
YXBlcy5oCmluZGV4IDgzNzNlOWRmYWNiYjJmYTVlN2Q1YTQyODlkZGJjMzY5NzFlY2JlN2UuLmEw
NmU0OWY2N2QwNWUxMGMyMjQ2NmMzM2MwNDcxYjY1ZmI3YjRiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NCYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCYXNpY1NoYXBlcy5oCkBAIC0xMTMsOSArMTEzLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBDU1NCYXNpY1NoYXBlSW5zZXQoKSB7IH0KIAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZUluc2V0VHlwZTsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZXF1
YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBUeXBlIHR5cGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDU1NCYXNpY1NoYXBlSW5zZXRUeXBlOyB9CisgICAg
U3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGVxdWFscyhjb25zdCBD
U1NCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG1fdG9wOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9yaWdodDsKQEAg
LTE0Myw5ICsxNDMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVDaXJj
bGUoKSB7IH0KIAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gQ1NTQmFzaWNTaGFwZUNpcmNsZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NCYXNp
Y1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gQ1NTQmFzaWNTaGFwZUNpcmNsZVR5cGU7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jZW50ZXJY
OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jZW50ZXJZOwpAQCAtMTY5LDkgKzE2
OSw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTQmFzaWNTaGFwZUVsbGlwc2UoKSB7IH0K
IAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ1NTQmFz
aWNTaGFwZUVsbGlwc2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IENTU0Jhc2ljU2hhcGVFbGxpcHNlVHlwZTsgfQorICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTQmFzaWNTaGFwZSYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2NlbnRlclg7CiAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2NlbnRlclk7CkBAIC0yMDIsOSArMjAyLDkgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBDU1NCYXNpY1NoYXBlUG9seWdvblR5cGU7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGVxdWFs
cyhjb25zdCBDU1NCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVHlwZSB0eXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ1NTQmFzaWNTaGFwZVBvbHlnb25UeXBlOyB9CisgICAg
U3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGVxdWFscyhjb25zdCBD
U1NCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPj4gbV92YWx1ZXM7CiAgICAgV2luZFJ1bGUgbV93aW5kUnVsZTsKQEAgLTIy
OCw5ICsyMjgsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENTU0Jhc2ljU2hhcGVQYXRoKHN0
ZDo6dW5pcXVlX3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4mJik7CiAKLSAgICB2aXJ0dWFsIFR5cGUg
dHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENTU0Jhc2ljU2hhcGVQYXRoVHlwZTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgZXF1YWxzKGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBU
eXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDU1NCYXNpY1NoYXBlUGF0aFR5cGU7
IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZXF1YWxz
KGNvbnN0IENTU0Jhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9ieXRlU3RyZWFtOwogICAgIFdpbmRSdWxlIG1fd2lu
ZFJ1bGUgeyBSVUxFX05PTlpFUk8gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmNwcAppbmRleCA1ZDU2M2IzNWE4MzlkNTliMDUwODA4MGFmZmEzZWZlOWE1MDI2MWM3
Li5jNmIxOTFhYzBmMTU4NzhhZWE3NDA1YWY1MjQ4NTNmNjBjZDA0NDJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0yMTIsMTcgKzIxMiwxNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1plcm8oKSBjb25z
dCBvdmVycmlkZQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIHJldHVybiAhbV92YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBTdHJpbmcgY3Vz
dG9tQ1NTVGV4dCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV92YWx1
ZS0+Y3NzVGV4dCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENhbGNF
eHByZXNzaW9uTm9kZT4gY3JlYXRlQ2FsY0V4cHJlc3Npb24oY29uc3QgQ1NTVG9MZW5ndGhDb252
ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjp1bmlx
dWVfcHRyPENhbGNFeHByZXNzaW9uTm9kZT4gY3JlYXRlQ2FsY0V4cHJlc3Npb24oY29uc3QgQ1NT
VG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjTnVt
YmVyOgpAQCAtMjQ4LDcgKzI0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgaWYgKGhhc0RvdWJsZVZhbHVlKHByaW1pdGl2ZVR5cGUoKSkpCiAgICAgICAgICAgICByZXR1
cm4gbV92YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBjb21wdXRl
TGVuZ3RoUHgoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEp
IGNvbnN0IG92ZXJyaWRlCisgICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChjb25zdCBDU1NUb0xl
bmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIHN3aXRjaCAoY2F0ZWdvcnkoKSkgewogICAgICAgICBjYXNlIENhbGNMZW5ndGg6
CkBAIC0yNzcsNyArMjc3LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBDU1NDYWxjRXhwcmVzc2lvbk5vZGUmIG90
aGVyKSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNz
aW9uTm9kZSYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAodHlwZSgp
ICE9IG90aGVyLnR5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NSw4ICsy
ODUsOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gY29tcGFyZUNTU1ZhbHVlUHRyKG1fdmFs
dWUsIHN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNQcmltaXRpdmVWYWx1ZSY+KG90aGVyKS5tX3Zh
bHVlKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIENzc0NhbGNQcmltaXRpdmVWYWx1ZTsgfQotICAgIHZpcnR1YWwgQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlcyBwcmltaXRpdmVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDc3NDYWxjUHJpbWl0aXZlVmFsdWU7IH0K
KyAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHByaW1pdGl2ZVR5cGUoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMobV92YWx1ZS0+cHJpbWl0aXZlVHlwZSgpKTsKICAgICB9CkBAIC00MjEsMTIgKzQyMSwxMiBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1plcm8oKSBj
b25zdCBvdmVycmlkZQorICAgIGJvb2wgaXNaZXJvKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIHJldHVybiAhZG91YmxlVmFsdWUoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNhbGNFeHByZXNzaW9uKGNvbnN0
IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKSBjb25zdCBvdmVycmlk
ZQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDYWxjRXhwcmVzc2lvbk5vZGU+IGNyZWF0ZUNhbGNFeHBy
ZXNzaW9uKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEmIGNvbnZlcnNpb25EYXRhKSBj
b25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENhbGNFeHByZXNz
aW9uTm9kZT4gbGVmdChtX2xlZnRTaWRlLT5jcmVhdGVDYWxjRXhwcmVzc2lvbihjb252ZXJzaW9u
RGF0YSkpOwogICAgICAgICBpZiAoIWxlZnQpCkBAIC00MzcsMTIgKzQzNywxMiBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDYWxjRXhwcmVzc2lvbkJpbmFyeU9w
ZXJhdGlvbj4oV1RGTW92ZShsZWZ0KSwgV1RGTW92ZShyaWdodCksIG1fb3BlcmF0b3IpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICBkb3VibGUgZG91YmxlVmFsdWUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIGV2YWx1YXRlKG1fbGVmdFNpZGUtPmRvdWJsZVZhbHVlKCksIG1fcmlnaHRTaWRlLT5kb3Vi
bGVWYWx1ZSgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgo
Y29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRhdGEpIGNvbnN0IG92
ZXJyaWRlCisgICAgZG91YmxlIGNvbXB1dGVMZW5ndGhQeChjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IGNvbnN0IGRvdWJsZSBsZWZ0VmFsdWUgPSBtX2xlZnRTaWRlLT5jb21wdXRlTGVuZ3RoUHgoY29u
dmVyc2lvbkRhdGEpOwogICAgICAgICBjb25zdCBkb3VibGUgcmlnaHRWYWx1ZSA9IG1fcmlnaHRT
aWRlLT5jb21wdXRlTGVuZ3RoUHgoY29udmVyc2lvbkRhdGEpOwpAQCAtNDYzLDEyICs0NjMsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdCBvdmVycmlkZQorICAgIFN0
cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVy
biBidWlsZENzc1RleHQobV9sZWZ0U2lkZS0+Y3VzdG9tQ1NTVGV4dCgpLCBtX3JpZ2h0U2lkZS0+
Y3VzdG9tQ1NTVGV4dCgpLCBtX29wZXJhdG9yKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
ZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgZXhwKSBjb25zdCBvdmVycmlkZQor
ICAgIGJvb2wgZXF1YWxzKGNvbnN0IENTU0NhbGNFeHByZXNzaW9uTm9kZSYgZXhwKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKHR5cGUoKSAhPSBleHAudHlwZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDc5LDkgKzQ3OSw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAmJiBtX29wZXJhdG9yID09IG90aGVyLm1fb3BlcmF0b3I7CiAgICAgfQogCi0gICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDc3NDYWxjQmluYXJ5T3Bl
cmF0aW9uOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ3NzQ2Fs
Y0JpbmFyeU9wZXJhdGlvbjsgfQogCi0gICAgdmlydHVhbCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzIHByaW1pdGl2ZVR5cGUoKSBjb25zdCBvdmVycmlkZQorICAgIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMgcHJpbWl0aXZlVHlwZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKGNhdGVnb3J5KCkpIHsKICAgICAgICAgY2FzZSBDYWxjTnVtYmVyOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCBjOTY4MGE4OWFlMTNlNmRlODVmMTE4N2Mz
NjExMjE0NjUxZmJhNGM1Li5mMTIzZDBmM2Y0NDE1NTAxMzQ4MmUzMDQ2NzBhOWU2Y2Q3ODNmYjBm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaApAQCAtNzIsMTUgKzcyLDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBj
YW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMsIGNvbnN0IEZsb2F0UmVjdCYg
Y2hhbmdlZFJlY3QpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgY2FudmFzQ2hhbmdlZChIVE1MQ2Fu
dmFzRWxlbWVudCYgY2FudmFzLCBjb25zdCBGbG9hdFJlY3QmIGNoYW5nZWRSZWN0KSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBtX293bmVyVmFsdWUuY2FudmFzQ2hhbmdlZChjYW52
YXMsIGNoYW5nZWRSZWN0KTsKICAgICAgICAgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgY2FudmFz
UmVzaXplZChIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKSBvdmVycmlkZQorICAgICAgICB2b2lk
IGNhbnZhc1Jlc2l6ZWQoSFRNTENhbnZhc0VsZW1lbnQmIGNhbnZhcykgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgbV9vd25lclZhbHVlLmNhbnZhc1Jlc2l6ZWQoY2FudmFzKTsKICAg
ICAgICAgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgY2FudmFzRGVzdHJveWVkKEhUTUxDYW52YXNF
bGVtZW50JiBjYW52YXMpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgY2FudmFzRGVzdHJveWVkKEhU
TUxDYW52YXNFbGVtZW50JiBjYW52YXMpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1fb3duZXJWYWx1ZS5jYW52YXNEZXN0cm95ZWQoY2FudmFzKTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NoYXJzZXRSdWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAppbmRleCBiZjA4ZDFlMjJlMzQxMGQzOTNmNWE5NGIwOWJm
NDM4YWU0ZDE5OTY3Li4xZGY2NzM1ZTEzM2ExOWU3ZGE1OWNhYjVkZDBlZGQ4NGQzZTZkOGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2hhcnNldFJ1bGUuaApAQCAtMzUsMTQgKzM1LDE0IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgfkNTU0NoYXJzZXRSdWxlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNo
KFN0eWxlUnVsZUJhc2UmKSBvdmVycmlkZSB7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlIHsg
fQogCiAgICAgY29uc3QgU3RyaW5nJiBlbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2Rp
bmc7IH0KICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIEV4Y2Vw
dGlvbkNvZGUmKSB7IG1fZW5jb2RpbmcgPSBlbmNvZGluZzsgfQogCiBwcml2YXRlOgotICAgIHZp
cnR1YWwgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ0hBUlNF
VF9SVUxFOyB9CisgICAgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gQ0hBUlNFVF9SVUxFOyB9CiAKICAgICBDU1NDaGFyc2V0UnVsZShDU1NTdHlsZVNoZWV0KiBw
YXJlbnQsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKaW5kZXggODU5OWY1MThhZGU1ZDM3N2Qw
MjVhMTRiOWE0MDI4Y2NlMjkyODRiZS4uMTMxNjEyOGY2ODgzYzVmYTNkNzRlNTVkMDY5Y2RmNGEx
MTM5M2RjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaApAQCAtOTMsOCArOTMsOCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwg
fkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbigpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHJlZigpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBkZXJlZigpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVmKCkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXJlZigpIG92ZXJyaWRlOwogCiAgICAgU3Ry
aW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKQEAgLTEwMiwyMiAr
MTAyLDIyIEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uKFBhc3NSZWZQdHI8Tm9kZT4sIGJvb2wgYWxsb3dWaXNpdGVkU3R5bGUsIGNvbnN0
IFN0cmluZyYpOwogCiAgICAgLy8gQ1NTT00gZnVuY3Rpb25zLiBEb24ndCBtYWtlIHRoZXNlIHB1
YmxpYy4KLSAgICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVudFJ1bGUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVl
KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eVNob3J0aGFuZChjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJvcGVydHlJbXBs
aWNpdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgcmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjc3NU
ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENzc1RleHQoY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPENT
U1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZUludGVybmFsKENTU1Byb3Bl
cnR5SUQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFsKENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGll
cz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBDU1NSdWxlKiBwYXJlbnRS
dWxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlOworICAgIFN0cmluZyBnZXRQcm9wZXJ0eVByaW9y
aXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZ2V0
UHJvcGVydHlTaG9ydGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGNzc1Rl
eHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENzc1RleHQoY29uc3QgU3RyaW5nJiwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJyaWRlOworICAgIFN0cmluZyBn
ZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NTUHJvcGVydHlJRCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBzZXRQcm9wZXJ0eUludGVybmFsKENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGJvb2wgaW1wb3J0YW50LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgUmVmPE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+IGNvcHlQcm9wZXJ0aWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVw
ZGF0ZUxheW91dCA9IFVwZGF0ZUxheW91dCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmgKaW5kZXggZmEwM2JkOTc2ODY4MzEzYWE2MDQzNTE0ZDhiMDFiMmFiYzU5
YjllOC4uZGUxYThkOGMxOTIzYzNjOWM5MmFhYjI2ZDM5MWFlYzZhMzZlNzQzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTg5LDcgKzg5LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgfkNyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQ
cm94eSgpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdl
KiwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBpbWFn
ZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIHNldFJlYWR5KGJvb2wgcmVhZHkpIHsgbV9yZWFkeSA9IHJlYWR5OyB9
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQ1NTQ3Jvc3NmYWRlVmFsdWUqIG1fb3duZXJWYWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCmluZGV4IGQwOWE5ZjcxNGZk
ODZiMzk3ZjBjZjU4MTNmYzQ0MjQxNzY1NWU2N2YuLjVmYzc1YWJjMDRkMTFmMTM5Y2YyYmI2N2Y5
OWQyMWZiZmFlODY5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJ
bWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUu
aApAQCAtOTcsNyArOTcsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgdmlydHVh
bCB+RmlsdGVyU3ViaW1hZ2VPYnNlcnZlclByb3h5KCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92
ZXJyaWRlOworICAgICAgICB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSosIGNvbnN0IElu
dFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgc2V0UmVhZHkoYm9vbCBy
ZWFkeSkgeyBtX3JlYWR5ID0gcmVhZHk7IH0KICAgICBwcml2YXRlOgogICAgICAgICBDU1NGaWx0
ZXJJbWFnZVZhbHVlKiBtX293bmVyVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udEZhY2VMb2FkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFj
ZUxvYWRFdmVudC5oCmluZGV4IDY5NmJhYzQ0MWY3YWI3Y2UyOGNjNjU5NDUzNGE2MTlmNmViYzQ4
YTguLmZlNzkyNGRlMjVmZDA5YzhkYmVlMGE4MWI3NmM2NjlmY2QxNzBmNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZUxvYWRFdmVudC5oCkBAIC03NSw3ICs3NSw3IEBAIHB1Ymxp
YzoKICAgICBDU1NGb250RmFjZVJ1bGUqIGZvbnRmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9mb250
ZmFjZS5nZXQoKTsgfQogICAgIERPTUVycm9yKiBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJy
b3IuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2Uo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENTU0ZvbnRGYWNlTG9hZEV2ZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmgKaW5kZXggZjgzOTk0MThhODEwMmJmZjY0YTky
NmZjMTYzMmRjODg3NGNhNjc0Mi4uOWM5YjdlZjEyYzI0NDViNDkyNmJmMTI5MTVhZjllMTdkNGU3
ZGI1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuaApAQCAtMzYsMTUgKzM2LDE1
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNTU0ZvbnRGYWNlUnVsZSgpOwogCi0gICAgdmly
dHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGNzc1RleHQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmKSBvdmVycmlk
ZTsKIAogICAgIENTU1N0eWxlRGVjbGFyYXRpb24mIHN0eWxlKCk7CiAKIHByaXZhdGU6CiAgICAg
Q1NTRm9udEZhY2VSdWxlKFN0eWxlUnVsZUZvbnRGYWNlJiwgQ1NTU3R5bGVTaGVldCogcGFyZW50
KTsKIAotICAgIHZpcnR1YWwgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gRk9OVF9GQUNFX1JVTEU7IH0KKyAgICBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBGT05UX0ZBQ0VfUlVMRTsgfQogCiAgICAgUmVmPFN0eWxlUnVsZUZv
bnRGYWNlPiBtX2ZvbnRGYWNlUnVsZTsKICAgICBSZWZQdHI8U3R5bGVSdWxlQ1NTU3R5bGVEZWNs
YXJhdGlvbj4gbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTZXQuaAppbmRleCA3ZGZlZGYyYjNhMTE3MGNkYWE3MTBlNjQ1YzM3N2Q3Zjg4ZmY3ZTlmLi4x
YjU4YWQ2Y2MzYmI2MjJhMzE3MmRjMDkyM2M5NTBlNDEzMjgwZmE0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTZXQuaApAQCAtODQsOCArODQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5j
cmVtZW50QWN0aXZlQ291bnQoKTsKICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZUNvdW50KCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYsIENTU0ZvbnRG
YWNlOjpTdGF0dXMgb2xkU3RhdGUsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBmb250UHJvcGVydHlDaGFuZ2VkKENTU0ZvbnRGYWNlJiwg
Q1NTVmFsdWVMaXN0KiBvbGRGYW1pbGllcyA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIHZvaWQg
Zm9udFN0YXRlQ2hhbmdlZChDU1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMgb2xkU3Rh
dGUsIENTU0ZvbnRGYWNlOjpTdGF0dXMgbmV3U3RhdGUpIG92ZXJyaWRlOworICAgIHZvaWQgZm9u
dFByb3BlcnR5Q2hhbmdlZChDU1NGb250RmFjZSYsIENTU1ZhbHVlTGlzdCogb2xkRmFtaWxpZXMg
PSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVnaXN0ZXJMb2NhbEZvbnRGYWNlc0Zv
ckZhbWlseShjb25zdCBTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3Vy
Y2UuaAppbmRleCBmNjIwMjVkNjkwMjc4MmJkMzU0Mjk0ZmZhMjBlODRjZjE2NWMyZDI3Li5mZWFk
MDIwZWRiYWQxMzYzZGVlMDdkMmMwY2VjNjJlNTE1MGE1MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDYWNoZWRGb250Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmb250TG9hZGVkKENhY2hlZEZvbnQmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgc2V0U3RhdHVzKFN0YXR1cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuaApp
bmRleCBjMTEyZTg4Zjc0NzY1OWM4OTA1NTAyNjFiNWVkNTE5ZGE4NmZmZjE3Li41ZWM0MjcxYjYy
NjcyMmFiMTBjYjY4ODg1YWRhMTM5NTFkM2FiM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5oCkBAIC01NywyNCArNTcsMjQgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFs
IH5DU1NGb250U2VsZWN0b3IoKTsKICAgICAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHZlcnNpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZlcnNpb247IH0KLSAgICB2aXJ0dWFsIHVuc2ln
bmVkIHVuaXF1ZUlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91bmlxdWVJZDsgfQorICAg
IHVuc2lnbmVkIHZlcnNpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZlcnNpb247IH0K
KyAgICB1bnNpZ25lZCB1bmlxdWVJZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdW5pcXVl
SWQ7IH0KIAotICAgIHZpcnR1YWwgRm9udFJhbmdlcyBmb250UmFuZ2VzRm9yRmFtaWx5KGNvbnN0
IEZvbnREZXNjcmlwdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgc2l6ZV90IGZhbGxiYWNrRm9udENvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8Rm9udD4gZmFsbGJhY2tGb250QXQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgc2l6ZV90
KSBvdmVycmlkZTsKKyAgICBGb250UmFuZ2VzIGZvbnRSYW5nZXNGb3JGYW1pbHkoY29uc3QgRm9u
dERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc2l6ZV90
IGZhbGxiYWNrRm9udENvdW50KCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEZvbnQ+IGZhbGxiYWNr
Rm9udEF0KGNvbnN0IEZvbnREZXNjcmlwdGlvbiYsIHNpemVfdCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGNsZWFyRG9jdW1lbnQoKTsKIAogICAgIHZvaWQgYWRkRm9udEZhY2VSdWxlKFN0eWxlUnVs
ZUZvbnRGYWNlJiwgYm9vbCBpc0luaXRpYXRpbmdFbGVtZW50SW5Vc2VyQWdlbnRTaGFkb3dUcmVl
KTsKIAogICAgIHZvaWQgZm9udExvYWRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBmb250Q2FjaGVJ
bnZhbGlkYXRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZm9udENhY2hlSW52YWxpZGF0ZWQoKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZvbnRTZWxlY3RvckNsaWVudCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJh
Y2tzKEZvbnRTZWxlY3RvckNsaWVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJGb3JJ
bnZhbGlkYXRpb25DYWxsYmFja3MoRm9udFNlbGVjdG9yQ2xpZW50Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCB1bnJlZ2lzdGVyRm9ySW52YWxpZGF0aW9uQ2FsbGJhY2tzKEZvbnRTZWxlY3RvckNsaWVu
dCYpIG92ZXJyaWRlOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9kb2N1bWVudDsgfQogCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRp
c3BhdGNoSW52YWxpZGF0aW9uQ2FsbGJhY2tzKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9udE1v
ZGlmaWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmb250TW9kaWZpZWQoKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgYmVnaW5Mb2FkVGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JvdXBpbmdSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JvdXBp
bmdSdWxlLmgKaW5kZXggNjQwY2VkZTM2ODBkMGMwZWVhODIzNWNkODUwZTUzZGE3NTRjNWJmMy4u
MmM5OGNlMzY2ZWRkZWNkOTIxZWZhM2M1YzNmMWY4MjY1NDRkMTIxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0dyb3VwaW5nUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcm91cGluZ1J1bGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBDU1NHcm91cGluZ1J1
bGUgOiBwdWJsaWMgQ1NTUnVsZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q1NTR3JvdXBpbmdS
dWxlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOwogCiAgICAg
Q1NTUnVsZUxpc3QmIGNzc1J1bGVzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1wb3J0UnVs
ZS5oCmluZGV4IGQ0NDhhZmY3MzllMjM1YjlkZWVhOGNmYTBlMGY3Yzg5ODNkYTMyZjUuLjVjNWVm
OTMwMjZiNzJhYWY2ZjlhMWRhYjhjY2Q2NmY5ODA0ZmIyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbXBvcnRSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
cG9ydFJ1bGUuaApAQCAtMzcsOCArMzcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+
Q1NTSW1wb3J0UnVsZSgpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHJlYXR0
YWNoKFN0eWxlUnVsZUJhc2UmKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBocmVmKCkgY29uc3Q7
CiAgICAgTWVkaWFMaXN0JiBtZWRpYSgpIGNvbnN0OwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIENTU0ltcG9ydFJ1bGUoU3R5bGVSdWxlSW1wb3J0JiwgQ1NTU3R5bGVT
aGVldCopOwogCi0gICAgdmlydHVhbCBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBJTVBPUlRfUlVMRTsgfQorICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIElNUE9SVF9SVUxFOyB9CiAKICAgICBSZWY8U3R5bGVSdWxlSW1w
b3J0PiBtX2ltcG9ydFJ1bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8TWVkaWFMaXN0PiBtX21lZGlh
Q1NTT01XcmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1l
UnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lUnVsZS5oCmluZGV4IGE5NWJh
NjYwOTMyZDdhODVlNDdjZmIwNmZiY2YyYjIyMjlhYTc0OWUuLjYyODVhZTQ3MGE4NTE5N2VjNTAy
Njg3MmM5ZjM3NmYwMGFjNDhjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NL
ZXlmcmFtZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVSdWxlLmgK
QEAgLTY2LDggKzY2LDggQEAgY2xhc3MgQ1NTS2V5ZnJhbWVSdWxlIGZpbmFsIDogcHVibGljIENT
U1J1bGUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNTU0tleWZyYW1lUnVsZSgpOwogCi0gICAg
dmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fa2V5ZnJh
bWUtPmNzc1RleHQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNl
Jikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2tleWZyYW1lLT5jc3NUZXh0KCk7IH0KKyAgICB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJh
c2UmKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBrZXlUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlmcmFtZS0+a2V5VGV4dCgpOyB9CiAgICAgdm9pZCBzZXRLZXlUZXh0KGNvbnN0IFN0cmluZyYg
dGV4dCkgeyBtX2tleWZyYW1lLT5zZXRLZXlUZXh0KHRleHQpOyB9CkBAIC03Nyw3ICs3Nyw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ1NTS2V5ZnJhbWVSdWxlKFN0eWxlS2V5ZnJhbWUmLCBD
U1NLZXlmcmFtZXNSdWxlKiBwYXJlbnQpOwogCi0gICAgdmlydHVhbCBDU1NSdWxlOjpUeXBlIHR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBLRVlGUkFNRV9SVUxFOyB9CisgICAgQ1NTUnVs
ZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gS0VZRlJBTUVfUlVMRTsgfQog
CiAgICAgUmVmPFN0eWxlS2V5ZnJhbWU+IG1fa2V5ZnJhbWU7CiAgICAgbXV0YWJsZSBSZWZQdHI8
U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbj4gbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmgKaW5kZXggODY1YmJlZDBjMzAxNzM4NzVm
OTMxZTAzMmM3MGZjMjcwNzc1MWQ2MC4uNThhNzk5NDViZWI4OTQ0ZjM5NGU5NTQwMTYxNzZkOWNj
MWFkZDU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5oCkBAIC03MSw5ICs3
MSw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNTU0tleWZyYW1lc1J1bGUoKTsKIAotICAg
IHZpcnR1YWwgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gS0VZ
RlJBTUVTX1JVTEU7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmKSBvdmVycmlkZTsK
KyAgICBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBLRVlGUkFN
RVNfUlVMRTsgfQorICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgbmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1fa2V5ZnJhbWVzUnVsZS0+bmFtZSgpOyB9CiAgICAgdm9pZCBzZXRO
YW1lKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU01l
ZGlhUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU01lZGlhUnVsZS5oCmluZGV4IDIxYTUz
NjczYzViMmRiNDYxNDc2ZWFhMTgxM2QzZmNiNTY3MmNiOTcuLjY5MDg1OGU0MWIxMTRjMDVjYWFl
NDk1YTk3YTc3Nzk5ZWIwNTdiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NN
ZWRpYVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTWVkaWFSdWxlLmgKQEAgLTM2
LDE1ICszNiwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DU1NNZWRpYVJ1bGUoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVhdHRh
Y2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOworICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBNZWRpYUxpc3QqIG1lZGlhKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgQ1NTTWVkaWFSdWxlKFN0eWxlUnVsZU1lZGlhJiwgQ1NTU3R5bGVTaGVldCopOwogCi0gICAg
dmlydHVhbCBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNRURJ
QV9SVUxFOyB9CisgICAgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gTUVESUFfUlVMRTsgfQogCiAgICAgTWVkaWFRdWVyeVNldCogbWVkaWFRdWVyaWVzKCkgY29u
c3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCmluZGV4IDU2NDRjZDk1Nzc3OTg5OWI4
ZjFiZTI0YWM2MDNjZmZlNWI5NzIyY2EuLmY0ZDNlOWNjODM1YTI5OTFkMDIwY2Q5ZTc3Njc5Nzlm
Mjg4ZWFiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCkBAIC0zNyw4ICszNyw4IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgfkNTU1BhZ2VSdWxlKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoKFN0
eWxlUnVsZUJhc2UmKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOwogCiAgICAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiYgc3R5bGUoKTsKIApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIENTU1BhZ2VSdWxlKFN0eWxlUnVsZVBhZ2UmLCBDU1NTdHlsZVNoZWV0
Kik7CiAKLSAgICB2aXJ0dWFsIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFBBR0VfUlVMRTsgfQorICAgIENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBBR0VfUlVMRTsgfQogCiAgICAgUmVmPFN0eWxlUnVsZVBhZ2U+IG1fcGFn
ZVJ1bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbj4g
bV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1J1bGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaAppbmRleCA1
NDhmNTJlZGRmNzc5MDRlNzY4ODc1MjNhNzM4NDk3ZTI0OTFhZjI3Li44ZGIwMzdhMzQzN2YzZGMx
ZWVlZjg4ZTdiMDNhYTEyNmM0MDQ3NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUnVsZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUnVsZUxpc3QuaApAQCAt
NTQsMTkgKzU0LDE5IEBAIGNsYXNzIFN0YXRpY0NTU1J1bGVMaXN0IGZpbmFsIDogcHVibGljIENT
U1J1bGVMaXN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0YXRpY0NTU1J1bGVMaXN0PiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRpY0NTU1J1bGVMaXN0KTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHJlZigpIG92ZXJyaWRlIHsgKyttX3JlZkNvdW50OyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlcmVmKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWYoKSBvdmVycmlkZSB7ICsr
bV9yZWZDb3VudDsgfQorICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxS
ZWZQdHI8Q1NTUnVsZT4+JiBydWxlcygpIHsgcmV0dXJuIG1fcnVsZXM7IH0KICAgICAKLSAgICB2
aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9CisgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KIAogcHJpdmF0ZTogICAgCiAgICAgU3RhdGljQ1NTUnVs
ZUxpc3QoKTsKICAgICB+U3RhdGljQ1NTUnVsZUxpc3QoKTsKIAotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ydWxlcy5zaXplKCk7IH0KLSAg
ICB2aXJ0dWFsIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGluZGV4IDwgbV9ydWxlcy5zaXplKCkgPyBtX3J1bGVzW2luZGV4XS5nZXQoKSA6IG51
bGxwdHI7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3J1bGVzLnNpemUoKTsgfQorICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGluZGV4IDwgbV9ydWxlcy5zaXplKCkgPyBtX3J1bGVzW2luZGV4
XS5nZXQoKSA6IG51bGxwdHI7IH0KIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZT4+IG1fcnVs
ZXM7CiAgICAgdW5zaWduZWQgbV9yZWZDb3VudDsKQEAgLTc4LDEzICs3OCwxMyBAQCBjbGFzcyBM
aXZlQ1NTUnVsZUxpc3QgZmluYWwgOiBwdWJsaWMgQ1NTUnVsZUxpc3QgewogcHVibGljOgogICAg
IExpdmVDU1NSdWxlTGlzdChSdWxlKiBydWxlKSA6IG1fcnVsZShydWxlKSB7IH0KICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBtX3J1bGUtPnJlZigpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRlcmVmKCkgb3ZlcnJpZGUgeyBtX3J1bGUtPmRlcmVmKCk7IH0KKyAgICB2b2lk
IHJlZigpIG92ZXJyaWRlIHsgbV9ydWxlLT5yZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBvdmVy
cmlkZSB7IG1fcnVsZS0+ZGVyZWYoKTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ydWxlLT5sZW5ndGgoKTsgfQot
ICAgIHZpcnR1YWwgQ1NTUnVsZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9ydWxlLT5pdGVtKGluZGV4KTsgfQotICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcnVsZS0+cGFyZW50U3R5
bGVTaGVldCgpOyB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9ydWxlLT5sZW5ndGgoKTsgfQorICAgIENTU1J1bGUqIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcnVsZS0+aXRlbShpbmRleCk7IH0KKyAgICBDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ydWxlLT5w
YXJlbnRTdHlsZVNoZWV0KCk7IH0KICAgICAKICAgICBSdWxlKiBtX3J1bGU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaAppbmRleCA5MjAzNjEyZDA5MTEzNzFm
MGIwNGE4MDA3OTI2OTYxNTlmZWNlNTRjLi45MTc5YTA5N2Y0NDY4NzhiNTE5ZDYzM2IxYjFlYzNi
NTYwZDljMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZjxDU1NGb250RmFjZT4sIDE+
JiBjb25zdGl0dWVudEZhY2VzKCkgeyByZXR1cm4gbV9mb250RmFjZXM7IH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgZm9udExvYWRlZChDU1NGb250RmFjZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgZm9udExvYWRlZChDU1NGb250RmFjZSYpIG92ZXJyaWRlOwogCiAgICAgSGFzaE1hcDxG
b250RGVzY3JpcHRpb25LZXksIEZvbnRSYW5nZXMsIEZvbnREZXNjcmlwdGlvbktleUhhc2gsIFdU
Rjo6U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPEZvbnREZXNjcmlwdGlvbktleT4+IG1fY2FjaGU7CiAg
ICAgVmVjdG9yPFJlZjxDU1NGb250RmFjZT4sIDE+IG1fZm9udEZhY2VzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlUnVsZS5oCmluZGV4IDk2NzZhODQ1ODJjMGRjMWFkMzBjNmNmYzU4ZDdkM2FkNTA5YWI4
ZDMuLjg0NGU2NTlhNDJjNTgzNWFiNTNiYTk0ZmU5MTUyOGZmNmIxMGZlMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVSdWxlLmgKQEAgLTM2LDggKzM2LDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+Q1NTU3R5bGVSdWxlKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoKFN0eWxlUnVsZUJhc2UmKSBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVh
dHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHNlbGVjdG9yVGV4
dCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYpOwpAQCAt
NTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENTU1N0eWxlUnVsZShTdHlsZVJ1
bGUmLCBDU1NTdHlsZVNoZWV0Kik7CiAKLSAgICB2aXJ0dWFsIENTU1J1bGU6OlR5cGUgdHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNUWUxFX1JVTEU7IH0KKyAgICBDU1NSdWxlOjpUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVFlMRV9SVUxFOyB9CiAKICAgICBTdHJp
bmcgZ2VuZXJhdGVTZWxlY3RvclRleHQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmgKaW5kZXggZmMxOTNmYzAwNTczMDdkNTllZDdlODYyMDc2YTg4OWI4YzZlODUxMy4uOWYy
MjI1NTZhYzA0MjJhYzgxN2Q2MGVjMzgwYWZmMTAxNDM2ZjE0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTaGVldC5oCkBAIC01NiwxMyArNTYsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+
Q1NTU3R5bGVTaGVldCgpOwogCi0gICAgdmlydHVhbCBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHls
ZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOb2RlKiBvd25lck5vZGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX293bmVyTm9kZTsgfQotICAgIHZpcnR1YWwgTWVkaWFM
aXN0KiBtZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGhyZWYoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fdGl0bGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzRGlzYWJsZWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGlz
YWJsZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVl
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fb3duZXJOb2RlOyB9CisgICAgTWVkaWFMaXN0KiBtZWRpYSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFN0cmluZyBocmVmKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHRp
dGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90aXRsZTsgfQorICAgIGJvb2wgZGlzYWJs
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dERpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogICAgIAogICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4g
Y3NzUnVsZXMoKTsKICAgICB1bnNpZ25lZCBpbnNlcnRSdWxlKGNvbnN0IFN0cmluZyYgcnVsZSwg
dW5zaWduZWQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc4LDEwICs3OCwxMCBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgQ1NTUnVsZSogaXRlbSh1bnNp
Z25lZCBpbmRleCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPd25lck5vZGUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIENTU0ltcG9ydFJ1bGUqIG93bmVyUnVsZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fb3duZXJSdWxlOyB9Ci0gICAgdmlydHVhbCBVUkwgYmFzZVVSTCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRpbmcoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGNsZWFyT3duZXJOb2RlKCkgb3ZlcnJpZGU7CisgICAgQ1NTSW1wb3J0UnVsZSog
b3duZXJSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vd25lclJ1bGU7IH0KKyAgICBV
UkwgYmFzZVVSTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBjbGVhck93bmVyUnVsZSgpIHsgbV9vd25lclJ1bGUg
PSAwOyB9CiAgICAgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQoKSBjb25zdDsKQEAgLTEyOCw4ICsx
MjgsOCBAQCBwcml2YXRlOgogICAgIENTU1N0eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4mJiwgQ1NTSW1wb3J0UnVsZSogb3duZXJSdWxlKTsKICAgICBDU1NTdHlsZVNoZWV0KFJlZjxT
dHlsZVNoZWV0Q29udGVudHM+JiYsIE5vZGUqIG93bmVyTm9kZSwgY29uc3QgVGV4dFBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uLCBib29sIGlzSW5saW5lU3R5bGVzaGVldCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBU0NJSUxp
dGVyYWwoInRleHQvY3NzIik7IH0KKyAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgidGV4dC9jc3MiKTsgfQogCiAgICAgYm9vbCBjYW5BY2Nl
c3NSdWxlcygpIGNvbnN0OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N1cHBvcnRzUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N1cHBvcnRzUnVsZS5oCmlu
ZGV4IDhhM2UzNmJmN2VmODlmODM4ODVjYzY3MjgzNWRkYmRjZDUxODNkM2EuLjVlNWNjYzk1ZDZj
NTVkZjYwYzA4ZTgyMzg3ZTk5MmFlNDBkN2UwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdXBwb3J0c1J1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3VwcG9y
dHNSdWxlLmgKQEAgLTQ1LDE0ICs0NSwxNCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DU1NT
dXBwb3J0c1J1bGUoKSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3Ry
aW5nIGNvbmRpdGlvblRleHQoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBDU1NTdXBwb3J0c1J1
bGUoU3R5bGVSdWxlU3VwcG9ydHMmLCBDU1NTdHlsZVNoZWV0Kik7CiAKLSAgICB2aXJ0dWFsIENT
U1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNVUFBPUlRTX1JVTEU7
IH0KKyAgICBDU1NSdWxlOjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVVBQ
T1JUU19SVUxFOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5rbm93blJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NVbmtub3duUnVsZS5oCmluZGV4IGI4YjZlZjk4NzkzYTBiNjczN2Y3M2IwMTVjM2NiMjQ4NjFm
ODYyZmMuLjJmYWNhZjVmZjFmMzBhZDhiNDhiODM5ZjFkZTI2ZWVkNDZkOWRlZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmtub3duUnVsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NVbmtub3duUnVsZS5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+Q1NTVW5rbm93blJ1bGUoKSB7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIGNz
c1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwg
dm9pZCByZWF0dGFjaChTdHlsZVJ1bGVCYXNlJikgb3ZlcnJpZGUgeyB9CisgICAgU3RyaW5nIGNz
c1RleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQorICAgIHZvaWQgcmVh
dHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlIHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVU5LTk9XTl9S
VUxFOyB9CisgICAgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VU5LTk9XTl9SVUxFOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5oCmluZGV4IDEwYTE3NzAxMGJmN2U1NzEzOTljOWRlZWE5NWEwZGMyNTcyNGI0NDMuLjlh
YTVkMTIxZjU1MjA5NDFkYzkzNjA1Nzg3OTIwNmE4MGUyODk3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8Q1NTVmFs
dWU+IHBhcnNlU3RyaW5nKGNvbnN0IFN0cmluZyYsIENTU1Byb3BlcnR5SUQpOwogCi0gICAgdmly
dHVhbCB2b2lkIGZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3Rh
dHVzIG9sZFN0YXRlLCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZvbnRTdGF0ZUNoYW5nZWQoQ1NTRm9udEZhY2UmLCBDU1NGb250RmFjZTo6U3RhdHVz
IG9sZFN0YXRlLCBDU1NGb250RmFjZTo6U3RhdHVzIG5ld1N0YXRlKSBvdmVycmlkZTsKIAogICAg
IFdlYWtQdHI8Rm9udEZhY2U+IGNyZWF0ZVdlYWtQdHIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZhY2VTZXQuaAppbmRleCA4NzFmM2JjZTNiZWQ5ZTk5MTliOGQyNTc3N2E2ZTk4NTc1MmU2YmQw
Li5iMzBjZDQ1ZmI2ODM3MjlmYThkNzZlYWJjOTFmMDQ5OWViMDVhZTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Rm9udEZhY2VTZXQuaApAQCAtMTA5LDE5ICsxMDksMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZ1
bGZpbGxQcm9taXNlKCk7CiAKICAgICAvLyBDU1NGb250RmFjZVNldENsaWVudAotICAgIHZpcnR1
YWwgdm9pZCBzdGFydGVkTG9hZGluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb21w
bGV0ZWRMb2FkaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZhY2VGaW5pc2hlZChD
U1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpTdGF0dXMpIG92ZXJyaWRlOworICAgIHZvaWQgc3Rh
cnRlZExvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXBsZXRlZExvYWRpbmcoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGZhY2VGaW5pc2hlZChDU1NGb250RmFjZSYsIENTU0ZvbnRGYWNlOjpT
dGF0dXMpIG92ZXJyaWRlOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgdmlydHVhbCBj
b25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IkZvbnRGYWNlU2V0IjsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRT
dXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2Jq
ZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJGb250RmFjZVNldCI7IH0KKyAgICBi
b29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZvbnRGYWNlU2V0RXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0
aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdl
dEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEZvbnRGYWNlU2V0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZl
bnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAogICAgIFJlZjxDU1NGb250RmFjZVNl
dD4gbV9iYWNraW5nOwogICAgIEhhc2hNYXA8UmVmUHRyPENTU0ZvbnRGYWNlPiwgVmVjdG9yPFJl
ZjxQZW5kaW5nUHJvbWlzZT4+PiBtX3BlbmRpbmdQcm9taXNlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCA2MDg3ODBm
OGMyOTE4YTRlYTVkM2EzZTdhYTFhYWQ5ZDBjODI4ZTFkLi4yMWJlZDM3NWYwZDg2YzQ5YmMyN2E5
NDEzMzczMzQxYjExZmQyNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3Bl
cnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC00NywyNyArNDcsMjcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclBhcmVudEVsZW1lbnQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCgpIGNvbnN0
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCByZWYoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGVyZWYoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZigpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVyZWYoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIENTU1J1bGUqIHBhcmVu
dFJ1bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bl
cnR5TmFtZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlW
YWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFt
ZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHlTaG9ydGhh
bmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgYm9vbCBpc1Byb3BlcnR5SW1wbGljaXQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBwcmlvcml0
eSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgU3RyaW5nIHJl
bW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDc3NUZXh0KGNvbnN0IFN0cmluZyYsIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlZlB0cjxDU1NWYWx1
ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgU3RyaW5nIGdldFByb3BlcnR5VmFsdWVJbnRlcm5hbChDU1NQcm9w
ZXJ0eUlEKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0UHJvcGVydHlJbnRl
cm5hbChDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIENTU1J1bGUqIHBhcmVudFJ1bGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdW5zaWduZWQgbGVuZ3Ro
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFJlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlD
U1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkgb3ZlcnJpZGUgZmluYWw7CisgICAg
U3RyaW5nIGdldFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJy
aWRlIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lKSBvdmVycmlkZSBmaW5hbDsKKyAgICBTdHJpbmcgZ2V0UHJvcGVydHlTaG9y
dGhhbmQoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpIG92ZXJyaWRlIGZpbmFsOworICAgIGJv
b2wgaXNQcm9wZXJ0eUltcGxpY2l0KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIHByaW9yaXR5LCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgU3RyaW5nIHJlbW92ZVByb3BlcnR5KGNvbnN0IFN0
cmluZyYgcHJvcGVydHlOYW1lLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
U3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHNldENzc1Rl
eHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZUludGVybmFsKENTU1Byb3BlcnR5SUQp
IG92ZXJyaWRlIGZpbmFsOworICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlSW50ZXJuYWwoQ1NT
UHJvcGVydHlJRCkgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBzZXRQcm9wZXJ0eUludGVybmFs
KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgCi0gICAgdmlydHVhbCBSZWY8TXV0YWJs
ZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICBSZWY8TXV0YWJsZVN0eWxlUHJvcGVydGllcz4gY29weVByb3BlcnRpZXMoKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKIAogICAgIENTU1ZhbHVlKiBjbG9uZUFuZENhY2hlRm9yQ1NTT00oQ1NT
VmFsdWUqKTsKICAgICAKQEAgLTkxLDIwICs5MSwyMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyUGFyZW50UnVsZSgpIHsgbV9wYXJlbnRSdWxlID0gMDsgfQogICAgIAotICAgIHZpcnR1YWwg
dm9pZCByZWYoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlZigpIG92ZXJyaWRlOworICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcmVhdHRhY2goTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogCiBwcml2YXRlOgog
ICAgIFN0eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb24oTXV0YWJsZVN0eWxlUHJvcGVydGllcyYs
IENTU1J1bGUmKTsKIAotICAgIHZpcnR1YWwgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVl
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQo
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyZW50UnVsZTsgIH0KKyAgICBDU1NSdWxlKiBwYXJl
bnRSdWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXJlbnRSdWxlOyAgfQogCi0gICAg
dmlydHVhbCBib29sIHdpbGxNdXRhdGUoKSBvdmVycmlkZSBXQVJOX1VOVVNFRF9SRVRVUk47Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZE11dGF0ZShNdXRhdGlvblR5cGUpIG92ZXJyaWRlOworICAgIGJv
b2wgd2lsbE11dGF0ZSgpIG92ZXJyaWRlIFdBUk5fVU5VU0VEX1JFVFVSTjsKKyAgICB2b2lkIGRp
ZE11dGF0ZShNdXRhdGlvblR5cGUpIG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgbV9yZWZDb3Vu
dDsKICAgICBDU1NSdWxlKiBtX3BhcmVudFJ1bGU7CkBAIC0xMjAsMTEgKzEyMCwxMSBAQCBwdWJs
aWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIENTU1N0eWxlU2hlZXQqIHBh
cmVudFN0eWxlU2hlZXQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0eWxlZEVsZW1l
bnQqIHBhcmVudEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmVudEVsZW1l
bnQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQYXJlbnRFbGVtZW50KCkgb3ZlcnJpZGUgeyBt
X3BhcmVudEVsZW1lbnQgPSAwOyB9CisgICAgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVl
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0eWxlZEVsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmVudEVsZW1lbnQ7IH0KKyAgICB2b2lkIGNsZWFy
UGFyZW50RWxlbWVudCgpIG92ZXJyaWRlIHsgbV9wYXJlbnRFbGVtZW50ID0gMDsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRpZE11dGF0ZShNdXRhdGlvblR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkTXV0YXRlKE11dGF0aW9uVHlwZSkgb3ZlcnJpZGU7CiAKICAgICBTdHlsZWRFbGVtZW50KiBt
X3BhcmVudEVsZW1lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1JlZ2lvblJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NSZWdpb25SdWxl
LmgKaW5kZXggZmI1ZDAyODVlNGI4YjE5NDg4YmM1ODg3N2MzZTQ4NDg3ZGExOTY4MS4uY2Y1MzUw
MDg0YzFmOGFlNjYyZjAwYmQyNjRjNzU1M2RhNmYyMjMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1JlZ2lvblJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTUmVnaW9uUnVsZS5oCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNzIFdlYktpdENTU1Jl
Z2lvblJ1bGUgZmluYWwgOiBwdWJsaWMgQ1NTR3JvdXBpbmdSdWxlIHsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPFdlYktpdENTU1JlZ2lvblJ1bGU+IGNyZWF0ZShTdHlsZVJ1bGVSZWdpb24mIHJ1
bGUsIENTU1N0eWxlU2hlZXQqIHNoZWV0KSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYktpdENT
U1JlZ2lvblJ1bGUocnVsZSwgc2hlZXQpKTsgfQogCi0gICAgdmlydHVhbCBDU1NSdWxlOjpUeXBl
IHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXRUJLSVRfUkVHSU9OX1JVTEU7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ1NTUnVsZTo6
VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV0VCS0lUX1JFR0lPTl9SVUxFOyB9
CisgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBX
ZWJLaXRDU1NSZWdpb25SdWxlKFN0eWxlUnVsZVJlZ2lvbiYsIENTU1N0eWxlU2hlZXQqIHBhcmVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVmlld3BvcnRSdWxlLmgKaW5kZXggNGYw
NTMxODJkMDY0NjNmZWNlYjU2ZDdjN2VjMmZmZTkxMmQ3NjJmZS4uNDI1ZjM4YjEwOTFhN2E5ZTk4
NWI5NGY0YjM3NTY0M2IxYWQwZGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1ZpZXdwb3J0UnVsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NW
aWV3cG9ydFJ1bGUuaApAQCAtNDksMTUgKzQ5LDE1IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmly
dHVhbCB+V2ViS2l0Q1NTVmlld3BvcnRSdWxlKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBjc3NU
ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoKFN0eWxlUnVs
ZUJhc2UmKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVhdHRhY2goU3R5bGVSdWxlQmFzZSYpIG92ZXJyaWRlOwogCiAgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiYgc3R5bGUoKTsKIAogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NWaWV3cG9y
dFJ1bGUoU3R5bGVSdWxlVmlld3BvcnQmLCBDU1NTdHlsZVNoZWV0Kik7CiAKLSAgICB2aXJ0dWFs
IENTU1J1bGU6OlR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdFQktJVF9WSUVX
UE9SVF9SVUxFOyB9CisgICAgQ1NTUnVsZTo6VHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gV0VCS0lUX1ZJRVdQT1JUX1JVTEU7IH0KIAogICAgIFJlZjxTdHlsZVJ1bGVWaWV3cG9y
dD4gbV92aWV3cG9ydFJ1bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVSdWxlQ1NTU3R5bGVE
ZWNsYXJhdGlvbj4gbV9wcm9wZXJ0aWVzQ1NTT01XcmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTUNhbGxiYWNrTWljcm90YXNrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2suaAppbmRleCA4YWI5ZTBlNmRiZWQzZjli
NGY0M2JkNDRhYzc2OGI1MjdlZmMyZmU2Li5hMGM0MDQ2YTNiYTJjNGZmNmVkMDkxNTljZDg5ZTlj
ZTNhZmJhYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJh
Y2tNaWNyb3Rhc2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NQ2FsbGJhY2tN
aWNyb3Rhc2suaApAQCAtMzcsMTAgKzM3LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBBY3RpdmVET01DYWxsYmFja01pY3JvdGFzayhNaWNyb3Rhc2tRdWV1ZSYsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4mJik7CiAgICAgdmlydHVhbCB+QWN0
aXZlRE9NQ2FsbGJhY2tNaWNyb3Rhc2soKTsKIAotICAgIHZpcnR1YWwgUmVzdWx0IHJ1bigpIG92
ZXJyaWRlOworICAgIFJlc3VsdCBydW4oKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY29udGV4dERl
c3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IEl0IHNob3VsZCBub3QgYmUgbmVj
ZXNzYXJ5IHRvIGhhdmUgdGhlIHF1ZXVlIGFzIGEgbWVtYmVyLiBJbnN0ZWFkLCBpdCBzaG91bGQK
ICAgICAvLyBiZSBhY2Nlc3NlZCB2aWEgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHdoaWNo
IHNob3VsZCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSByZWxldmVudApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0FuaW1hdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQW5p
bWF0aW9uRXZlbnQuaAppbmRleCA2ZWM5OTU0MGQwNzk4NDU4ZDAwZmE1ZjYwMjYyNzg0Y2Y2ZWEy
NmRlLi5mN2NkYWVjOTdkZmI2ODg4NWY1N2ZjODcxOTFmNjhjMDE1OTY1MDczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5pbWF0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQW5pbWF0aW9uRXZlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKCkgY29uc3Q7CiAgICAgZG91YmxlIGVsYXBzZWRUaW1l
KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBBbmltYXRpb25FdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIGVsYXBzZWRU
aW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQXR0ci5oCmluZGV4IDc4MTI5NTdkMDA1NTIxOThiN2E1Yjg1ZTAyNzVmMjIzM2Qz
YzRkZmMuLmJkZDAyNDU3MDI3ZDI3ODhjNzFhNGI1ZGNmNGUyMjE1NDc1Yzc0OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0F0
dHIuaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhdHRhY2hUb0VsZW1lbnQo
RWxlbWVudCopOwogICAgIHZvaWQgZGV0YWNoRnJvbUVsZW1lbnRXaXRoVmFsdWUoY29uc3QgQXRv
bWljU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNl
VVJJKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9uYW1lLm5hbWVzcGFjZVVSSSgpOyB9Cisg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX25hbWUubmFtZXNwYWNlVVJJKCk7IH0KIAogcHJpdmF0ZToKICAgICBBdHRyKEVsZW1l
bnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CkBAIC03MSwyMiArNzEsMjIgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgY3JlYXRlVGV4dENoaWxkKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBub2Rl
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5hbWUoKTsgfQotICAgIHZpcnR1YWwgTm9k
ZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBBVFRSSUJVVEVfTk9ERTsg
fQorICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG5hbWUoKTsg
fQorICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVRUUklC
VVRFX05PREU7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX25hbWUubG9jYWxOYW1lKCk7IH0KLSAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9uYW1lLnByZWZpeCgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX25hbWUubG9jYWxOYW1lKCk7IH0KKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHByZWZpeCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbmFtZS5wcmVm
aXgoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcm
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcmVmaXgoY29uc3QgQXRv
bWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBTdHJp
bmcgbm9kZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdmFsdWUoKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50
JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG5vZGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZhbHVlKCk7IH0KKyAgICB2b2lkIHNldE5vZGVWYWx1ZShj
b25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgUmVmPE5vZGU+IGNs
b25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNBdHRyaWJ1dGVOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQXR0cmlidXRlTm9kZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKICAgICBBdHRyaWJ1dGUmIGVsZW1lbnRBdHRyaWJ1dGUo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oCmluZGV4IGM5NmNhZjhhNGM1YWRl
MDNkYzE1ZWU5NmI4ZGNiNWU3NjMwMzY2NzcuLjk0ZTlhMGRjNTQzYzg5ZTZlZjY5M2Q3YzE4ZTQx
NDEzYThmZmNmZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVMb2FkRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQmVmb3JlTG9hZEV2ZW50LmgKQEAgLTUwLDcg
KzUwLDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVy
biBtX3VybDsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJlZm9yZUxvYWRFdmVudEludGVyZmFjZVR5cGU7IH0K
KyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEJlZm9yZUxvYWRFdmVudEludGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBCZWZvcmVMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiB1cmwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oCmluZGV4IDM0ODNhMTEzNGY3Nzc4NjBjOTk1
MmQ0OGIyMTgwYmMzNjI4M2M0ZmEuLjVkNDI1NDJmNjYyOWI3N2JmOGFkOTQwYWEyNzFhM2RmNDNk
MzQyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5o
CkBAIC0zOSwxNCArMzksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCh0ZXh0KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50
SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBT
dHJpbmcmIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KICAgICB2b2lkIHNldFRleHQo
Y29uc3QgU3RyaW5nJiBzKSB7IG1fdGV4dCA9IHM7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGlzQmVmb3JlVGV4dEluc2VydGVkRXZlbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0JlZm9yZVVubG9hZEV2ZW50LmgKaW5kZXggYWVmOTBiZjhjYWViZjUzMDE3Y2RlNDM4N2Yy
YWE1ZGQyMDExYzlmMy4uMTQ1ZmZmYThlMDRiY2QwOGRkOTg4ZWQ2OWQ5ZDBiZWQzNTg5NDgzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmgKQEAgLTQxLDEyICs0MSwxMiBA
QCBwdWJsaWM6CiAgICAgU3RyaW5nIHJldHVyblZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yZXR1
cm5WYWx1ZTsgfQogICAgIHZvaWQgc2V0UmV0dXJuVmFsdWUoY29uc3QgU3RyaW5nJiByZXR1cm5W
YWx1ZSkgeyBtX3JldHVyblZhbHVlID0gcmV0dXJuVmFsdWU7IH0KIAotICAgIHZpcnR1YWwgRXZl
bnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCZWZv
cmVVbmxvYWRFdmVudEludGVyZmFjZVR5cGU7IH0KKyAgICBFdmVudEludGVyZmFjZSBldmVudElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJlZm9yZVVubG9hZEV2ZW50SW50ZXJm
YWNlVHlwZTsgfQogCiBwcml2YXRlOgogICAgIEJlZm9yZVVubG9hZEV2ZW50KCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNCZWZvcmVVbmxvYWRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNCZWZvcmVVbmxvYWRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1f
cmV0dXJuVmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2Vj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5oCmluZGV4IGQ2Yjk5Mzdk
ZmM3NWE1OGU5NmVhYjUyZGYyNmFkOWI0YjdkZWYyNjIuLmM0OTBiMWZhM2IyNzM2N2ZmZjY1YTlh
NDc2ZWY4ZjhmZjRmYzBjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DREFUQVNl
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmgKQEAgLTM0LDEx
ICszNCwxMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENEQVRBU2VjdGlvbihEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9u
aW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dl
ZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWY8VGV4dD4gdmlydHVh
bENyZWF0ZShjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgbm9kZU5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRp
b24pIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmPFRleHQ+IHZpcnR1YWxDcmVhdGUoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3Rl
ckRhdGEuaAppbmRleCAxNmMzZGUwMGY3Y2JjMzkyOGMzZjFiODVhOWY2NzczODg2M2YxYTBiLi43
NmQ0OTg1NGExYWY4MjYxZWI1MmRmYmU4NDI0OTYwYzdkZWNmOWRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmgKQEAgLTYzLDExICs2MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBk
aXNwYXRjaE1vZGlmaWVkRXZlbnQoY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSk7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGlzQ2hhcmFjdGVyRGF0YU5vZGUo
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBpbnQg
bWF4Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBi
b29sIG9mZnNldEluQ2hhcmFjdGVycygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFN0cmlu
ZyBub2RlVmFsdWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHNldE5vZGVWYWx1
ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9v
bCBpc0NoYXJhY3RlckRhdGFOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGludCBtYXhDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICBib29sIG9mZnNldEluQ2hhcmFjdGVycygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAg
IHZvaWQgc2V0RGF0YUFuZFVwZGF0ZShjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCBvZmZzZXRPZlJl
cGxhY2VkRGF0YSwgdW5zaWduZWQgb2xkTGVuZ3RoLCB1bnNpZ25lZCBuZXdMZW5ndGgpOwogICAg
IHZvaWQgY2hlY2tDaGFyRGF0YU9wZXJhdGlvbih1bnNpZ25lZCBvZmZzZXQsIEV4Y2VwdGlvbkNv
ZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9DaGlsZE5vZGVMaXN0LmgKaW5kZXggMDllZGJmMjk4ZDk1ZjQ1
YjFjOTJiMmY4Y2MwM2QyMzdlOGJhZTBmZS4uYjBiMjU2M2E1ODkwNjlhMDE4MDU0MTg1MWFmODM1
ZmM4NzM2NGVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlzdC5oCkBAIC00NiwxMSArNDYs
MTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBFbXB0eU5vZGVMaXN0KE5vZGUm
IG93bmVyKSA6IG1fb3duZXIob3duZXIpIHsgfQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVt
KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB1
bnNpZ25lZCBsZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgTm9kZSog
aXRlbSh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHNp
emVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgdmly
dHVhbCBib29sIGlzRW1wdHlOb2RlTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzRW1wdHlOb2RlTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFJlZjxOb2RlPiBtX293bmVyOwogfTsKQEAgLTgwLDExICs4MCwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENoaWxkTm9kZUxpc3QoQ29udGFpbmVyTm9k
ZSYgcGFyZW50KTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKTsgfQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
bmRleENhY2hlLm1lbW9yeUNvc3QoKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzQ2hpbGROb2Rl
TGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ2hpbGRO
b2RlTGlzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZjxDb250
YWluZXJOb2RlPiBtX3BhcmVudDsKICAgICBtdXRhYmxlIENvbGxlY3Rpb25JbmRleENhY2hlPENo
aWxkTm9kZUxpc3QsIE5vZGUqPiBtX2luZGV4Q2FjaGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ2xpcGJvYXJkRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRF
dmVudC5oCmluZGV4IGVhZWQzNmM4Y2YxMWMwYjFhNDNjYWJkZjdjYmE0MTE4OWQxYzQ3NjIuLmY0
MWExYzk4ZWRiNDc5NWE1YzVmMGE4ZGM3MzZmZWEzZjE1YWUzYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9DbGlwYm9hcmRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
bGlwYm9hcmRFdmVudC5oCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2xpcGJvYXJkRXZlbnQodHlwZSwgY2Fu
QnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnLCBjbGlwYm9hcmRBcmcpKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpcnR1YWwgRGF0YVRyYW5zZmVyKiBpbnRlcm5hbERhdGFUcmFuc2ZlcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YVRyYW5zZmVyLmdldCgpOyB9CisgICAgICAgIERhdGFU
cmFuc2ZlciogaW50ZXJuYWxEYXRhVHJhbnNmZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2RhdGFUcmFuc2Zlci5nZXQoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2xpcGJvYXJk
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZUFyZywgYm9vbCBj
YW5jZWxhYmxlQXJnLCBEYXRhVHJhbnNmZXIqKTsKIAotICAgICAgICB2aXJ0dWFsIEV2ZW50SW50
ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0NsaXBib2FyZEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIEV2ZW50SW50
ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXND
bGlwYm9hcmRFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgICAgIFJlZlB0cjxEYXRhVHJh
bnNmZXI+IG1fZGF0YVRyYW5zZmVyOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuaAppbmRleCAxNTY2
MzIzMzJhMjA2OGYzYTliODUyNmNiY2M3NDY1NDg2MTU5OWMxLi45Nzk4MmNjZDI5ZDIzMTE3MTVi
NWFhNDJmOTNhZjIyODIyNTBjNTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29t
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmgKQEAgLTM0LDEwICszNCwx
MCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENvbW1lbnQoRG9jdW1lbnQmLCBjb25zdCBTdHJp
bmcmKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlv
bikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPE5vZGU+IGNs
b25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zaXRpb25FdmVudC5o
CmluZGV4IDRhYjI2ODhjM2RmZDQ4MDgxYjk4ZmIwM2M4OWMwZjcxNTg3MTNkOGMuLjQ5NTM2MjUx
NjdjMjBmMWQ2ZGI5YzQ5Y2IzNDUyZDJmZTFmNzMzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Db21wb3NpdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBv
c2l0aW9uRXZlbnQuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgZGF0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2
ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ29tcG9zaXRp
b25FdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUV2ZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAppbmRleCAyY2I1YzE2NGQ5YTJmN2U0
MDBlZjNmZTBjNzkwZjliMDRkOGQxZDU1Li41YjQ2OTdjNTFhMmIyNWVmZjQ1N2U5YmY4NGM0MzQw
YWNkMTllNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRXZlbnQuaApAQCAtNTIsNyArNTIsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGluaXRDdXN0b21FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IERlcHJlY2F0ZWQ6OlNj
cmlwdFZhbHVlJiBkZXRhaWwpOwogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJm
YWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgZGV0YWlsKCkgY29uc3QgeyByZXR1cm4gbV9kZXRhaWw7IH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IGJjNmE3ODIzMDM1NjY3ZTI3ZjA5YzNl
YzdhNzg3ODNlMzI0ZDEzN2EuLjM2ZWNkNThkMmRkNWFjNGQ1OWI5NzhlMmFlMGZiZGY4YzE4NjI5
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApAQCAtODEsOCAr
ODEsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBtZWRp
YVBsYXllck5lZWRzU2l0ZVNwZWNpZmljSGFja3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X25lZWRzSGFja3M7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBsYXllckRvY3VtZW50SG9z
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9zdDsgfQorICAgIGJvb2wgbWVkaWFQbGF5
ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZWVk
c0hhY2tzOyB9CisgICAgU3RyaW5nIG1lZGlhUGxheWVyRG9jdW1lbnRIb3N0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9ob3N0OyB9CiAKICAgICBib29sIG1fbmVlZHNIYWNrczsKICAgICBT
dHJpbmcgbV9ob3N0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCAwYzhmMmNi
YWU5YmRiYzNmZjkyYjdjNWRhNzhjYTYwN2YzYjhhZDQ2Li5mY2QwZjZhOTMzZTQ3OWU0YTliODU3
NzQ1MzM1MjhkYmVjYWUwNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAt
NDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9wTG9hZGluZyhDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRJbWFnZT4mKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW1h
Z2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCopIG92ZXJyaWRlOworICAgIHZv
aWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVjdCopIG92ZXJyaWRlOwog
ICAgIERhdGFUcmFuc2ZlciogbV9kYXRhVHJhbnNmZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaAppbmRleCBkZmU0ZTliZGY3YmRiODg1
ZGZlMzFhOGUyNmRjZWRkYjExZjhlNDEyLi5jODFlMjhiZTg3NzllZDE0MmRjZWJjNzhjNWE2OTEy
ODI1OTI4MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGVjb2RlZERhdGFEb2N1
bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZWNvZGVkRGF0YURvY3VtZW50
UGFyc2VyLmgKQEAgLTQxLDExICs0MSwxMSBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
Ly8gYXBwZW5kIGlzIHVzZWQgYnkgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmKSBvdmVycmlkZSA9IDA7
CisgICAgdm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlID0gMDsKIAog
ICAgIC8vIGFwcGVuZEJ5dGVzIGFuZCBmbHVzaCBhcmUgdXNlZCBieSBEb2N1bWVudFdyaXRlciAo
dGhlIGxvYWRlcikuCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVy
JiwgY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBmbHVzaChEb2N1bWVudFdyaXRlciYpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5k
Qnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBmbHVzaChEb2N1bWVudFdyaXRlciYpIG92ZXJyaWRlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25Db250cm9sbGVyLmgKaW5kZXgg
MTRkYzc0NGI1YjQ0YWRhMDViM2YzZGIzYWRmODk4MWRjZjllZGEyNy4uYzAyZmQxZjhlMzc2Mzgx
NDQwNzY4NzA1ZjU1YzM0ZDA1YTQ3Y2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RldmljZU1vdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
TW90aW9uQ29udHJvbGxlci5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZENoYW5nZURldmljZU1vdGlvbihEZXZpY2VNb3Rpb25EYXRhKik7CiAgICAgRGV2aWNlTW90aW9u
Q2xpZW50KiBkZXZpY2VNb3Rpb25DbGllbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNMYXN0
RGF0YSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPEV2ZW50PiBnZXRMYXN0RXZlbnQo
KSBvdmVycmlkZTsKKyAgICBib29sIGhhc0xhc3REYXRhKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PEV2ZW50PiBnZXRMYXN0RXZlbnQoKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzdXBwbGVtZW50TmFtZSgpOwogICAgIHN0YXRpYyBEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBm
cm9tKFBhZ2UqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VNb3Rpb25F
dmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2ZW50LmgKaW5kZXggNGE0
ZDA3M2VhNmY4MjY4YmEwYzdmZjZlMDkwNjhjMDYwM2FkNWI1NC4uMzhhNmE4MjliNDg4ZTlmZGU5
NTk5ZGUwMGJjNDU1NmYxNTIzNjc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rl
dmljZU1vdGlvbkV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU1vdGlvbkV2
ZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGljOgogCiAgICAgRGV2aWNlTW90aW9uRGF0YSog
ZGV2aWNlTW90aW9uRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGV2aWNlTW90aW9uRGF0YS5nZXQo
KTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgRGV2aWNlTW90aW9uRXZlbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaAppbmRleCBiMDFmOGQx
YTYyYjA0NzkyYjM1Zjg0M2EyZmYwMDg1N2E1MzExNDM4Li5hNzM0NjU2OWRkYWQ1ZDY5NjBmMzJh
NGMzNmExYTI2Y2U5NjUwNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RldmljZU9y
aWVudGF0aW9uQ29udHJvbGxlci5oCkBAIC01Miw4ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHN1c3BlbmRVcGRhdGVzKCk7CiAgICAgdm9pZCByZXN1bWVVcGRhdGVzKCk7CiAjZWxzZQotICAg
IHZpcnR1YWwgYm9vbCBoYXNMYXN0RGF0YSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRy
PEV2ZW50PiBnZXRMYXN0RXZlbnQoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc0xhc3REYXRhKCkg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEV2ZW50PiBnZXRMYXN0RXZlbnQoKSBvdmVycmlkZTsKICNl
bmRpZgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RldmljZU9yaWVudGF0aW9uRXZlbnQuaAppbmRleCAxMTNkYTU5ZmUzMGRl
MzBlZGY4ZTcyMDMwYTlmZDEzOTc5MjU3YjQ2Li41MTQ5NzE4MDIzOWNiYWM3NTI0ZDIzMGZmNTY2
ZjY0YjlmZGIwMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGV2aWNlT3JpZW50
YXRpb25FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EZXZpY2VPcmllbnRhdGlvbkV2
ZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgRGV2aWNlT3JpZW50YXRpb25E
YXRhKiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7IH0K
IAotICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiBwcml2YXRlOgogICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggMWQ3MmZkZWU2ZGIyNGNiZThhODViYzVkZWE5NGI2ZTliY2Y2NTI0My4uYjdj
NWU2ZDQyZmQyMWFmMjYxMTFjZmRjZmUwM2U2MjllMWUyODFmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTM0MSw3ICszNDEsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ29udGFpbmVyTm9kZTo6
cmVmOwogICAgIHVzaW5nIENvbnRhaW5lck5vZGU6OmRlcmVmOwogCi0gICAgdmlydHVhbCBib29s
IGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBFbGVtZW50KiBnZXRFbGVtZW50QnlBY2Nl
c3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpOwogICAgIHZvaWQgaW52YWxpZGF0ZUFjY2Vzc0tleU1h
cCgpOwpAQCAtNTk2LDkgKzU5Niw5IEBAIHB1YmxpYzoKIAogICAgIC8vIE92ZXJyaWRlIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQgbWV0aG9kcyB0byBkbyBhZGRpdGlvbmFsIHdvcmsKICAgICBib29s
IHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3Rp
dmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24pIG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29u
Rm9yU3VzcGVuc2lvbikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BBY3Rp
dmVET01PYmplY3RzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9N
T2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24pIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24pIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc3RvcEFjdGl2ZURP
TU9iamVjdHMoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIHZvaWQgc3VzcGVuZERldmljZU1vdGlv
bkFuZE9yaWVudGF0aW9uVXBkYXRlcygpOwogICAgIHZvaWQgcmVzdW1lRGV2aWNlTW90aW9uQW5k
T3JpZW50YXRpb25VcGRhdGVzKCk7CkBAIC02NDAsNyArNjQwLDcgQEAgcHVibGljOgogCiAgICAg
Ym9vbCB3ZWxsRm9ybWVkKCkgY29uc3QgeyByZXR1cm4gbV93ZWxsRm9ybWVkOyB9CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV91
cmw7IH0KKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1fdXJsOyB9CiAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJik7CiAgICAgY29uc3QgVVJMJiB1
cmxGb3JCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmlzRW1wdHkoKSA/IGJsYW5rVVJM
KCkgOiBtX3VybDsgfQogCkBAIC02NTMsMTIgKzY1MywxMiBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiBiYXNlVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9iYXNlVGFyZ2V0OyB9CiAgICAg
dm9pZCBwcm9jZXNzQmFzZUVsZW1lbnQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
VVJMIGNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIFVSTCBjb21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKICAgICBVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgVVJM
JiBiYXNlVVJMT3ZlcnJpZGUpIGNvbnN0OwogCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFN0cmluZyB1c2VyQWdlbnQo
Y29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZvaWQgZGlzYWJsZUV2YWwoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG92ZXJyaWRlIGZp
bmFsOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZShGcmFtZSogdGFyZ2V0RnJhbWUpOwogICAgIEZy
YW1lKiBmaW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpOwpAQCAtOTc4
LDcgKzk3OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0ROU1ByZWZldGNoRW5hYmxlZDsgfQogICAgIHZvaWQgcGFyc2VETlNQ
cmVmZXRjaENvbnRyb2xIZWFkZXIoY29uc3QgU3RyaW5nJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cG9zdFRhc2soVGFzaykgb3ZlcnJpZGUgZmluYWw7IC8vIEV4ZWN1dGVzIHRoZSB0YXNrIG9uIGNv
bnRleHQncyB0aHJlYWQgYXN5bmNocm9ub3VzbHkuCisgICAgdm9pZCBwb3N0VGFzayhUYXNrKSBv
dmVycmlkZSBmaW5hbDsgLy8gRXhlY3V0ZXMgdGhlIHRhc2sgb24gY29udGV4dCdzIHRocmVhZCBh
c3luY2hyb25vdXNseS4KIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAg
ICBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIqIHNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
cigpIHsgcmV0dXJuIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmdldCgpOyB9CkBAIC0x
MDY3LDcgKzEwNjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbm5vdGF0ZWRSZWdpb25zKGNv
bnN0IFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mKTsKICNlbmRpZgogCi0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgY29uc3QgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBzdmdFeHRlbnNpb25zKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zJiBhY2Nlc3NTVkdFeHRlbnNp
b25zKCk7CkBAIC0xMDgxLDggKzEwODEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcm9jZXNzaW5n
TG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzaW5nTG9hZEV2ZW50OyB9CiAgICAg
Ym9vbCBsb2FkRXZlbnRGaW5pc2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZEV2ZW50RmluaXNo
ZWQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRleHRUaHJlYWQoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NvbnRleHRUaHJl
YWQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRk
ZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBl
bnF1ZXVlV2luZG93RXZlbnQoUmVmPEV2ZW50PiYmKTsKICAgICB2b2lkIGVucXVldWVEb2N1bWVu
dEV2ZW50KFJlZjxFdmVudD4mJik7CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBlbnF1ZXVlUGFnZXNob3dFdmVudChQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UpOwogICAg
IHZvaWQgZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChjb25zdCBTdHJpbmcmIG9sZFVSTCwgY29uc3Qg
U3RyaW5nJiBuZXdVUkwpOwogICAgIHZvaWQgZW5xdWV1ZVBvcHN0YXRlRXZlbnQoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzdGF0ZU9iamVjdCk7Ci0gICAgdmlydHVhbCBEb2N1bWVu
dEV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBt
X2V2ZW50UXVldWU7IH0KKyAgICBEb2N1bWVudEV2ZW50UXVldWUmIGV2ZW50UXVldWUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2V2ZW50UXVldWU7IH0KIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgYWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKE1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ciopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVy
KE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciopOwpAQCAtMTE2NCw4ICsxMTY0LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZW5kV2lsbFJldmVhbEVkZ2VFdmVudHNJZk5lZWRlZChjb25zdCBJbnRQb2lu
dCYgb2xkUG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBuZXdQb3NpdGlvbiwgY29uc3QgSW50UmVj
dCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFNpemUmIGNvbnRlbnRzU2l6ZSwgRWxlbWVudCogdGFy
Z2V0ID0gbnVsbHB0cik7CiAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0KiBlcnJvckV2ZW50VGFy
Z2V0KCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGxvZ0V4Y2VwdGlvblRvQ29u
c29sZShjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkws
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3Jp
cHRDYWxsU3RhY2s+JiYpIG92ZXJyaWRlIGZpbmFsOworICAgIEV2ZW50VGFyZ2V0KiBlcnJvckV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNv
bGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0
Q2FsbFN0YWNrPiYmKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIHZvaWQgaW5pdEROU1ByZWZldGNo
KCk7CiAKQEAgLTEyNTksOSArMTI1OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZERpc2FibGVk
RmllbGRzZXRFbGVtZW50KCkgeyBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50Kys7IH0K
ICAgICB2b2lkIHJlbW92ZURpc2FibGVkRmllbGRzZXRFbGVtZW50KCkgeyBBU1NFUlQobV9kaXNh
YmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudCk7IG1fZGlzYWJsZWRGaWVsZHNldEVsZW1lbnRzQ291
bnQtLTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgb3ZlcnJpZGUgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRl
bnRpZmllciA9IDApIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCBTZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2VjdXJpdHlPcmlnaW4qIHRvcE9yaWdpbigpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwogCiAgICAgUmVmPEZvbnRGYWNlU2V0PiBmb250cygpOwogCkBAIC0xMjcwLDggKzEy
NzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50
KGJvb2wpOwogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCi0gICAgdmlydHVhbCBib29sIHdy
YXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYg
d3JhcHBlZEtleSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIHVud3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1aW50OF90PiYg
a2V5KSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFw
cGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgb3ZlcnJpZGUgZmluYWw7CiAjZW5kaWYKIAog
ICAgIHZvaWQgc2V0SGFzU3R5bGVXaXRoVmlld3BvcnRVbml0cygpIHsgbV9oYXNTdHlsZVdpdGhW
aWV3cG9ydFVuaXRzID0gdHJ1ZTsgfQpAQCAtMTMzOCwyNiArMTMzOCwyNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGV0YWNoUGFyc2VyKCk7CiAKICAgICAvLyBGb250U2VsZWN0b3JDbGllbnQKLSAg
ICB2aXJ0dWFsIHZvaWQgZm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgZm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpIG92ZXJyaWRlIGZp
bmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0RvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgTm9k
ZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0
aW9uKSBvdmVycmlkZSBmaW5hbDsKKyAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKKyAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwor
ICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJh
dGlvbikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9pZCBjbG9uZURhdGFGcm9tRG9jdW1lbnQoY29u
c3QgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICB2
b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigpOyB9
CisgICAgdm9pZCBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSBmaW5hbCB7
IGRlcmVmKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBSZWZQdHI8
SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+JiYsIEpTQzo6RXhlY1N0YXRlKiA9IG51bGxwdHIs
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIgPSAwKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFj
az4mJiwgSlNDOjpFeGVjU3RhdGUqID0gbnVsbHB0ciwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRl
bnRpZmllciA9IDApIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBkb3VibGUgbWluaW11
bVRpbWVySW50ZXJ2YWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBkb3VibGUgbWluaW11
bVRpbWVySW50ZXJ2YWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgZG91
YmxlIHRpbWVyQWxpZ25tZW50SW50ZXJ2YWwoYm9vbCBoYXNSZWFjaGVkTWF4TmVzdGluZ0xldmVs
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBkb3VibGUgdGltZXJBbGlnbm1lbnRJbnRlcnZh
bChib29sIGhhc1JlYWNoZWRNYXhOZXN0aW5nTGV2ZWwpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwog
CiAgICAgdm9pZCB1cGRhdGVUaXRsZUZyb21UaXRsZUVsZW1lbnQoKTsKICAgICB2b2lkIHVwZGF0
ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mKTsKQEAgLTE0MDcsNyArMTQwNyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYWNoZWRET01Db29raWVzKGNvbnN0IFN0cmluZyYpOwog
ICAgIGJvb2wgaXNET01Db29raWVDYWNoZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVD
YWNoZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7IH0KICAgICB2b2lkIGludmFsaWRhdGVET01Db29r
aWVDYWNoZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSBm
aW5hbDsKIAogICAgIHZvaWQgY2hlY2tWaWV3cG9ydERlcGVuZGVudFBpY3R1cmVzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5jcHAKaW5kZXggZDRmMDBkYWVhNWQz
NGY4YzY3YzU0OGZmMDgzNTkwY2MwNDQyNWQ4MS4uYmY4ZGQ2OGFhMWM4YWIxMjhkOTM3N2U0YjM3
M2QzYjcxODhmODA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZl
bnRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgZmlyZWQoKSBvdmVycmlkZQorICAgIHZvaWQgZmlyZWQoKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgQVNTRVJUKCFpc1N1c3BlbmRlZCgpKTsKICAgICAgICAgbV9ldmVudFF1ZXVl
LnBlbmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuaAppbmRleCA3ZDExMWQyZDRiNWJhNjljOGIzZTdjMjJmODc0NGNlNzk2NzUzYjlkLi4w
ZGMwY2EwYThkYmE4OGVkOTYxOWYzZDk2MjcxZTkyMTBlODgwZWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBl
eHBsaWNpdCBEb2N1bWVudEV2ZW50UXVldWUoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5Eb2N1
bWVudEV2ZW50UXVldWUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBlbnF1ZXVlRXZlbnQoUmVmPEV2
ZW50PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKKyAgICBib29sIGVu
cXVldWVFdmVudChSZWY8RXZlbnQ+JiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuY2VsRXZlbnQo
RXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoTm9kZSYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuaAppbmRleCA2ZWIxZWQ2MWM0NjIwMTNmZDA1NzRkNGFmZTNlY2M1ZTI0
Yzg0NWZhLi5iNmIwN2Y5MDg5ZDViY2U3MmJmMTUyMDdhNjgxMThjYzFmODliYTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50
LCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKICAgICBib29s
IHBhcnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJD
b250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKICAgICAKLSAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0
ZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRnJvbSB0aGUgTm9u
RWxlbWVudFBhcmVudE5vZGUgaW50ZXJmYWNlIC0gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3Jn
LyNpbnRlcmZhY2Utbm9uZWxlbWVudHBhcmVudG5vZGUKQEAgLTQ0LDEyICs0NCwxMiBAQCBwdWJs
aWM6CiAKIHByb3RlY3RlZDoKICAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50JiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7Ci0gICAgdmlydHVhbCBTdHJpbmcgbm9kZU5h
bWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIE5vZGVUeXBlIG5vZGVUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZWY8Tm9kZT4gY2xvbmVOb2Rl
SW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Tm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBSZWY8Tm9kZT4g
Y2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsK
KyAgICBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlci5j
cHAKaW5kZXggYmY4ZDQ5ZTJmMzI3NDljZjM3NDU5NjU4NzJjMmFkN2JiMjRkMmEyNy4uNWI5Zjkw
OWJlZTdhZjIwYWIzOWU1M2IwNGEwNDk1MTM0Y2RhNGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PERvY3VtZW50TWFya2VyRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0aW9u
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0Rlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIERvY3VtZW50TWFya2VyRGVzY3JpcHRpb24o
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50TWFya2VyVGV4dE1hdGNoPiBpbnN0YW5jZUZvcihi
b29sKTsKIAogICAgIGJvb2wgYWN0aXZlTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX21hdGNoOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dE1hdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNUZXh0TWF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRG9jdW1lbnRNYXJrZXJUZXh0TWF0Y2go
Ym9vbCBtYXRjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaAppbmRleCA4NzVkYjYzNThhN2Ni
ZTgyYWMxOTMyYWI3ODkyMGJlZTU3MGNjY2Q2Li41MzUyZjRiYTM1ZTYyN2M1MWU3Mzk0N2U2Y2U3
MWIyMzBlOGQ3ZDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oCkBAIC00OSw5ICs0OSw5
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRG9jdW1lbnRUeXBlKERvY3VtZW50JiwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHB1YmxpY0lkLCBjb25zdCBTdHJpbmcmIHN5c3Rl
bUlkKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlv
bikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Tm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8Tm9kZT4gY2xvbmVO
b2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1fcHVibGljSWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApp
bmRleCAzMTk1MDAwODJiNmQ5YzkxN2ZhMzM0YzM0MzllZTM0ZTdhMzVjMTFiLi4wNGVhZTcwODhk
ZDUxYmQxNzZkZWM2M2U2MTY0YjBlN2EyZWE2NjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTE5
NCwxMSArMTk0LDExIEBAIHB1YmxpYzoKICAgICAvLyBBIGZhc3QgZnVuY3Rpb24gZm9yIGNoZWNr
aW5nIHRoZSBsb2NhbCBuYW1lIGFnYWluc3QgYW5vdGhlciBhdG9taWMgc3RyaW5nLgogICAgIGJv
b2wgaGFzTG9jYWxOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJu
IG1fdGFnTmFtZS5sb2NhbE5hbWUoKSA9PSBvdGhlcjsgfQogCi0gICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGxvY2FsTmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1f
dGFnTmFtZS5sb2NhbE5hbWUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBw
cmVmaXgoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX3RhZ05hbWUucHJlZml4KCk7
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV90YWdOYW1lLm5hbWVzcGFjZVVSSSgpOyB9CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBtX3RhZ05hbWUubG9jYWxOYW1lKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBy
ZWZpeCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fdGFnTmFtZS5wcmVmaXgoKTsg
fQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gbV90YWdOYW1lLm5hbWVzcGFjZVVSSSgpOyB9CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBub2RlTmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhDaGls
ZHJlbihEb2N1bWVudCYpOwogICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0Q2hp
bGRyZW4oRG9jdW1lbnQmKTsKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUYWJJbmRleChpbnQpOwogICAgIHZpcnR1YWwgRWxlbWVudCogZm9jdXNEZWxlZ2F0ZSgpOwog
Ci0gICAgdmlydHVhbCBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9IE5PUFNF
VURPKSBvdmVycmlkZTsKKyAgICBSZW5kZXJTdHlsZSogY29tcHV0ZWRTdHlsZShQc2V1ZG9JZCA9
IE5PUFNFVURPKSBvdmVycmlkZTsKIAogICAgIGJvb2wgbmVlZHNTdHlsZUludmFsaWRhdGlvbigp
IGNvbnN0OwogCkBAIC0zNzEsOCArMzcxLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBib29s
IGlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBpc1BhcnNpbmdDaGls
ZHJlbkZpbmlzaGVkKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVuKCkgb3Zl
cnJpZGUgZmluYWw7CisgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsK
KyAgICB2b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBQc2V1ZG9FbGVtZW50KiBiZWZvcmVQc2V1ZG9FbGVtZW50KCkgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgUHNldWRvRWxlbWVudCogYWZ0ZXJQc2V1ZG9FbGVtZW50KCkg
Y29uc3Q7CkBAIC00MDQsNyArNDA0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc091
dE9mUmFuZ2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Zy
YW1lRWxlbWVudEJhc2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBi
b29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBj
YW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVXNlZCBm
b3IgZGlzYWJsZWQgZm9ybSBlbGVtZW50czsgaWYgdHJ1ZSwgcHJldmVudHMgbW91c2UgZXZlbnRz
IGZyb20gYmVpbmcgZGlzcGF0Y2hlZAogICAgIC8vIHRvIGV2ZW50IGxpc3RlbmVycywgYW5kIHBy
ZXZlbnRzIERPTUFjdGl2YXRlIGV2ZW50cyBmcm9tIGJlaW5nIHNlbnQgYXQgYWxsLgpAQCAtNDk0
LDcgKzQ5NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBVUkwgYWJzb2x1dGVMaW5r
VVJMKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgYm9v
bCBhbGxvd3NEb3VibGVUYXBHZXN0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhbGxv
d3NEb3VibGVUYXBHZXN0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFN0eWxl
UmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIoKTsKQEAgLTUwOCwxMCArNTA4LDEwIEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYs
IENvbnN0cnVjdGlvblR5cGUpOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlIGZpbmFsOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIGNs
ZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsKQEAgLTU2NCw5ICs1NjQsOSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBzY3JvbGxCeVVuaXRzKGludCB1bml0cywgU2Nyb2xsR3JhbnVsYXJp
dHkpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFByZWZpeChjb25zdCBBdG9taWNTdHJpbmcmLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBOb2RlVHlwZSBub2Rl
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVB
bGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHNldFByZWZp
eChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdm9p
ZCBzZXRBdHRyaWJ1dGVJbnRlcm5hbCh1bnNpZ25lZCBpbmRleCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUsIFN5bmNocm9uaXphdGlvbk9mTGF6eUF0dHJp
YnV0ZSk7CiAgICAgdm9pZCBhZGRBdHRyaWJ1dGVJbnRlcm5hbChjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgU3luY2hyb25pemF0aW9uT2ZMYXp5QXR0cmli
dXRlKTsKQEAgLTU3NiwxNCArNTc2LDE0IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0UmVjdCBhYnNv
bHV0ZUV2ZW50Qm91bmRzT2ZFbGVtZW50QW5kRGVzY2VuZGFudHMoYm9vbCYgaW5jbHVkZXNGaXhl
ZFBvc2l0aW9uRWxlbWVudHMpOwogICAgIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKLSAg
ICB2aXJ0dWFsIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciogYnVmZmVyLCB1bnNpZ25lZCBs
ZW5ndGgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZm9ybWF0Rm9yRGVidWdnZXIoY2hhciog
YnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2
b2lkIGNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpOwogCiAgICAgLy8gY2xvbmVOb2RlIGlz
IHByaXZhdGUgc28gdGhhdCBub24tdmlydHVhbCBjbG9uZUVsZW1lbnRXaXRoQ2hpbGRyZW4gYW5k
IGNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbgogICAgIC8vIGFyZSB1c2VkIGluc3RlYWQuCi0g
ICAgdmlydHVhbCBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5n
T3BlcmF0aW9uKSBvdmVycmlkZTsKKyAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9j
dW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlZjxFbGVt
ZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKERvY3VtZW50Jik7
CiAKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FcnJvckV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXJyb3JFdmVudC5oCmlu
ZGV4IDVjZmFiZGU1YWQ0NjczNTUxMDUyNWYxMWVmZGJjYTA3MDRhYTZkN2YuLmMyYzE5MDRjNzZm
OGIyNzI5NDJjYzJmY2Q0NDg0ZjdjZDE1YzBlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FcnJvckV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Vycm9yRXZlbnQuaApA
QCAtNjIsMTMgKzYyLDEzIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsaW5lbm8oKSBjb25zdCB7
IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KICAgICB1bnNpZ25lZCBjb2xubygpIGNvbnN0IHsgcmV0
dXJuIG1fY29sdW1uTnVtYmVyOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50
SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRl
cmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBFcnJvckV2ZW50KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyKTsKICAgICBFcnJvckV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYsIGNvbnN0IEVycm9yRXZlbnRJbml0Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
cnJvckV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Vycm9yRXZlbnQoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX21lc3NhZ2U7CiAgICAgU3RyaW5nIG1fZmlsZU5h
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRDb250ZXh0LmgKaW5kZXggMDAzNzFkNTg4MTFhZDY5ZTIzYzhl
ZjViNjVjZWRjOTJiNjZkZTM4ZC4uMmNjYzVlYThiZjZmNjcxZDc4NDdhYjY1ZDY5OGJkMDNiZjE0
YmRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtNjksOCArNjksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+TW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCk7CiAgICAgRXZlbnRU
YXJnZXQqIHJlbGF0ZWRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0
KCk7IH0KICAgICB2b2lkIHNldFJlbGF0ZWRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4p
OwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlT3JGb2N1c0V2ZW50Q29udGV4dCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzTW91c2VPckZvY3VzRXZlbnRDb250ZXh0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX3JlbGF0ZWRUYXJnZXQ7
CkBAIC04Myw4ICs4Myw4IEBAIHB1YmxpYzoKICAgICBUb3VjaEV2ZW50Q29udGV4dChQYXNzUmVm
UHRyPE5vZGU+LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBjdXJyZW50VGFyZ2V0LCBQYXNzUmVm
UHRyPEV2ZW50VGFyZ2V0PiB0YXJnZXQpOwogICAgIHZpcnR1YWwgflRvdWNoRXZlbnRDb250ZXh0
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50Q29udGV4dCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlTG9jYWxFdmVudHMoRXZlbnQmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzVG91Y2hFdmVudENvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IGVudW0gVG91Y2hMaXN0VHlwZSB7IFRvdWNoZXMsIFRhcmdldFRvdWNoZXMsIENoYW5nZWRUb3Vj
aGVzLCBOb3RUb3VjaExpc3QgfTsKICAgICBUb3VjaExpc3QqIHRvdWNoTGlzdChUb3VjaExpc3RU
eXBlIHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCmluZGV4IGEwMDA1MjVhMDk2M2VlYjVl
ODYyNmE5MzQ2YWUwYWQ1YzI0YjI3NzcuLjE5ZGVmZDgzZTY0NmMwNTU2ZWMxMGZjMWJhM2Q3OGYy
MGNlZTBlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5oCkBAIC0xNjEsOCArMTYxLDggQEAg
cHJpdmF0ZToKIAogY2xhc3MgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSA6IHB1YmxpYyBFdmVu
dFRhcmdldCB7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50
VGFyZ2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsg
fQotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsgfQorICAgIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOyB9CisgICAgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2V2ZW50VGFyZ2V0RGF0YTsgfQogcHJpdmF0
ZToKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9G
b2N1c0V2ZW50LmgKaW5kZXggNTc2NWJiODlhZDU3ZDJmMmY4YjA2OGUxNzM1ZWJmNzQ0MmJhZTE4
Ny4uNWRmNDg3ZWI4ZDgyNGZjZmE2NGFmYzFjZmE0MTIyMzQ3YzY2NWViYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0ZvY3VzRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Rm9jdXNFdmVudC5oCkBAIC00OSwxNiArNDksMTYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBGb2N1c0V2ZW50KHR5cGUsIGluaXRpYWxpemVyKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQorICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVk
VGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWxhdGVkVGFyZ2V0LmdldCgpOyB9
CiAgICAgdm9pZCBzZXRSZWxhdGVkVGFyZ2V0KFJlZlB0cjxFdmVudFRhcmdldD4mJiByZWxhdGVk
VGFyZ2V0KSB7IG1fcmVsYXRlZFRhcmdldCA9IFdURk1vdmUocmVsYXRlZFRhcmdldCk7IH0KIAot
ICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIEZvY3VzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29s
IGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBBYnN0cmFjdFZpZXcqLCBpbnQsIFJlZlB0cjxF
dmVudFRhcmdldD4mJik7CiAgICAgRm9jdXNFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGNvbnN0IEZvY3VzRXZlbnRJbml0Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c0V2ZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0ZvY3VzRXZlbnQoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFJlZlB0cjxFdmVudFRhcmdldD4gbV9yZWxhdGVkVGFyZ2V0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaAppbmRleCA1ZDgyODQzYmVmOWI2OTljOGY0OWFhZWM3
NDI4ZTRiMTQxOGFlZTA3Li40OTQxYjA3ZGIzMDc2MWYyMjBjYmFhNTIzNjRmZGUwOWFmNDk1NmE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vSGFzaENoYW5nZUV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0hhc2hDaGFuZ2VFdmVudC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIG9sZFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fb2xkVVJM
OyB9CiAgICAgY29uc3QgU3RyaW5nJiBuZXdVUkwoKSBjb25zdCB7IHJldHVybiBtX25ld1VSTDsg
fQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIEhhc2hDaGFuZ2VFdmVudEludGVyZmFjZVR5cGU7IH0KKyAgICBFdmVu
dEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEhhc2hD
aGFuZ2VFdmVudEludGVyZmFjZVR5cGU7IH0KIAogcHJpdmF0ZToKICAgICBIYXNoQ2hhbmdlRXZl
bnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50LmgKaW5kZXggOTZmZTMzYTc1NTg3NzBhZDEz
Y2VjMjBlNGQzZDljYWM5YTdlZGZlYS4uMTc5Yzg4OTJjZjA0NjY3NDNiODNjNWMzNTlkNzRhNzdi
ZTAzNzczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oCkBAIC04OCwxMiArODgsMTIg
QEAgcHVibGljOgogICAgIAogICAgIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCoga2V5RXZl
bnQoKSBjb25zdCB7IHJldHVybiBtX2tleUV2ZW50LmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIGlu
dCBrZXlDb2RlKCkgY29uc3Qgb3ZlcnJpZGU7IC8vIGtleSBjb2RlIGZvciBrZXlkb3duIGFuZCBr
ZXl1cCwgY2hhcmFjdGVyIGZvciBrZXlwcmVzcwotICAgIHZpcnR1YWwgaW50IGNoYXJDb2RlKCkg
Y29uc3Qgb3ZlcnJpZGU7IC8vIGNoYXJhY3RlciBjb2RlIGZvciBrZXlwcmVzcywgMCBmb3Iga2V5
ZG93biBhbmQga2V5dXAKKyAgICBpbnQga2V5Q29kZSgpIGNvbnN0IG92ZXJyaWRlOyAvLyBrZXkg
Y29kZSBmb3Iga2V5ZG93biBhbmQga2V5dXAsIGNoYXJhY3RlciBmb3Iga2V5cHJlc3MKKyAgICBp
bnQgY2hhckNvZGUoKSBjb25zdCBvdmVycmlkZTsgLy8gY2hhcmFjdGVyIGNvZGUgZm9yIGtleXBy
ZXNzLCAwIGZvciBrZXlkb3duIGFuZCBrZXl1cAogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0tl
eWJvYXJkRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCB3aGljaCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc0tleWJvYXJkRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBpbnQgd2hpY2goKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IGJvb2wgaGFuZGxlZEJ5SW5wdXRNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2hhbmRsZWRCeUlu
cHV0TWV0aG9kOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTGl2ZU5vZGVMaXN0LmgKaW5kZXggMjUzMjZlYmMyMGQx
NmY1ZmQ3ODZlNDljZDE4YmU4NTM4MGRjZmU3Zi4uNmU4Y2JlZTI5OGUxZjA3M2UwMWU5OGQ1NDJi
N2NlOWU5YTU3ZTNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0xpdmVOb2RlTGlz
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9MaXZlTm9kZUxpc3QuaApAQCAtNjQsNyArNjQs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3QgeyByZXR1cm4g
bV9vd25lck5vZGUtPmRvY3VtZW50KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
aXNMaXZlTm9kZUxpc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBpc0xpdmVOb2RlTGlzdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIENvbnRhaW5lck5vZGUmIHJvb3ROb2RlKCkgY29uc3Q7CiAKQEAgLTkxLDgg
KzkxLDggQEAgcHVibGljOgogICAgIGJvb2wgY29sbGVjdGlvbkNhblRyYXZlcnNlQmFja3dhcmQo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCB3aWxsVmFsaWRhdGVJbmRleENhY2hl
KCkgY29uc3QgeyBkb2N1bWVudCgpLnJlZ2lzdGVyTm9kZUxpc3RGb3JJbnZhbGlkYXRpb24oY29u
c3RfY2FzdDxDYWNoZWRMaXZlTm9kZUxpc3Q8Tm9kZUxpc3RUeXBlPiY+KCp0aGlzKSk7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1lbnQmKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKTsgfQorICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlKERvY3VtZW50JikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgc2l6ZV90
IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUu
bWVtb3J5Q29zdCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBDYWNoZWRMaXZlTm9kZUxpc3QoQ29u
dGFpbmVyTm9kZSYgcm9vdE5vZGUsIE5vZGVMaXN0SW52YWxpZGF0aW9uVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgKaW5kZXggZGNlOGUwYmY4ZWQ5NzA4NWZmNTI2NGQ2MzY0MGUzODk0
ZTNlMWRlNy4uNGJmNTJlYzNhY2UyZmIzN2MwNmQ3NzFhYmU1ZWFiOThlNTM1MDVjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtMTAwLDcgKzEwMCw3IEBAIHB1YmxpYzoKICAgICBN
ZXNzYWdlUG9ydCogbWVzc2FnZVBvcnQoKTsKICAgICB2b2lkIGluaXRNZXNzYWdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQsIERPTVdpbmRvdyogc291cmNlLCBNZXNzYWdl
UG9ydCopOwogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICBlbnVtIERhdGFUeXBlIHsKICAgICAgICAgRGF0YVR5cGVTY3JpcHRW
YWx1ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKaW5kZXggNzQzZGUwZjRkNDdkMDNkZGY1MzZj
NjZjZGYzNWQ2NGI5Y2YwZWExMy4uMjk2NTkyNmJmN2FjNjQxM2Q5NTg0NTZhOGU1YzVjNWRiM2Fl
NjJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmgKQEAgLTcyLDggKzcyLDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOwogCi0gICAg
ICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBNZXNzYWdlUG9ydEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7IH0KKyAgICAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZXNzYWdlUG9ydEV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsgfQorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OyB9CiAKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VzKCk7CiAKQEAgLTk4LDkgKzk4
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0
IE1lc3NhZ2VQb3J0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc01lc3NhZ2VQb3J0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQor
ICAgICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAg
ICAgICAgYm9vbCBpc01lc3NhZ2VQb3J0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWw+IG1fZW50YW5n
bGVkQ2hhbm5lbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKaW5kZXggYTYzMzFhMjZmNjU5NTM2
Y2UyNjI3ZWQ4NmJhOTJlNWFhZGFmYWZhMi4uM2UxNWE2ZTg3MWFiNjBkODMyZjI3ZTg1NjgzMGRl
NDU4ZDk5NGMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICAvLyBidXQgd2Ugd2lsbCBtYXRjaCB0aGUgc3RhbmRhcmQgRE9NLgogICAgIHVu
c2lnbmVkIHNob3J0IGJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9CiAgICAgYm9v
bCBidXR0b25Eb3duKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b25Eb3duOyB9Ci0gICAgdmlydHVh
bCBFdmVudFRhcmdldCogcmVsYXRlZFRhcmdldCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQorICAgIEV2ZW50VGFyZ2V0KiByZWxhdGVkVGFy
Z2V0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9yZWxhdGVkVGFyZ2V0LmdldCgp
OyB9CiAgICAgdm9pZCBzZXRSZWxhdGVkVGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJl
bGF0ZWRUYXJnZXQpIHsgbV9yZWxhdGVkVGFyZ2V0ID0gcmVsYXRlZFRhcmdldDsgfQogICAgIGRv
dWJsZSBmb3JjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2U7IH0KICAgICB2b2lkIHNldEZvcmNl
KGRvdWJsZSBmb3JjZSkgeyBtX2ZvcmNlID0gZm9yY2U7IH0KQEAgLTkxLDE3ICs5MSwxNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBGSVhNRTogVGhlc2UgZnVuY3Rpb25zIGNhbiBiZSBtZXJnZWQgaWYg
bV9kYXRhVHJhbnNmZXIgaXMgb25seSBpbml0aWFsaXplZCBmb3IgZHJhZyBldmVudHMuCiAgICAg
RGF0YVRyYW5zZmVyKiBkYXRhVHJhbnNmZXIoKSBjb25zdCB7IHJldHVybiBpc0RyYWdFdmVudCgp
ID8gbV9kYXRhVHJhbnNmZXIuZ2V0KCkgOiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBEYXRhVHJh
bnNmZXIqIGludGVybmFsRGF0YVRyYW5zZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
YXRhVHJhbnNmZXIuZ2V0KCk7IH0KKyAgICBEYXRhVHJhbnNmZXIqIGludGVybmFsRGF0YVRyYW5z
ZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kYXRhVHJhbnNmZXIuZ2V0KCk7IH0KIAot
ICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VFdmVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNb3Vz
ZUV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0RyYWdFdmVudCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHN0YXRpYyBib29sIGNhblRyaWdnZXJBY3RpdmF0aW9uQmVoYXZpb3IoY29u
c3QgRXZlbnQmKTsgCiAKLSAgICB2aXJ0dWFsIGludCB3aGljaCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGludCB3aGljaCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZWY8RXZlbnQ+
IGNsb25lRm9yKEhUTUxJRnJhbWVFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPEV2
ZW50PiBjbG9uZUZvcihIVE1MSUZyYW1lRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2Fu
QnViYmxlLCBib29sIGNhbmNlbGFibGUsIGRvdWJsZSB0aW1lc3RhbXAsIEFic3RyYWN0Vmlldyos
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCmluZGV4IDQ4MTE4MmYzYzQzYTQ4
ZjA3MWJjMzUzZDNiNDFmOTQ3ZjBmMzBiMDYuLjdmZmMwZjk4YTk3ZTFmY2FjYTY2ZmFhN2FiNWFh
YWFmN2EyZDdmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCkBAIC00
OSwxMyArNDksMTMgQEAgcHVibGljOgogICAgIGludCBtb3ZlbWVudFkoKSBjb25zdCB7IHJldHVy
biBtX21vdmVtZW50RGVsdGEueSgpOyB9CiAjZW5kaWYKICAgICBjb25zdCBMYXlvdXRQb2ludCYg
Y2xpZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NsaWVudExvY2F0aW9uOyB9Ci0gICAg
dmlydHVhbCBpbnQgbGF5ZXJYKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgbGF5ZXJZKCkg
b3ZlcnJpZGU7CisgICAgaW50IGxheWVyWCgpIG92ZXJyaWRlOworICAgIGludCBsYXllclkoKSBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgb2Zmc2V0WCgpOwogICAgIFdFQkNPUkVf
RVhQT1JUIGludCBvZmZzZXRZKCk7CiAgICAgYm9vbCBpc1NpbXVsYXRlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTaW11bGF0ZWQ7IH0KLSAgICB2aXJ0dWFsIGludCBwYWdlWCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgaW50IHBhZ2VZKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgaW50IHBhZ2VYKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50IHBhZ2VZKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCBjb25zdCBMYXlvdXRQb2ludCYgcGFn
ZUxvY2F0aW9uKCkgY29uc3Q7CiAgICAgaW50IHgoKSBjb25zdDsKICAgICBpbnQgeSgpIGNvbnN0
OwpAQCAtNzcsNyArNzcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluaXRDb29yZGluYXRl
cygpOwogICAgIHZvaWQgaW5pdENvb3JkaW5hdGVzKGNvbnN0IExheW91dFBvaW50JiBjbGllbnRM
b2NhdGlvbik7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkVGFyZ2V0KCkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCByZWNlaXZlZFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdm9p
ZCBjb21wdXRlUGFnZUxvY2F0aW9uKCk7CiAgICAgdm9pZCBjb21wdXRlUmVsYXRpdmVQb3NpdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkV2ZW50LmgKaW5kZXggYjBjOGM4ODAzN2FmYzc5Y2Qw
YzU2ODUxOTczNTdkZmY4MDJmNzc3OC4uZmQ2NWMyNDZjN2UzNTMyZTRlY2FhZWIzZGNkYjRlMTA4
MDkxNzMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25FdmVudC5oCkBAIC02MCw3ICs2MCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGF0dHJOYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyTmFtZTsgfQogICAgICAgICB1bnNpZ25lZCBzaG9ydCBhdHRyQ2hhbmdlKCkg
Y29uc3QgeyByZXR1cm4gbV9hdHRyQ2hhbmdlOyB9CiAKLSAgICAgICAgdmlydHVhbCBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBFdmVudElu
dGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgTXV0YXRpb25FdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uUmVjb3JkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvblJlY29yZC5j
cHAKaW5kZXggNjUwYWQ5MjE5ZjEzMjlmZDFmZjgxOTg5M2EwZDViNmRjNGQzNzAzYy4uOWRmZGUz
ZWMzNzliMGZhNDBlYmI0NzFiMWU0OWM4NGY0ZGE3NmM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25SZWNvcmQuY3BwCkBAIC01MiwxMiArNTIsMTIgQEAgcHVibGljOgogICAgIH0KIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgTm9kZSogdGFyZ2V0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90YXJnZXQucHRy
KCk7IH0KLSAgICB2aXJ0dWFsIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9hZGRlZE5vZGVzLmdldCgpOyB9Ci0gICAgdmlydHVhbCBOb2RlTGlzdCogcmVtb3ZlZE5v
ZGVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZW1vdmVkTm9kZXMuZ2V0KCk7IH0KLSAgICB2aXJ0
dWFsIE5vZGUqIHByZXZpb3VzU2libGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJldmlvdXNT
aWJsaW5nLmdldCgpOyB9Ci0gICAgdmlydHVhbCBOb2RlKiBuZXh0U2libGluZygpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fbmV4dFNpYmxpbmcuZ2V0KCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUoKSBvdmVycmlkZTsKKyAgICBOb2RlKiB0YXJnZXQoKSBvdmVycmlkZSB7IHJldHVybiBt
X3RhcmdldC5wdHIoKTsgfQorICAgIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hZGRlZE5vZGVzLmdldCgpOyB9CisgICAgTm9kZUxpc3QqIHJlbW92ZWROb2Rlcygp
IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVtb3ZlZE5vZGVzLmdldCgpOyB9CisgICAgTm9kZSogcHJl
dmlvdXNTaWJsaW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcmV2aW91c1NpYmxpbmcuZ2V0KCk7
IH0KKyAgICBOb2RlKiBuZXh0U2libGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbmV4dFNpYmxp
bmcuZ2V0KCk7IH0KIAogICAgIFJlZjxDb250YWluZXJOb2RlPiBtX3RhcmdldDsKICAgICBSZWZQ
dHI8Tm9kZUxpc3Q+IG1fYWRkZWROb2RlczsKQEAgLTc1LDEwICs3NSwxMCBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgTm9kZSogdGFyZ2V0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV90YXJnZXQucHRyKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBvbGRWYWx1ZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1fb2xkVmFsdWU7IH0KLSAgICB2aXJ0dWFsIE5vZGVMaXN0KiBhZGRl
ZE5vZGVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbGF6aWx5SW5pdGlhbGl6ZUVtcHR5Tm9kZUxpc3Qo
bV9hZGRlZE5vZGVzKTsgfQotICAgIHZpcnR1YWwgTm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIG92
ZXJyaWRlIHsgcmV0dXJuIGxhemlseUluaXRpYWxpemVFbXB0eU5vZGVMaXN0KG1fcmVtb3ZlZE5v
ZGVzKTsgfQorICAgIE5vZGUqIHRhcmdldCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdGFyZ2V0LnB0
cigpOyB9CisgICAgU3RyaW5nIG9sZFZhbHVlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9vbGRWYWx1
ZTsgfQorICAgIE5vZGVMaXN0KiBhZGRlZE5vZGVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbGF6aWx5
SW5pdGlhbGl6ZUVtcHR5Tm9kZUxpc3QobV9hZGRlZE5vZGVzKTsgfQorICAgIE5vZGVMaXN0KiBy
ZW1vdmVkTm9kZXMoKSBvdmVycmlkZSB7IHJldHVybiBsYXppbHlJbml0aWFsaXplRW1wdHlOb2Rl
TGlzdChtX3JlbW92ZWROb2Rlcyk7IH0KIAogICAgIHN0YXRpYyBOb2RlTGlzdCogbGF6aWx5SW5p
dGlhbGl6ZUVtcHR5Tm9kZUxpc3QoUmVmUHRyPE5vZGVMaXN0PiYgbm9kZUxpc3QpCiAgICAgewpA
QCAtMTAzLDkgKzEwMyw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmli
dXRlTmFtZTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1l
c3BhY2UoKSBvdmVycmlkZSB7IHJldHVybiBtX2F0dHJpYnV0ZU5hbWVzcGFjZTsgfQorICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSgpIG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlTmFtZTsgfQor
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlTmFtZXNwYWNlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGVOYW1lc3BhY2U7IH0KIAogICAgIEF0b21pY1N0cmluZyBtX2F0dHJp
YnV0ZU5hbWU7CiAgICAgQXRvbWljU3RyaW5nIG1fYXR0cmlidXRlTmFtZXNwYWNlOwpAQCAtMTE5
LDcgKzExOSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUoKSBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUoKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIE11dGF0aW9uUmVjb3JkV2l0aE51bGxPbGRW
YWx1ZSA6IHB1YmxpYyBNdXRhdGlvblJlY29yZCB7CkBAIC0xMzAsMTYgKzEzMCwxNiBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWNvcmQtPnR5cGUoKTsgfQotICAgIHZpcnR1YWwg
Tm9kZSogdGFyZ2V0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWNvcmQtPnRhcmdldCgpOyB9Ci0g
ICAgdmlydHVhbCBOb2RlTGlzdCogYWRkZWROb2RlcygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVj
b3JkLT5hZGRlZE5vZGVzKCk7IH0KLSAgICB2aXJ0dWFsIE5vZGVMaXN0KiByZW1vdmVkTm9kZXMo
KSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+cmVtb3ZlZE5vZGVzKCk7IH0KLSAgICB2aXJ0
dWFsIE5vZGUqIHByZXZpb3VzU2libGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjb3JkLT5w
cmV2aW91c1NpYmxpbmcoKTsgfQotICAgIHZpcnR1YWwgTm9kZSogbmV4dFNpYmxpbmcoKSBvdmVy
cmlkZSB7IHJldHVybiBtX3JlY29yZC0+bmV4dFNpYmxpbmcoKTsgfQotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWNv
cmQtPmF0dHJpYnV0ZU5hbWUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBh
dHRyaWJ1dGVOYW1lc3BhY2UoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+YXR0cmlidXRl
TmFtZXNwYWNlKCk7IH0KLQotICAgIHZpcnR1YWwgU3RyaW5nIG9sZFZhbHVlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUoKSBvdmVy
cmlkZSB7IHJldHVybiBtX3JlY29yZC0+dHlwZSgpOyB9CisgICAgTm9kZSogdGFyZ2V0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV9yZWNvcmQtPnRhcmdldCgpOyB9CisgICAgTm9kZUxpc3QqIGFkZGVk
Tm9kZXMoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+YWRkZWROb2RlcygpOyB9CisgICAg
Tm9kZUxpc3QqIHJlbW92ZWROb2RlcygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjb3JkLT5yZW1v
dmVkTm9kZXMoKTsgfQorICAgIE5vZGUqIHByZXZpb3VzU2libGluZygpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fcmVjb3JkLT5wcmV2aW91c1NpYmxpbmcoKTsgfQorICAgIE5vZGUqIG5leHRTaWJsaW5n
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWNvcmQtPm5leHRTaWJsaW5nKCk7IH0KKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29y
ZC0+YXR0cmlidXRlTmFtZSgpOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRyaWJ1dGVO
YW1lc3BhY2UoKSBvdmVycmlkZSB7IHJldHVybiBtX3JlY29yZC0+YXR0cmlidXRlTmFtZXNwYWNl
KCk7IH0KKworICAgIFN0cmluZyBvbGRWYWx1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygp
OyB9CiAKICAgICBSZWY8TXV0YXRpb25SZWNvcmQ+IG1fcmVjb3JkOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9O
YW1lTm9kZUxpc3QuaAppbmRleCA5ZjljZTQzNWUwZTdlNjU4MDIzY2VhZDdiNGU0MGIwZTliZWI0
OWMwLi43YTE5ZTdmODUxNDBmYzNhNTYyOTg2NTQyNzM3YjcwY2IxNGZjMGVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVOb2RlTGlzdC5oCkBAIC00MCw4ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgfk5hbWVOb2RlTGlzdCgpOwogCi0gICAgdmlydHVhbCBib29sIGVsZW1lbnRNYXRjaGVzKEVs
ZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNSb290ZWRBdERvY3Vt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGVsZW1lbnRN
YXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUm9vdGVkQXREb2N1
bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAg
TmFtZU5vZGVMaXN0KENvbnRhaW5lck5vZGUmIHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hdGl2ZU5vZGVGaWx0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYXRpdmVOb2RlRmlsdGVyLmgKaW5kZXggMTYxMDg4Mjky
MmY4Njk0NWI0NDgwNWQ3YjYzNDg1MWYyZWMyYWEyOS4uZWVhZGMzYmI0ZDY2Y2ZhMmFiYjk1YTcz
Njg3NmRkN2JkMzJmNzNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hdGl2ZU5v
ZGVGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmF0aXZlTm9kZUZpbHRlci5oCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmF0
aXZlTm9kZUZpbHRlcigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHVpbnQxNl90IGFjY2VwdE5v
ZGUoTm9kZSopIG92ZXJyaWRlOworICAgIHVpbnQxNl90IGFjY2VwdE5vZGUoTm9kZSopIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBzZXRDb25kaXRpb24oUmVmUHRyPE5vZGVGaWx0ZXJDb25kaXRpb24+
JiYgY29uZGl0aW9uKSB7IEFTU0VSVCghbV9jb25kaXRpb24pOyBtX2NvbmRpdGlvbiA9IGNvbmRp
dGlvbjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzMTg2MmYzZDgxNmY2MzU4NTUxZmNkYjE3N2Y2MTQ4
NTMwMWVlMzJiLi4yMGMwYzg1NmFjMjIxYzhhOTgxMWI0NTI0YjA0YWRiYzBiYzQ3ODcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTQ5NCwxNiArNDk0LDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHVuc2lnbmVkIHNob3J0IGNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKE5vZGUqKTsKIAotICAg
IHZpcnR1YWwgTm9kZSogdG9Ob2RlKCkgb3ZlcnJpZGU7CisgICAgTm9kZSogdG9Ob2RlKCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7IC8vIElt
cGxlbWVudGVkIGluIERvY3VtZW50LmgKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsgLy8gSW1w
bGVtZW50ZWQgaW4gRG9jdW1lbnQuaAogCi0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYm
LCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVu
dExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwg
Ym9vbCB1c2VDYXB0dXJlKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVy
ZSkgb3ZlcnJpZGU7CiAKICAgICB1c2luZyBFdmVudFRhcmdldDo6ZGlzcGF0Y2hFdmVudDsKLSAg
ICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOworICAgIGJvb2wg
ZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaFNjb3Bl
ZEV2ZW50KEV2ZW50Jik7CiAKQEAgLTU0MSw4ICs1NDEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBt
X2Fkb3B0aW9uSXNSZXF1aXJlZCB7IHRydWUgfTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhJiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBvdmVycmlkZSBmaW5h
bDsKKyAgICBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIG92ZXJyaWRlIGZpbmFs
OworICAgIEV2ZW50VGFyZ2V0RGF0YSYgZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICB2b2lkIGdldFJlZ2lzdGVyZWRNdXRhdGlvbk9ic2VydmVyc09mVHlwZShI
YXNoTWFwPE11dGF0aW9uT2JzZXJ2ZXIqLCBNdXRhdGlvblJlY29yZERlbGl2ZXJ5T3B0aW9ucz4m
LCBNdXRhdGlvbk9ic2VydmVyOjpNdXRhdGlvblR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGF0
dHJpYnV0ZU5hbWUpOwogICAgIHZvaWQgcmVnaXN0ZXJNdXRhdGlvbk9ic2VydmVyKE11dGF0aW9u
T2JzZXJ2ZXIqLCBNdXRhdGlvbk9ic2VydmVyT3B0aW9ucywgY29uc3QgSGFzaFNldDxBdG9taWNT
dHJpbmc+JiBhdHRyaWJ1dGVGaWx0ZXIpOwpAQCAtNjY3LDggKzY2Nyw4IEBAIHByaXZhdGU6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZWRMYXN0UmVmKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZTsKIAogICAgIEVsZW1lbnQq
IGFuY2VzdG9yRWxlbWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vT3ZlcmZsb3dFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaApp
bmRleCA3YjYzYzFiMzk5YTYyODZiZDUzZmFiMTlmZGZmNWY1OGM2ZGNjNWMzLi5jZTYyNDMyNWY0
YTE3OTQ4NzQwMGE1OGU2Yjc0OGUzMTJhNTQwOGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vT3ZlcmZsb3dFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9PdmVyZmxvd0V2
ZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaG9yaXpvbnRhbE92ZXJm
bG93KCkgY29uc3QgeyByZXR1cm4gbV9ob3Jpem9udGFsT3ZlcmZsb3c7IH0KICAgICBib29sIHZl
cnRpY2FsT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3ZlcnRpY2FsT3ZlcmZsb3c7IH0KIAot
ICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIE92ZXJmbG93RXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vUGFnZVRy
YW5zaXRpb25FdmVudC5oCmluZGV4IDRjOGRmYTZjNmY3MDMxY2JhNzY5MDk5MDNlMzcxOGY0ZTIx
ODZiYTguLmQzOWY3Y2QxZjBhZTI1OGFmMjc4YTNkYzU1ODQ2ZjQwZWNiYTgxODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9QYWdlVHJhbnNpdGlvbkV2ZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BhZ2VUcmFuc2l0aW9uRXZlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5QYWdlVHJhbnNpdGlvbkV2ZW50KCk7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZl
bnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wg
cGVyc2lzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZWQ7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Q
ZW5kaW5nU2NyaXB0LmgKaW5kZXggMDRkMWIyM2RiMmU0YTc3MGYxN2FlMTI5MDg5MjU1MTA0ZTg5
OGM1Yy4uNmY0YWZlMzVlMjcwMDI1NDYzNjE5NTcwYmMxZWE3YzFjYjQ3ZjQyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1BlbmRpbmdTY3JpcHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUGVuZGluZ1NjcmlwdC5oCkBAIC05Myw3ICs5Myw3IEBAIHB1YmxpYzoKICAgICBDYWNo
ZWRTY3JpcHQqIGNhY2hlZFNjcmlwdCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q2FjaGVkU2NyaXB0
KENhY2hlZFNjcmlwdCopOwogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV93YXRjaGluZ0ZvckxvYWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BvcFN0YXRlRXZlbnQuaAppbmRleCA5NDI3ZTY3NTA5NmZjOTJhOWFiOGQ1
MzcyYzA3YWU1NDMwYTQwZTgyLi40NTJjODk4NGQ5OGJiOTlkMTFkNTcwNWY3YTlkYzQ3YmFhYzc0
NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUG9wU3RhdGVFdmVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qb3BTdGF0ZUV2ZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVi
bGljOgogICAgIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBzdGF0ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhdGU7IH0KICAgICBIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9oaXN0b3J5LmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZh
Y2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBQb3BTdGF0ZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYsIGNvbnN0IFBvcFN0YXRlRXZlbnRJbml0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgKaW5kZXggYzNjNWE5ZGQ4ODNkMzA4ZjMwN2Vk
NWI3Nzk4ZjZiODcyM2RlYWI1Yi4uNjFhYjg4MTdjMGM5MDgxNDdmYTc1NzQzZDI4ZmU0YzJkNDA2
YmRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Byb2Nlc3NpbmdJbnN0cnVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaApAQCAt
NDEsNyArNDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENyZWF0ZWRCeVBhcnNlcihib29s
IGNyZWF0ZWRCeVBhcnNlcikgeyBtX2NyZWF0ZWRCeVBhcnNlciA9IGNyZWF0ZWRCeVBhcnNlcjsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBT
dHJpbmcmIGxvY2FsSHJlZigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYWxIcmVmOyB9CiAgICAgU3R5
bGVTaGVldCogc2hlZXQoKSBjb25zdCB7IHJldHVybiBtX3NoZWV0LmdldCgpOyB9CkBAIC01NSwy
MyArNTUsMjMgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ2hhcmFjdGVyRGF0YTsKICAg
ICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwg
Y29uc3QgU3RyaW5nJiBkYXRhKTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50Jiwg
Q2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjaGVj
a1N0eWxlU2hlZXQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q1NTU3R5bGVTaGVldChjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBj
b25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBTdHJp
bmcmIGNoYXJzZXQsIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSBvdmVycmlkZTsKICNpZiBF
TkFCTEUoWFNMVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiBzaGVldCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRYU0xTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHNoZWV0KSBvdmVycmlkZTsKICNlbmRpZgogCiAg
ICAgYm9vbCBpc0xvYWRpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hlZXRMb2FkZWQo
KSBvdmVycmlkZTsKKyAgICBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0
SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBhcnNlU3R5bGVTaGVl
dChjb25zdCBTdHJpbmcmIHNoZWV0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1Byb2dyZXNzRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKaW5k
ZXggYjQ5ZWI1MTFiODUwNjIwNjA1YTBlMzU4ZGU0M2FlYTVhZmQ3ZjYyZi4uOWNiODdjZTUxYzE4
MDZkYjBiYjEyMzE1MmU3MDdiZGI0OWQxMGEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1Byb2dyZXNzRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVu
dC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgbG9h
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkZWQ7IH0KICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
dG90YWwoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsOyB9CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50
ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRJbnRlcmZh
Y2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFBy
b2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFi
bGUsIHVuc2lnbmVkIGxvbmcgbG9uZyBsb2FkZWQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAppbmRleCA4NzljNGFhMWQ0MTllMDBmYWE0YmJi
MjVkNjc0MzRiNjMwZGFlYTQ1Li44YzdmNjNiM2ZhMDlhZTZhYjY4YzU0ZDNkNDRmY2UxZmFjMWVm
OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmgKQEAgLTQ1LDI2ICs0NSwyNiBAQCBw
dWJsaWM6CiAgICAgRWxlbWVudCogaG9zdEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2hvc3RF
bGVtZW50OyB9CiAgICAgdm9pZCBjbGVhckhvc3RFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKKyAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlLCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjYWxjU3R5
bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKICAgICAvLyBBcyBwZXIgaHR0cDovL2Rldi53
My5vcmcvY3Nzd2cvY3NzMy1yZWdpb25zLyNmbG93LWludG8sIHBzZXVkby1lbGVtZW50cyBzdWNo
IGFzIDo6Zmlyc3QtbGluZSwgOjpmaXJzdC1sZXR0ZXIsIDo6YmVmb3JlIG9yIDo6YWZ0ZXIKICAg
ICAvLyBjYW5ub3QgYmUgZGlyZWN0bHkgY29sbGVjdGVkIGludG8gYSBuYW1lZCBmbG93LgogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVRvRmxvd1Ro
cmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBzaG91bGRNb3ZlVG9GbG93VGhyZWFkKGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBib29s
IGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3RhdGljIFN0cmluZyBw
c2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhQc2V1ZG9JZCk7CiAKIHByaXZhdGU6CiAgICAgUHNl
dWRvRWxlbWVudChFbGVtZW50JiwgUHNldWRvSWQpOwogCi0gICAgdmlydHVhbCBQc2V1ZG9JZCBj
dXN0b21Qc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHNldWRvSWQ7IH0KKyAg
ICBQc2V1ZG9JZCBjdXN0b21Qc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcHNl
dWRvSWQ7IH0KIAogICAgIEVsZW1lbnQqIG1faG9zdEVsZW1lbnQ7CiAgICAgUHNldWRvSWQgbV9w
c2V1ZG9JZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQ
YXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYXdEYXRhRG9jdW1lbnRQYXJzZXIuaAppbmRl
eCBlMDY4NmQ5ZjVkZjNlMzVjZDQ3MDQzNWU3ZGQ0NDc5ZDY2MjhiMzA1Li41NTRlZWQ5ZjY2ZjVk
OTA4ZWJlNWEwM2ZlZmZiZWRiZWEyN2MxMzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vUmF3RGF0YURvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Jhd0Rh
dGFEb2N1bWVudFBhcnNlci5oCkBAIC0zNywyNiArMzcsMjYgQEAgcHJvdGVjdGVkOgogICAgIHsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGUKKyAgICB2b2lkIGZp
bmlzaCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWlzU3RvcHBlZCgpKQogICAgICAg
ICAgICAgZG9jdW1lbnQoKS0+ZmluaXNoZWRQYXJzaW5nKCk7CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgdm9pZCBmbHVzaChEb2N1bWVudFdyaXRlciYgd3JpdGVyKSBvdmVycmlkZQor
ICAgIHZvaWQgZmx1c2goRG9jdW1lbnRXcml0ZXImIHdyaXRlcikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBhcHBlbmRCeXRlcyBpcyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4K
ICAgICAgICAgYXBwZW5kQnl0ZXMod3JpdGVyLCAwLCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgaW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpIG92ZXJyaWRlCisgICAgdm9pZCBp
bnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8v
IDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUzOTc+OiBKUyBjb2Rl
IGNhbiBhbHdheXMgY2FsbCBkb2N1bWVudC53cml0ZSwgd2UgbmVlZCB0byBoYW5kbGUgaXQuCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlCisgICAgdm9pZCBhcHBlbmQoUmVm
UHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuaAppbmRleCA3YWVhZTlk
Y2RkNjE3ODQ4Mzg1NTFlMGNmYWI4ZjAxOWY1ZWJmYzY3Li5jZDRmYmQwZTI5YzMxZDdjMDIxYTJh
ZjYzODNiZjA0MGIyOWU2MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmgKQEAgLTgz
LDcgKzgzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHJlcXVlc3RTY3JpcHQoY29uc3QgU3RyaW5n
JiBzb3VyY2VVcmwpOwogICAgIHZvaWQgc3RvcExvYWRSZXF1ZXN0KCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0
cmluZyBjaGFyc2V0QXR0cmlidXRlVmFsdWUoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgKaW5kZXggZjlkYjYyMzg0NmJlNzQzYjMz
YTdlNmU5ODkxNmM2NWNmZWUwOTVkZS4uYjNlNjE0ZWYzMGI5MWI0OWIyNjMzYWI3N2UzMjZkYmRh
OTEzYjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuaApAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2NyaXB0YWJs
ZURvY3VtZW50UGFyc2VyKERvY3VtZW50JiwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2Ny
aXB0aW5nQ29udGVudCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBTY3JpcHRhYmxlRG9jdW1l
bnRQYXJzZXIqIGFzU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gdGhpczsgfQorICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogYXNTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAKICAgICAv
LyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNzY3Jp
cHQtY3JlYXRlZC1wYXJzZXIKICAgICBib29sIG1fd2FzQ3JlYXRlZEJ5U2NyaXB0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oCmluZGV4IDhl
OWM5YWJiM2JkZjVjYTJjNTM4ZTI4ZDg0NjhlODA4NDIyYTMzYjkuLjQzYmU4OGU2NDZiZmIwOTM4
MTMyOTVjYWM1OWU3ZGRmMGI0NWNhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTkxLDggKzkxLDggQEAgcHJpdmF0ZToKIAog
I2lmIFVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCiAgICAgLy8g
T3ZlcnJpZGUgZm9yIERpc3BsYXlSZWZyZXNoTW9uaXRvckNsaWVudAotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwbGF5UmVmcmVzaEZpcmVkKGRvdWJsZSB0aW1lc3RhbXApIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUmVmUHRyPERpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hN
b25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3Bs
YXlSZWZyZXNoRmlyZWQoZG91YmxlIHRpbWVzdGFtcCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPERp
c3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3Jt
RGlzcGxheUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9pc1VzaW5nVGltZXIgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc1Rocm90dGxlZCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaAppbmRleCA1ZjMyZTkwNTIwMmNhZGIyNThjNjM4NTIyYWFmODgzOGZiMmYxNTNlLi42
Y2JlYTM3YmRjMzkzYTllM2VlOGYyZjdjZDE0NTEzYWJlNGVkNjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dSb290LmgKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRM
aXN0ZW5lcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkg
b3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkgfHwgRU5BQkxFKERFVEFJTFNfRUxF
TUVOVCkKICAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNsb3QoY29uc3QgTm9kZSYp
OwpAQCAtMTA2LDkgKzEwNiw5IEBAIHByb3RlY3RlZDoKICAgICBib29sIGlzT3JwaGFuKCkgY29u
c3QgeyByZXR1cm4gIW1faG9zdDsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBjaGls
ZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNoaWxkVHlw
ZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZWY8Tm9k
ZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3BlcmF0aW9uKSBvdmVycmlk
ZTsKKyAgICBSZWY8Tm9kZT4gY2xvbmVOb2RlSW50ZXJuYWwoRG9jdW1lbnQmLCBDbG9uaW5nT3Bl
cmF0aW9uKSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9yZXNldFN0eWxlSW5oZXJpdGFuY2UgeyBm
YWxzZSB9OwogICAgIFR5cGUgbV90eXBlIHsgVHlwZTo6VXNlckFnZW50IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU3RhdGljTm9kZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdGF0aWNOb2RlTGlzdC5oCmluZGV4IDZlMzQyYjRkMWRhNGQ2MzExMjVkZjk4Nzc4NWYzYTMx
NWExYTM1NzYuLmIzZjVkZDBjMWIzMTc0NmJkNDgzYmIyNTcyOGZjYWM1YjlkNmZjYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdGF0aWNOb2RlTGlzdC5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RhdGljTm9kZUxpc3QpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBO
b2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTdGF0aWNOb2RlTGlzdCgpIHsgfQpAQCAt
NzQsOCArNzQsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0YXRp
Y0VsZW1lbnRMaXN0KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRWxlbWVudCogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgU3RhdGljRWxlbWVudExpc3QoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgK
aW5kZXggNmJiNWI3ZDI1ZjU3ZjRmYjk3YTg4NDFiYWIwZTE3YjVjMzAxOWVhMS4uNTQ2MzI2MDA1
M2RiNmJiZmE2N2FlMDUzNDFlNmNhZTM1MGM2MjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxl
bWVudC5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJv
bml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgc3lu
Y2hyb25pemVTdHlsZUF0dHJpYnV0ZUludGVybmFsKCkgY29uc3QgeyBTdHlsZWRFbGVtZW50Ojpz
eW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW50ZXJuYWwoY29uc3RfY2FzdDxTdHlsZWRFbGVtZW50
Kj4odGhpcykpOyB9CiAgICAgCi0gICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3Nv
bVN0eWxlKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3Nzb21T
dHlsZSgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBwcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSB7IH0KQEAgLTcxLDcgKzcxLDcgQEAg
cHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29u
ID0gTW9kaWZpZWREaXJlY3RseSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBN
b2RpZmllZERpcmVjdGx5KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApAQCAtNzksNyArNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBhZGRQcm9wZXJ0eVRv
UHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENTU1By
b3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7CiAg
ICAgdm9pZCBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYsIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZv
aWQgc3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJp
bmcsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1RlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaAppbmRleCBkNzhiOTgxOTEz
NTExMzgxY2M3NWRkZTA0MWM2NGVhN2VkZDUwNjE0Li4xYzM0NTNmZGVhMjFlMzgzYTViMjhjMDkx
YjcyMWQyMDY1NzQ0MDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGVtcGxhdGVD
b250ZW50RG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZW1wbGF0
ZUNvbnRlbnREb2N1bWVudEZyYWdtZW50LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzVGVtcGxhdGVDb250ZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNUZW1wbGF0ZUNvbnRlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBFbGVtZW50KiBtX2hv
c3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UZXh0LmgKaW5kZXggZWZkNmJkZTkyN2MxZjk5OTM1N2UyNTFlZTQ1NDIwOWFk
MWNmNTBmYy4uODQ2ZjUxZGZiYTQyNThmODhiNGU2ZDU3YjNkNTVmZmVlYTcxYjk2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBSZW5kZXJQdHI8UmVu
ZGVyVGV4dD4gY3JlYXRlVGV4dFJlbmRlcmVyKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQo
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBSZW5kZXJUZXh0
KiByZW5kZXJlcigpIGNvbnN0OwogCkBAIC02MCwxNSArNjAsMTUgQEAgcHJvdGVjdGVkOgogICAg
IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFJlZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdP
cGVyYXRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5v
ZGVUeXBlKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxO
b2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJy
aWRlOworICAgIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIFJlZjxUZXh0PiB2aXJ0dWFsQ3JlYXRlKGNvbnN0IFN0cmluZyYpOwog
CiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotICAgIHZpcnR1YWwgdm9pZCBmb3JtYXRGb3JE
ZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmb3JtYXRGb3JEZWJ1Z2dlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RXZlbnQuaAppbmRleCA4
YmNlZTI4YWJlZDg0MTBlMjRiMTRlNzRjOWNlN2YxNzdjODc5N2JlLi4zMjllZGY3ZmZlMGViYzMx
MTNhN2VmMDExZjgyMDBiYTUwY2NkOWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VGV4dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFdmVudC5oCkBAIC01Miw3
ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKICAgICAgICAgU3RyaW5nIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAotICAgICAgICB2aXJ0dWFsIEV2ZW50SW50ZXJm
YWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIEV2ZW50SW50ZXJm
YWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0xp
bmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1faW5wdXRUeXBlID09IFRleHRFdmVudElucHV0TGlu
ZUJyZWFrOyB9CiAgICAgICAgIGJvb2wgaXNDb21wb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aW5wdXRUeXBlID09IFRleHRFdmVudElucHV0Q29tcG9zaXRpb247IH0KQEAgLTc0LDcgKzc0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBUZXh0RXZlbnQoQWJzdHJhY3RWaWV3Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhLCBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4mJiwgYm9vbCBzaG91
bGRTbWFydFJlcGxhY2UsIGJvb2wgc2hvdWxkTWF0Y2hTdHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5k
bGluZyk7CiAgICAgICAgIFRleHRFdmVudChBYnN0cmFjdFZpZXcqLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGNvbnN0IFZlY3RvcjxEaWN0YXRpb25BbHRlcm5hdGl2ZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlcyk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzVGV4dEV2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgICAgIGJvb2wgaXNUZXh0RXZlbnQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgICAg
ICBUZXh0RXZlbnRJbnB1dFR5cGUgbV9pbnB1dFR5cGU7CiAgICAgICAgIFN0cmluZyBtX2RhdGE7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1RvdWNoRXZlbnQuaAppbmRleCAzOTk1YmIxM2NjYWNlODcyMGU3ZjA5YzIyODEw
MWY3NDllNjZjNzNjLi5mNDkzMzkzODQ0YTVmODMyMWZiNjExMTY1YWNkOGIxYjMwNTQ0NDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKQEAgLTY5LDkgKzY5LDkgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VGFyZ2V0VG91Y2hlcyhSZWZQdHI8VG91Y2hMaXN0PiYmIHRhcmdldFRvdWNoZXMpIHsg
bV90YXJnZXRUb3VjaGVzID0gdGFyZ2V0VG91Y2hlczsgfQogICAgIHZvaWQgc2V0Q2hhbmdlZFRv
dWNoZXMoUmVmUHRyPFRvdWNoTGlzdD4mJiBjaGFuZ2VkVG91Y2hlcykgeyBtX2NoYW5nZWRUb3Vj
aGVzID0gY2hhbmdlZFRvdWNoZXM7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVG91Y2hFdmVudCgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgVG91Y2hFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1RyYW5zaXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyYW5zaXRp
b25FdmVudC5oCmluZGV4IDgyNDRmMDZmZTgyM2MwZjg2MmM4ZjU5MTkwNzVlZmM4NTljODI4NTMu
LjMzZTQyOGYyOGExMTA5NmY1ZGVmMDMwOTJiOTZiZGI3NDk5MDVhOTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmFuc2l0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJhbnNpdGlvbkV2ZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGRvdWJs
ZSBlbGFwc2VkVGltZSgpIGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCgp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgVHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGlt
ZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9FbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9VSUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVUlFdmVudC5oCmluZGV4IGEw
MDAwOTBmM2IzNWEwMTExN2Q3ZjAyZjhjZDEzODdjZTkwMDgyNDMuLjZhMzg1ZWE2MzAyMDU4ZjI4
MDhjYjc5YzExOGU1NDI5MmM1NjliMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9V
SUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1VJRXZlbnQuaApAQCAtNTcsNyArNTcs
NyBAQCBwdWJsaWM6CiAgICAgQWJzdHJhY3RWaWV3KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV92
aWV3LmdldCgpOyB9CiAgICAgaW50IGRldGFpbCgpIGNvbnN0IHsgcmV0dXJuIG1fZGV0YWlsOyB9
CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgaW50IGtleUNvZGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBj
aGFyQ29kZSgpIGNvbnN0OwpAQCAtNzcsNyArNzcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVUlFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBVSUV2ZW50SW5pdCYpOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgYm9vbCBpc1VJRXZlbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBi
b29sIGlzVUlFdmVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgUmVmUHRyPEFic3Ry
YWN0Vmlldz4gbV92aWV3OwogICAgIGludCBtX2RldGFpbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9XZWJLaXRBbmltYXRpb25FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1dl
YktpdEFuaW1hdGlvbkV2ZW50LmgKaW5kZXggNGJlNzljOGNlMThjYWQ0NDIxNTYyMThhMWZiM2Qz
NzgwN2NhMDBjMy4uMjg1NjU4NzNiNjIzN2JlNjdiMTdjYmUwZGY3YzEyMGNiOTk4ZDNjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdEFuaW1hdGlvbkV2ZW50LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSgpIGNvbnN0OwogICAg
IGRvdWJsZSBlbGFwc2VkVGltZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2
ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViS2l0QW5p
bWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGFuaW1h
dGlvbk5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vV2ViS2l0TmFtZWRGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRG
bG93LmgKaW5kZXggZWNlZmVlMzNlMGYxMzA5OTJmZTYwMjIwNWZkNWM0MjVkZmNlYmQ1Zi4uNDI0
NjE4ODBhY2NhZmUzZjk1OWIwZThmZGRmN2E0YTEzNGQzMWFlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3cuaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVm
Q291bnRlZDxXZWJLaXROYW1lZEZsb3c+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJL
aXROYW1lZEZsb3c+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2Ug
ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBXZWJLaXROYW1l
ZEZsb3dFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFdlYktpdE5hbWVkRmxvd0V2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQor
ICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gdGhlIEpT
IGJpbmRpbmcgY29kZSB0byBkZXRlcm1pbmUgaWYgdGhlIE5hbWVkRmxvdyBvYmplY3QgaXMgcmVh
Y2hhYmxlIG9yIG5vdC4KICAgICAvLyBJZiB0aGUgb2JqZWN0IGhhcyBsaXN0ZW5lcnMsIHRoZSBv
YmplY3Qgc2hvdWxkIG9ubHkgYmUgZGlzY2FyZGVkIGlmIHRoZSBwYXJlbnQgRG9jdW1lbnQgaXMg
bm90IHJlYWNoYWJsZS4KQEAgLTg0LDggKzg0LDggQEAgcHJpdmF0ZToKICAgICBXZWJLaXROYW1l
ZEZsb3coTmFtZWRGbG93Q29sbGVjdGlvbiYsIGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50
VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZSB7IGRlcmVmKCk7IH0KIAogICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBmbG93IHRocmVhZCBhcyBz
cGVjaWZpZWQgaW4gQ1NTLgogICAgIEF0b21pY1N0cmluZyBtX2Zsb3dUaHJlYWROYW1lOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5oCmluZGV4IGMwMzYzMTMzYzA1
YmM0ZWEwMDZmZTA2NzE3NjAyMWFiY2NjZWRmMDkuLmE0NDc0NGNjZDUwNTJkNzBhNjQ5NjVhNTEx
YTFmYTQxMWY2OWRiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRUcmFu
c2l0aW9uRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2
ZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIGRvdWJsZSBlbGFwc2VkVGltZSgp
IGNvbnN0OwogICAgIGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3Qg
U3RyaW5nJiBwc2V1ZG9FbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9X
aGVlbEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCmluZGV4IDUxZGU0
ODY0MDdhNTk1YTAxNGNhYmExM2MzMzM2Y2U4NGU5YWFlZTEuLjc4NWFkZDhlMzU5OTczY2U4ZjIw
YmY3MmM2MGVlYTRlZTRmMTQzYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaApAQCAtOTAsNyAr
OTAsNyBAQCBwdWJsaWM6CiAgICAgLy8gTmVlZGVkIGZvciBPYmplY3RpdmUtQyBsZWdhY3kgc3Vw
cG9ydAogICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERlbHRh
LngoKTsgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50UGhh
c2UgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRXZlbnQucGhhc2UoKTsgfQpAQCAtMTAy
LDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgV2hlZWxFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
LCBjb25zdCBXaGVlbEV2ZW50SW5pdCYpOwogICAgIFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiwgQWJzdHJhY3RWaWV3Kik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNXaGVlbEV2
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1doZWVsRXZlbnQoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIEludFBvaW50IG1fd2hlZWxEZWx0YTsKICAgICBkb3VibGUgbV9kZWx0YVg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgKaW5kZXggOTY3ZTAy
Zjc5YWYyMjNmNDU0OWIwNTk0ODhmZDMzYjQwYzM5YjBkMC4uNzkyMTg5MTk1Y2JhMDNiYTEyODk3
NWJhYjBlZWY5OTc5M2VjYjJjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBlbmROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9k
ZUNvbW1hbmQuaApAQCAtNDAsMTEgKzQwLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQXBw
ZW5kTm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQsIFJlZjxOb2Rl
PiYmLCBFZGl0QWN0aW9uKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9BcHBs
eSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5kZWYg
TkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYp
IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gbV9wYXJlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQu
aAppbmRleCAxNjAwN2JmZjAyZTliYjhlOTRhOGQzYjVlMjJiNGViOTMzMGY4NWQ3Li5iYzgyMDY3
MGM2MGM3OTk4MmQ3YWVkODQ5Y2EzNDA3YTliMjI4ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmgKQEAgLTQ2LDcgKzQ2LDcgQEAg
cHJvdGVjdGVkOgogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUgdGFnTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdGFnTmFtZTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGZvcm1hdFJhbmdlKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwg
Y29uc3QgUG9zaXRpb24mIGVuZE9mU2VsZWN0aW9uLCBSZWZQdHI8RWxlbWVudD4mKSA9IDA7CiAg
ICAgUmVuZGVyU3R5bGUqIHJlbmRlclN0eWxlT2ZFbmNsb3NpbmdUZXh0Tm9kZShjb25zdCBQb3Np
dGlvbiYpOwogICAgIHZvaWQgcmFuZ2VGb3JQYXJhZ3JhcGhTcGxpdHRpbmdUZXh0Tm9kZXNJZk5l
ZWRlZChjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBQb3NpdGlvbiYsIFBvc2l0aW9uJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKaW5kZXggZmM3ZDI2Y2Q3ZTVi
MWJhZTA4MDE0MjhmODAwYzgwMmViZDk2MzBiMi4uOGRlMThkYTQ0NmM2MTVmZTI1NTk2ZTVmMWU3
YzU1NjQ4ZTZjMmExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1h
bmQuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFwcGx5U3R5bGVDb21tYW5kKFBh
c3NSZWZQdHI8RWxlbWVudD4sIGJvb2wgcmVtb3ZlT25seSwgRWRpdEFjdGlvbik7CiAgICAgQXBw
bHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBFZGl0aW5nU3R5bGUqLCBib29sICgqaXNJ
bmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVsZW1lbnQqKSwgRWRpdEFjdGlvbik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9BcHBseSgpIG92
ZXJyaWRlOwogCiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAgICAgYm9vbCBpc1N0eWxl
ZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0JyZWFrQmxvY2txdW90ZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1b3RlQ29tbWFuZC5oCmluZGV4IDdjZWQ5NTA0MjZjNzRl
MzExMWJmMTkwZmFmZDE2MGFkZGYzZDIzZWIuLjk4Njk3NjljMTQ4NDRjMmJkOWI2MzBjZjQ4NzI5
YjQ5ZmQ4YjU1NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9j
a3F1b3RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQnJlYWtCbG9ja3F1
b3RlQ29tbWFuZC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBCcmVha0Jsb2NrcXVvdGVDb21tYW5kKERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCB2
b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29t
cG9zaXRlRWRpdENvbW1hbmQuaAppbmRleCA3MDQ0YzQ1NTNlYjNjMGM2MzA4ZTBjMzI3NTBkZjE2
ZDE1YzMzNWZmLi40NjViNjAxYTc3NTc4OTExNWI3Njg3YWVmNDljMDBmZmVjNzc2OTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCkBAIC00Miw5
ICs0Miw5IEBAIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb24gOiBwdWJsaWMgVW5kb1N0ZXAg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8RWRpdENvbW1hbmRDb21wb3NpdGlvbj4gY3JlYXRl
KERvY3VtZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIGNvbnN0IFZpc2libGVTZWxlY3Rp
b24mLCBFZGl0QWN0aW9uKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEVkaXRB
Y3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZWRpdEFjdGlv
bjsgfQorICAgIHZvaWQgdW5hcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVhcHBseSgpIG92
ZXJyaWRlOworICAgIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZWRpdEFjdGlvbjsgfQogICAgIHZvaWQgYXBwZW5kKFNpbXBsZUVkaXRDb21tYW5k
Kik7CiAgICAgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRp
dEFjdGlvbiA9PSBFZGl0QWN0aW9uQ3JlYXRlTGluazsgfQogCkBAIC0xNzMsNyArMTczLDcgQEAg
cHJvdGVjdGVkOgogICAgIFZlY3RvcjxSZWZQdHI8RWRpdENvbW1hbmQ+PiBtX2NvbW1hbmRzOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0NvbXBvc2l0ZUVkaXRDb21tYW5kKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNDb21wb3NpdGVFZGl0Q29t
bWFuZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxFZGl0
Q29tbWFuZENvbXBvc2l0aW9uPiBtX2NvbXBvc2l0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggYjA3YmRmMGM5
NjFhMzAzMjBjYmI3YTgxZTg0NTM3ODdjOGE3YWVlMC4uNjA3OWIyMTEwOTc3YTYzY2Q0MjlmMTVj
YjdjYTRlMTAzNGVhNmZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxl
dGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ1LDExICs0NSwxMSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZChSZWZQdHI8VGV4dD4mJiwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBjb3VudCwgRWRpdEFjdGlvbik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkb1VuYXBw
bHkoKSBvdmVycmlkZTsKICAgICAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRO
b2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAg
ICAgUmVmUHRyPFRleHQ+IG1fbm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdENvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaApp
bmRleCBiZjFlMzYwZDlhYTFjM2U3NzAxOTVlZTNhYmI1NGM4MmZkOWUzNTI5Li41Y2U3MzVhZTIw
OTZhNTUxODNlMWM2NmJkNTQwNTY0NDY1ZjE3NzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
Q29tbWFuZC5oCkBAIC0xMDcsNyArMTA3LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShOb2RlKiwgQVhUZXh0RWRpdFR5cGUs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBpc1NpbXBsZUVkaXRDb21tYW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTaW1wbGVFZGl0Q29tbWFuZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIGlubGluZSBTaW1wbGVFZGl0Q29tbWFuZCogdG9TaW1w
bGVFZGl0Q29tbWFuZChFZGl0Q29tbWFuZCogY29tbWFuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggNTU1ZTQ4YTM3ZGFj
NTVkYjAyMzNhMDA2NjEyMWRhNmYzZmYwNTZjOS4uNWUzNWM0Yjc2MzM0MTA5OGM0NzA2ZWJjZGI1
MDQ4OTRkODkyMjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRJ
bnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTQ1LDE0ICs0NSwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZChSZWZQdHI8VGV4dD4mJiBub2RlLCB1bnNpZ25lZCBv
ZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykKLSAg
ICB2aXJ0dWFsIHZvaWQgZG9SZWFwcGx5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkb1JlYXBwbHko
KSBvdmVycmlkZTsKICNlbmRpZgogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAg
ICAKICAgICBSZWZQdHI8VGV4dD4gbV9ub2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9JbnNlcnROb2RlQmVmb3JlQ29tbWFuZC5oCmluZGV4IGU2NjU3NDA2OWJhMTZhZWYzOTIwMmU3
MzJmZmFhMDU5YjAzNzZhOGMuLmY3YWZlYTI5Njk2MTJjYTEwMDRlNmE1MjMyNmIyOGEzZWI5ZTkz
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNv
bW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydE5vZGVCZWZvcmVDb21t
YW5kLmgKQEAgLTQyLDExICs0MiwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0Tm9kZUJlZm9y
ZUNvbW1hbmQoUmVmUHRyPE5vZGU+JiYgY2hpbGRUb0luc2VydCwgUmVmUHRyPE5vZGU+JiYgY2hp
bGRUb0luc2VydEJlZm9yZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUsIEVk
aXRBY3Rpb24pOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9B
cHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAKICNpZm5k
ZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9k
ZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUq
PiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8Tm9kZT4gbV9pbnNlcnRDaGlsZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaAppbmRleCAzYmU2NjFi
YTI0MTYxNzkxY2IzYzdhN2Q1NmEyN2U5MGVlNmVmYWY5Li4zNmYzYjMzZDJkM2Y5ZDVhMTk0Nzhj
MTExNThhNzYyZmNkNmM1YTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0lu
c2VydFRleHRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRUZXh0
Q29tbWFuZC5oCkBAIC02Nyw5ICs2Nyw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRlbGV0ZUNo
YXJhY3RlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydFRleHRD
b21tYW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNJbnNl
cnRUZXh0Q29tbWFuZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFBv
c2l0aW9uIHBvc2l0aW9uSW5zaWRlVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mKTsKICAgICBQb3Np
dGlvbiBpbnNlcnRUYWIoY29uc3QgUG9zaXRpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvTWVyZ2VJZGVudGljYWxFbGVtZW50c0NvbW1hbmQuaAppbmRleCA2Mzg4Mjhj
MWFkYjk1NDdmMzZjYTQ3YTBkYTdiMmYxMTBmODA1ZTVmLi4yODI4MjQ3YTIyYTJjZTFjY2UwMjZk
ZjNiOGFkM2E3YjFlMTEzNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01l
cmdlSWRlbnRpY2FsRWxlbWVudHNDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9NZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZC5oCkBAIC00MCwxMSArNDAsMTEgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBNZXJnZUlkZW50aWNhbEVsZW1lbnRzQ29tbWFuZChQYXNzUmVm
UHRyPEVsZW1lbnQ+LCBQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
b0FwcGx5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRl
OworICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9VbmFwcGx5KCkgb3Zl
cnJpZGU7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKICNlbmRpZgogICAgIAogICAgIFJlZlB0
cjxFbGVtZW50PiBtX2VsZW1lbnQxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlQ1NTUHJvcGVydHlDb21tYW5kLmgKaW5kZXggZTMyMzAzMWFmYzdlMWRiZDc4MDMxMWE0MTAz
MWFmZjc3MmU4OThiNS4uMjg5ZjUxOTEzNmU1ZWQ3Yjc3MmUxODRkZDkyMDU3ZDU1Mzg5MDViMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1vdmVDU1NQcm9wZXJ0eUNvbW1h
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUNTU1Byb3BlcnR5Q29tbWFu
ZC5oCkBAIC00NCwxMSArNDQsMTEgQEAgcHJpdmF0ZToKICAgICBSZW1vdmVDU1NQcm9wZXJ0eUNv
bW1hbmQoRG9jdW1lbnQmLCBQYXNzUmVmUHRyPFN0eWxlZEVsZW1lbnQ+LCBDU1NQcm9wZXJ0eUlE
KTsKICAgICB+UmVtb3ZlQ1NTUHJvcGVydHlDb21tYW5kKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZG9BcHBseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHkoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvVW5hcHBseSgpIG92
ZXJyaWRlOwogICAgIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE5vZGVzSW5D
b21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAKICAgICBSZWZQ
dHI8U3R5bGVkRWxlbWVudD4gbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW1v
dmVOb2RlQ29tbWFuZC5oCmluZGV4IDM3N2YyMTI2MDBiODE3MTcwNWM5ZTQxMjNmMWY2YmNhYjg5
MzdhY2UuLjE3MTM1ZjdmZjcyNmQzNGZjNzdlYTI0Y2ZkNWYyNTAwZDZkMDcxMzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVDb21tYW5kLmgKQEAgLTQwLDggKzQwLDggQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBSZW1vdmVOb2RlQ29tbWFuZChSZWY8Tm9kZT4mJiwgU2hv
dWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOwogCi0gICAgdmlydHVhbCB2b2lkIGRv
QXBwbHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkb1VuYXBwbHkoKSBvdmVy
cmlkZTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hT
ZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlcGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggMmIwOGY1MGQyYzAz
NWJmMzQ5MWE5MWM3YzExYzNhZjUyZjQ0MDg5Yi4uNTIyODI4M2NiZTIwYjkxNGExZDZkZTVhNDUy
Nzg4ZGVjNDk4OGI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaApAQCAtMzksNyArMzksNyBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoUmVm
UHRyPFRleHQ+JiYsIHVuc2lnbmVkLCB1bnNpZ25lZCk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlm
eUFjY2Vzc2liaWxpdHlGb3JUZXh0Q2hhbmdlKE5vZGUqLCBBWFRleHRFZGl0VHlwZSwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3Rp
ZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShOb2RlKiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBs
YWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCmluZGV4IDZjNDgzYjJmYjFiOGVhNDUx
MjI2NjA0N2U2NTk3YWNmM2EwY2M2MjQuLjgwNzE3ZTkyOThiZTg0MzQ1MjZjNDk2MWMxYzY5MTRm
NjRhMzE0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZUluc2Vy
dEludG9UZXh0Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFJlZlB0cjxU
ZXh0PiYmLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgRWRpdEFjdGlv
bik7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFjY2Vzc2liaWxpdHlGb3JUZXh0Q2hhbmdlKE5v
ZGUqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShO
b2RlKiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlv
biYpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG1fZGVsZXRlZFRleHQ7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5oCmluZGV4
IDE1MTNhZDEzY2RhNTRhNjU4ZmUwYjNjNWY0MjA2ZWVjYzEzYmQ1OWYuLjMyMzQ5Mjk0MTM3NDk0
OWZkZTdmNjYyOTM4MTRkOTNkZGM2NTFkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmgKQEAgLTUwLDExICs1MCwxMSBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5k
KFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOworICAgIHZv
aWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CiAg
ICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChI
YXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFz
aFNldDxOb2RlKj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50
PiBtX2VsZW1lbnRUb1JlcGxhY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5v
ZGVBdHRyaWJ1dGVDb21tYW5kLmgKaW5kZXggM2M2OTU3OTA3MjlmYjhhMWU0YTYwNjA0ODExZDlj
NWM1ZDM4MzFjNC4uZjg2OWRiZjc0NjBlZDkyZmI1MDU2ZDIzZjE3MjI1MGM1ZWI4NTI0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuaApA
QCAtNDEsMTEgKzQxLDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb0Fw
cGx5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJp
ZGU7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgdmlydHVhbCB2b2lkIGdldE5vZGVzSW5Db21tYW5k
KEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChI
YXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBSZWZQdHI8RWxlbWVudD4g
bV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZXRTZWxlY3Rp
b25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQu
aAppbmRleCA1OGYzMDUyZGU3MTk0YTgzZmE3YTg4NmVlNzU2ZTQxZDA5ODFiMWQxLi4xMGVjYThk
NDllNTMxMjhlNWNkM2EyNTMzZmE1YjM4ZDkyNzg0ODgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaApAQCAtNDEsMTEgKzQxLDExIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgU2V0U2VsZWN0aW9uQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlvbnMpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkb1VuYXBwbHko
KSBvdmVycmlkZTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Tm9kZXNJ
bkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGdldE5vZGVz
SW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogICAgIEZy
YW1lU2VsZWN0aW9uOjpTZXRTZWxlY3Rpb25PcHRpb25zIG1fb3B0aW9uczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oCmluZGV4IGRhOGMxMjcyZjEyODk1MGM4MTlkMDFkNDVlMzVh
Mjc0ZTg1MTRhM2EuLjQxMGQxYzEwNjc0YWNhYmQ2NzgxNjE4YmJlOTdhYzczNDY3MjlkODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaApAQCAtNTYsOSArNTYsOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXF1ZXN0ZXJEZXN0cm95ZWQoKTsKICAgICBib29sIGlzU3RhcnRlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tlcjsgfQogCi0gICAgdmlydHVhbCBjb25zdCBUZXh0Q2hl
Y2tpbmdSZXF1ZXN0RGF0YSYgZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdWNjZWVkKGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbCgpIG92ZXJyaWRlOworICAgIGNvbnN0IFRleHRD
aGVja2luZ1JlcXVlc3REYXRhJiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRT
dWNjZWVkKGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRDYW5jZWwoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTcGVsbENoZWNrUmVx
dWVzdChQYXNzUmVmUHRyPFJhbmdlPiBjaGVja2luZ1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBw
YXJhZ3JhcGhSYW5nZSwgY29uc3QgU3RyaW5nJiwgVGV4dENoZWNraW5nVHlwZU1hc2ssIFRleHRD
aGVja2luZ1Byb2Nlc3NUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDE2MzVhMDg5MThhM2UxMzhmZTVmZTg1
M2IxMzc0ZTI0N2QzMWZhODQuLjQxZGZlNmJkYzllYTljYjY5Y2IwOTc5MGE4OTgyMjkyYzhlZjgw
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rp
b25Db21tYW5kLmNwcApAQCAtNTYsMTEgKzU2LDExIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRvQXBwbHko
KSBvdmVycmlkZQogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkg
b3ZlcnJpZGUKKyAgICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoIW1faGFzQmVlblVuZG9uZSkgewogICAgICAgICAgICAgZnJhbWUoKS5lZGl0b3IoKS51bmFw
cGxpZWRTcGVsbENvcnJlY3Rpb24oc3RhcnRpbmdTZWxlY3Rpb24oKSwgbV9jb3JyZWN0ZWQsIG1f
Y29ycmVjdGlvbik7CkBAIC03MCw3ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgfQogCiAjaWZuZGVm
IE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUq
PiYpIG92ZXJyaWRlCisgICAgdm9pZCBnZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYp
IG92ZXJyaWRlCiAgICAgewogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaAppbmRleCAwNDUxZjYyYWRiNTE0ZDJm
ZjBmMTczMjQ4ZWI3OWRjYjRmMTg2NzU4Li4yNDg4MjUzMmI1YjlmZDIyMWU0OWFmZDlhNzRiNjNh
ZDFlZDZmNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29y
cmVjdGlvbkNvbW1hbmQuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAgICAgfQogcHJpdmF0
ZToKICAgICBTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
VG9CZUNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZG9BcHBseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXRhaW5BdXRv
Y29ycmVjdGlvbkluZGljYXRvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZG9BcHBseSgp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkUmV0YWluQXV0b2NvcnJlY3Rpb25JbmRpY2F0b3Io
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxSYW5nZT4gbV9yYW5nZVRvQmVDb3JyZWN0
ZWQ7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oCmluZGV4IDc2YjMwMjJh
ZjYwYzQ1ZmJiMTY4NjA4ZjgyNTdjYTY1NWNkMzdlODMuLmZiYWY0NjdmNjY0ZjRjYTQyNzc0NmQ4
MDQxZjkyZmFhMzk4ZDk3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3Bs
aXRFbGVtZW50Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVt
ZW50Q29tbWFuZC5oCkBAIC00MCwxMyArNDAsMTMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBT
cGxpdEVsZW1lbnRDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIFBhc3NSZWZQdHI8Tm9kZT4g
c3BsaXRQb2ludENoaWxkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkb1JlYXBwbHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9SZWFwcGx5KCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBleGVjdXRlQXBwbHkoKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogICAgIFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5oCmluZGV4IDcxYTAwNDllZmJkMGZhMzc1MWRm
ZjE1NGEzNTExZDNmNThmZGJmODkuLjZlYjIyODA0MzJkNTNmOWU2YTc3YjM4ZTk2NWUxMjEwNDJl
ZTJlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNv
bW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5k
LmgKQEAgLTQyLDEzICs0MiwxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNwbGl0VGV4dE5v
ZGVDb21tYW5kKFBhc3NSZWZQdHI8VGV4dD4sIGludCBvZmZzZXQpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvUmVhcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkb1JlYXBwbHkoKSBvdmVycmlkZTsKICAgICB2b2lkIGluc2VydFRleHQxQW5kVHJpbVRl
eHQyKCk7CiAgICAgCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwgdm9pZCBnZXROb2Rlc0lu
Q29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0Tm9kZXNJbkNv
bW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmUHRyPFRl
eHQ+IG1fdGV4dDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250
ZW50c0luRHVtbXlTcGFuQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XcmFwQ29u
dGVudHNJbkR1bW15U3BhbkNvbW1hbmQuaAppbmRleCA0ODFmOTZkNDFlNjA0OTg4MTg2NTFhYzYx
MDljZTI2M2RlYjY4NDc2Li40YmViOWNjMTgzMWRjN2UzOTE0N2Q4ZTRmZTg5NzczZDI2ZGEwYjY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dyYXBDb250ZW50c0luRHVtbXlT
cGFuQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV3JhcENvbnRlbnRzSW5E
dW1teVNwYW5Db21tYW5kLmgKQEAgLTQyLDEzICs0MiwxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdyYXBDb250ZW50c0luRHVtbXlTcGFuQ29tbWFuZChQYXNzUmVmUHRyPEVs
ZW1lbnQ+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRvVW5hcHBseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkb1JlYXBw
bHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvQXBwbHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRv
VW5hcHBseSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9SZWFwcGx5KCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBleGVjdXRlQXBwbHkoKTsKIAogI2lmbmRlZiBOREVCVUcKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0Tm9kZXNJbkNvbW1hbmQoSGFzaFNldDxOb2RlKj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAg
IFJlZlB0cjxFbGVtZW50PiBtX2VsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2lvcy9EaWN0YXRpb25Db21tYW5kSU9TLmgKaW5kZXggODc3YTQ2ZDNhOWM1OTIwZmJlMzk0ODE0
M2M3NzA3NzEzNDkxYjdlYy4uZTViNWIzZWY0Yjg0NDcwZDNmODU0Y2RjN2E0ODViNGJlZDQ5OWNj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFu
ZElPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJ
T1MuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERpY3RhdGlvbkNv
bW1hbmRJT1MoRG9jdW1lbnQmLCBWZWN0b3I8VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9uUGhy
YXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0YSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9BcHBs
eSgpIG92ZXJyaWRlOworICAgIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwogCiAgICAgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+PiBtX2RpY3RhdGlvblBocmFzZXM7CiAgICAgUmV0YWluUHRyPGlkPiBt
X21ldGFkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDgw
NDBmNDRjODg4OTk5ZWE0YTBmZGIwMGJjNmE0ZThiYmY4ZDBlMGQuLjRmMTZmZTk0MzM0MmFlZTRm
MDJmZGFmYWQxOTJhNjA3NmUxYzdjZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KQEAgLTM3OSwxNCArMzc5LDE0IEBAIHB1YmxpYzoKICAgICBib29sIG1hZGVGcmFn
bWVudEZyb21QbGFpblRleHQ7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJlYWRXZWJB
cmNoaXZlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHJlYWRGaWxlbmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHJlYWRSVEZEKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHJlYWRSVEYoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcmVhZEltYWdlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29u
c3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVhZFVSTChjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
cmVhZFBsYWluVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRXZWJB
cmNoaXZlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFk
RmlsZW5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFk
SFRNTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRSVEZEKFBhc3NSZWZQ
dHI8U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUlRGKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkSW1hZ2UoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVh
ZFVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZTsKKyAgICBib29s
IHJlYWRQbGFpblRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiB9OwogCiB2b2lkIEVkaXRv
cjo6V2ViQ29udGVudFJlYWRlcjo6YWRkRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBuZXdGcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpp
bmRleCA1YTUyMTk4ZjVlNmU1ZjhiOGZmOGRlMDNlNWNlOTBlNTlmNWU3MmI1Li4yNGZlN2VjNTRi
NGVlMTU5MTU2ZDQwMDdhNmE1ZWZjZWY1Mjg5ZTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YWMvRWRpdG9yTWFjLm1tCkBAIC00NjgsMTQgKzQ2OCwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCByZWFkV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZWFkRmlsZW5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlYWRIVE1MKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGRChQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZWFkUlRGKFBh
c3NSZWZQdHI8U2hhcmVkQnVmZmVyPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlYWRJ
bWFnZShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB0
aXRsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlYWRQbGFpblRleHQoY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkV2ViQXJjaGl2ZShQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4pIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEZpbGVuYW1lcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVhZEhUTUwoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgYm9vbCByZWFkUlRGRChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIG92ZXJy
aWRlOworICAgIGJvb2wgcmVhZFJURihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRl
OworICAgIGJvb2wgcmVhZEltYWdlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgU3Ry
aW5nJiB0eXBlKSBvdmVycmlkZTsKKyAgICBib29sIHJlYWRVUkwoY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZWFkUGxhaW5UZXh0KGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwogfTsKIAogYm9vbCBFZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJl
YWRXZWJBcmNoaXZlKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKaW5kZXggNDE3N2EyZTFlYmRhOGQxMGI0NWM0YTY5Y2VkYmNhZGM1Mjk0
ZjI4OS4uZDkwNzUyNmU2MmQ0MThjMGNmNDM2NDBhYTQ0MDIyZGViYjNhMzMyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcApAQCAtMTM4LDEwICsxMzgsMTAgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgc3RyaW5nVmFsdWVGb3JSYW5nZShjb25zdCBOb2RlJiwgY29uc3QgUmFuZ2UqKTsKIAog
ICAgIHZvaWQgYXBwZW5kRWxlbWVudChTdHJpbmdCdWlsZGVyJiBvdXQsIGNvbnN0IEVsZW1lbnQm
LCBib29sIGFkZERpc3BsYXlJbmxpbmUsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSk7Ci0gICAgdmly
dHVhbCB2b2lkIGFwcGVuZEN1c3RvbUF0dHJpYnV0ZXMoU3RyaW5nQnVpbGRlciYsIGNvbnN0IEVs
ZW1lbnQmLCBOYW1lc3BhY2VzKikgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRDdXN0b21BdHRy
aWJ1dGVzKFN0cmluZ0J1aWxkZXImLCBjb25zdCBFbGVtZW50JiwgTmFtZXNwYWNlcyopIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFRleHQoU3RyaW5nQnVpbGRlciYgb3V0LCBj
b25zdCBUZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEVsZW1lbnQoU3Ry
aW5nQnVpbGRlciYgb3V0LCBjb25zdCBFbGVtZW50JiBlbGVtZW50LCBOYW1lc3BhY2VzKikgb3Zl
cnJpZGUKKyAgICB2b2lkIGFwcGVuZFRleHQoU3RyaW5nQnVpbGRlciYgb3V0LCBjb25zdCBUZXh0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImIG91dCwg
Y29uc3QgRWxlbWVudCYgZWxlbWVudCwgTmFtZXNwYWNlcyopIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBhcHBlbmRFbGVtZW50KG91dCwgZWxlbWVudCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5v
ZGUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IDZkMDcwMjExMWZhN2QzNjhj
NjBhNzM4NTY5Nzg0NTlmMTU3ZDBlNWMuLjA1MmZiODYxNWFkNjc4MTc2NjE1NDY3MzQ5NmI4NzIy
N2VhNTcwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtNDIsOCArNDIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2JVUkxSZWdpc3RyeSBmaW5hbCA6IHB1YmxpYyBV
UkxSZWdpc3RyeSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVVJMKFNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZ2lzdGVyVVJMKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgVVJMUmVnaXN0cmFibGUq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVucmVnaXN0ZXJVUkwoY29uc3QgVVJMJikgb3ZlcnJpZGU7
CiAKICAgICBzdGF0aWMgVVJMUmVnaXN0cnkmIHJlZ2lzdHJ5KCk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaAppbmRleCBjODkxZTkwYzVhOTQ1M2IxMzYyYzc0NWMxMjNlM2I5YTNkZTczZGZiLi45MDQ5
OGUwNmVkMDgxMWQ5MWQzMjgzOTkyMmEyZDVhN2M1OTE2NGZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFVSTFJlZ2lzdHJh
YmxlCi0gICAgdmlydHVhbCBVUkxSZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBVUkxSZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZjxC
bG9iPiBzbGljZShsb25nIGxvbmcgc3RhcnQgPSAwLCBsb25nIGxvbmcgZW5kID0gc3RkOjpudW1l
cmljX2xpbWl0czxsb25nIGxvbmc+OjptYXgoKSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSA9
IFN0cmluZygpKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvRmlsZS5oIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKaW5kZXggNjgzZDIwZDAw
YmQzYzAyOTNjMWY0NzQxNTE3ZWIzZGUyYzI4YmY1OS4uMjY4ZmM3ZDRjMjY5YjcxYjcxNmRiZmYx
YjRlMDNiNjA1MzY3YzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmgKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGaWxlKHBhdGgsIG5hbWVPdmVy
cmlkZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0ZpbGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVybiBt
X3BhdGg7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKaW5kZXggMjdmNGI2MTEyODk5ZmMzYWNk
YTVmZGYyZDBhNjEzOTY1MjQ2YjU3NC4uOTJlZWI1ZWU1N2VjYWY0YjAxMDI5MmFiNTRhMWEzYWE4
OWRkNzdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgKQEAgLTgwLDE0ICs4MCwx
NCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHN0cmluZ1Jlc3VsdCgpOwogCiAgICAgLy8gRXZlbnRU
YXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmlsZVJlYWRlckV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGaWxlUmVhZGVyRXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICAvLyBGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZGluZygpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoaW50IGVycm9yQ29kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTdGFydExvYWRpbmcoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGYWlsKGludCBlcnJvckNv
ZGUpIG92ZXJyaWRlOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxGaWxlUmVhZGVyPjo6cmVmOwog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8RmlsZVJlYWRlcj46OmRlcmVmOwpAQCAtMTAxLDggKzEwMSw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBFdmVudFRh
cmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYo
KTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAg
dm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKICAgICB2b2lk
IHRlcm1pbmF0ZSgpOwogICAgIHZvaWQgcmVhZEludGVybmFsKEJsb2IqLCBGaWxlUmVhZGVyTG9h
ZGVyOjpSZWFkVHlwZSwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFj
a0ZvcndhcmRMaXN0LmgKaW5kZXggNTkyOTI3NjBjY2M4NmY3OTJjNDVkN2M1NGE2ZjY5ZTdlMmMw
NjNjNS4uM2VjYTIwODJmMTFiY2UwYjljZjFlYzQ4NWY3MDQyZWIzN2Y5NjM2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC00NiwxNSArNDYsMTUgQEAgcHVi
bGljOgogCiAgICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFk
ZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdvQmFjaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Gb3J3YXJkKCk7Ci0gICAg
dmlydHVhbCB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7CisgICAgdm9pZCBn
b1RvSXRlbShIaXN0b3J5SXRlbSopIG92ZXJyaWRlOwogICAgICAgICAKICAgICBXRUJDT1JFX0VY
UE9SVCBIaXN0b3J5SXRlbSogYmFja0l0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5
SXRlbSogY3VycmVudEl0ZW0oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBIaXN0b3J5SXRlbSogZm9y
d2FyZEl0ZW0oKTsKLSAgICB2aXJ0dWFsIEhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92
ZXJyaWRlOworICAgIEhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQpIG92ZXJyaWRlOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBiYWNrTGlzdFdpdGhMaW1pdChpbnQsIEhpc3RvcnlJdGVt
VmVjdG9yJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1pdChp
bnQsIEhpc3RvcnlJdGVtVmVjdG9yJik7CkBAIC02MywyMSArNjMsMjEgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FwYWNpdHkoaW50KTsKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGVuYWJsZWQoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEVuYWJsZWQoYm9v
bCk7Ci0gICAgdmlydHVhbCBpbnQgYmFja0xpc3RDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgaW50IGZvcndhcmRMaXN0Q291bnQoKSBvdmVycmlkZTsKKyAgICBpbnQgYmFja0xpc3RDb3Vu
dCgpIG92ZXJyaWRlOworICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGU7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0qKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNsb3NlZCgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVJdGVtKEhpc3RvcnlJdGVtKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9y
eUl0ZW1WZWN0b3ImIGVudHJpZXMoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IHVuc2lnbmVkIGN1cnJlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVu
dCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjdXJyZW50KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJyZW50KHVuc2lnbmVkIG5ld0N1cnJlbnQpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIGNsZWFyQWxsUGFnZUNhY2hlcygpIG92ZXJyaWRlOwor
ICAgIGJvb2wgY2xlYXJBbGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQXR0cmlidXRlRE9NVG9rZW5MaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0F0dHJpYnV0ZURPTVRva2VuTGlzdC5oCmluZGV4IDZm
ZDhjMDBhZDNkNTVlZTYwYjI1NDRlY2NiMDM5ZTFkNWQ2OTQ3ZjIuLjg1ZmI3ZTUwZmY2MzFhMzY4
OGNiYTc0ODM4ZmI3Nzg2YWU3MTZmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QXR0cmlidXRlRE9NVG9rZW5MaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9BdHRyaWJ1
dGVET01Ub2tlbkxpc3QuaApAQCAtMzgsMTEgKzM4LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGF0
dHJpYnV0ZVZhbHVlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVmKCkgb3ZlcnJpZGUgeyBtX2VsZW1lbnQucmVmKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IG1fZWxlbWVudC5kZXJlZigpOyB9CisgICAg
dm9pZCByZWYoKSBvdmVycmlkZSB7IG1fZWxlbWVudC5yZWYoKTsgfQorICAgIHZvaWQgZGVyZWYo
KSBvdmVycmlkZSB7IG1fZWxlbWVudC5kZXJlZigpOyB9CiAKLSAgICB2aXJ0dWFsIEVsZW1lbnQq
IGVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbV9lbGVtZW50OyB9Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUFmdGVyVG9rZW5DaGFuZ2UoKSBvdmVycmlkZTsKKyAgICBFbGVtZW50
KiBlbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gJm1fZWxlbWVudDsgfQorICAgIHZv
aWQgdXBkYXRlQWZ0ZXJUb2tlbkNoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgRWxlbWVudCYgbV9l
bGVtZW50OwogICAgIGNvbnN0IFdlYkNvcmU6OlF1YWxpZmllZE5hbWUmIG1fYXR0cmlidXRlTmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUJ1dHRvbklucHV0VHlwZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5wdXRUeXBlLmgKaW5kZXggZmUwYTkx
OGU0MmEzYWIxYzczN2JhNTU2ZGQ2MWUxNjFiMjczYzFlMS4uYzUwMWRiYzM5NzcwMWVjMzBiYzU0
MWNiMmZjZmI3MGJlNDE4NDBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
QnV0dG9uSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQnV0dG9uSW5w
dXRUeXBlLmgKQEAgLTQxLDExICs0MSwxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQmFz
ZUJ1dHRvbklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VDbGlja2Fi
bGVXaXRoS2V5SW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsK
KyAgICBib29sIHN0b3Jlc1ZhbHVlU2VwYXJhdGVGcm9tQXR0cmlidXRlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29sLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmgKaW5kZXggZmM2MGVjMWRjMDYyN2E4
ZmNiOGIwM2QwZDQyYWQxMzZiM2RiMzcwMC4uYWUyMTU1YjZkMGZkOWY5NTNjNDAzMTI2MmFmNDU1
OTQxNjU1YWM5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxl
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRU
eXBlLmgKQEAgLTM5LDE5ICszOSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCYXNl
Q2hlY2thYmxlSW5wdXRUeXBlIDogcHVibGljIElucHV0VHlwZSB7CiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50
KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93
bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUtleWRvd25F
dmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBG
b3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9s
U3RhdGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURh
dGFMaXN0JiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUtl
eXByZXNzRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBj
YW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhY2Nl
c3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
U3RyaW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlv
cikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQ2hlY2thYmxlKCkgb3ZlcnJpZGU7Cisg
ICAgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0
ZSYpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9v
bCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVLZXlwcmVzc0V2ZW50KEtleWJvYXJk
RXZlbnQqKSBvdmVycmlkZTsKKyAgICBib29sIGNhblNldFN0cmluZ1ZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92
ZXJyaWRlOworICAgIFN0cmluZyBmYWxsYmFja1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc0NoZWNrYWJsZSgpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hv
b3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
Q2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5oCmluZGV4IDYyNmMxMmYzMzA4MmY5Y2Fh
NzkyNWJiZWE3NWJlZDczODMzMzMyMGYuLjVlMmRmOTk0MjI1NzU0NDAxOThmNmJmYTgwMGQ1ZmQ3
ZmRjNDM0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5
RGF0ZUFuZFRpbWVJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaG9v
c2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKQEAgLTQ0LDE5ICs0NCwxOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2xvc2VEYXRlVGltZUNob29zZXIoKTsKIAogICAgIC8vIElucHV0VHlwZSBm
dW5jdGlvbnM6Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVF
dmVudChFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZl
bnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlw
cmVzc0V2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlS2V5dXBFdmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNy
ZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGFjaCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRl
eHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZh
dGVFdmVudChFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtl
eWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUtleXByZXNzRXZlbnQoS2V5
Ym9hcmRFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlS2V5dXBFdmVudChLZXlib2Fy
ZEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91
c2VFdmVudHMpIG92ZXJyaWRlOworICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgLy8gRGF0ZVRpbWVDaG9vc2VyQ2xpZW50IGZ1bmN0aW9uczoKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hvb3NlVmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEVuZENob29zZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENob29z
ZVZhbHVlKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRW5kQ2hvb3Nlcigp
IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPERhdGVUaW1lQ2hvb3Nlcj4gbV9kYXRlVGltZUNob29z
ZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2xpY2thYmxlV2l0
aEtleUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2xpY2thYmxlV2l0aEtl
eUlucHV0VHlwZS5oCmluZGV4IDliZjFkNDgzYzMxNjRkZjgwMzY1N2ZiZGYyM2ZiNzNiMGExZmY3
OGEuLmJkZDQ1MDAwMmViYWQ0N2UzNGM5Yzc1ZmI1NWJkOGU3YjllOGYyYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNsaWNrYWJsZVdpdGhLZXlJbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDbGlja2FibGVXaXRoS2V5SW5wdXRUeXBlLmgKQEAg
LTQ3LDEwICs0NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQmFzZUNsaWNrYWJsZVdp
dGhLZXlJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxl
bWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWRvd25FdmVu
dChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleXBy
ZXNzRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKKyAgICB2b2lk
IGhhbmRsZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBo
YW5kbGVLZXlwcmVzc0V2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhh
bmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNz
S2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVB
bmRUaW1lSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlu
cHV0VHlwZS5oCmluZGV4IGEzYmNkM2E4OWI5NzE3ZTY1NmJhZDdkMmJkN2NhZGIzMzIwMjFlMzEu
LjBmMDljNzcxN2Y1Mjc3NWJjMjUyNTAyOWEyZDgyYjMyNzJmZDA5NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuaApAQCAtNDIsMTUgKzQyLDE1
IEBAIGNsYXNzIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUgewog
cHJvdGVjdGVkOgogICAgIEJhc2VEYXRlQW5kVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50
JiBlbGVtZW50KSA6IElucHV0VHlwZShlbGVtZW50KSB7IH0KIAotICAgIHZpcnR1YWwgRGVjaW1h
bCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzKGNvbnN0IFN0cmlu
ZyYsIERhdGVDb21wb25lbnRzKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcg
c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBzZXJpYWxpemUoY29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOworICAgIERl
Y2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHMoY29uc3QgU3RyaW5nJiwg
RGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2FuaXRpemVWYWx1
ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2VyaWFsaXplKGNv
bnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKICAgICBTdHJpbmcgc2VyaWFsaXplV2l0aENv
bXBvbmVudHMoY29uc3QgRGF0ZUNvbXBvbmVudHMmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wg
c2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBj
b25zdCA9IDA7Ci0gICAgdmlydHVhbCBTdHJpbmcgdmlzaWJsZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRG
T1JNKElPUykKLSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJv
YXJkRXZlbnQqKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNTgsMTkg
KzU4LDE5IEBAIHByaXZhdGU6CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIERhdGVD
b21wb25lbnRzOjpUeXBlIGRhdGVUeXBlKCkgY29uc3QgPSAwOwogI2VuZGlmCi0gICAgdmlydHVh
bCBkb3VibGUgdmFsdWVBc0RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVBc0RhdGUoZG91YmxlLCBFeGNlcHRpb25Db2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBkb3VibGUgdmFsdWVBc0RvdWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRWYWx1ZUFzRGVjaW1hbChjb25zdCBEZWNpbWFsJiwgVGV4dEZpZWxkRXZl
bnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBpc1N0ZXBwYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSB2
YWx1ZUFzRGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWVBc0RhdGUoZG91
YmxlLCBFeGNlcHRpb25Db2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHZhbHVlQXNE
b3VibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlQXNEZWNpbWFsKGNvbnN0
IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBEZWNp
bWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNT
dGVwcGFibGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFN0cmluZyBzZXJpYWxpemVX
aXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Q7Ci0gICAgdmlydHVhbCBTdHJpbmcgbG9jYWxp
emVWYWx1ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIG92ZXJyaWRlOworICAgIFN0cmluZyBsb2NhbGl6ZVZh
bHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNSZWFk
T25seSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1
dGUoKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuaAppbmRleCBlZTU1MGQ0NTkyZTY2OGZhOTg0NGUxYjZm
MTg0NWZmYzE1MTg0ZjY0Li44Mjg5ZmQ5MDBmOWE4ZmViZDQ5YThhMDlkOTc3NmI1ZmM2NjYwZGJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5oCkBAIC00MiwxMCArNDIs
MTAgQEAgcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEJhc2VUZXh0SW5wdXRUeXBlKEhUTUxJbnB1
dEVsZW1lbnQmIGVsZW1lbnQpIDogVGV4dEZpZWxkSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1RleHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVjdGlvbkFQSSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaXNUZXh0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGF0
dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3Vw
cG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNTZWxl
Y3Rpb25BUEkoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0J1dHRvbklucHV0VHlwZS5oCmluZGV4IDFkZWEwMzM0NDYzNWEwNWRj
Y2Y1MjIwNGE2MTg3NmU5MzMwNGMyOTIuLjVjNjI4NjI1Y2U4NTA5NTBkYjFiNjVhMTA4YWZjNzE3
N2RmODhmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQnV0dG9uSW5wdXRUeXBl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CdXR0b25JbnB1dFR5cGUuaApAQCAtNDAsOSAr
NDAsOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQnV0dG9uSW5wdXRUeXBlKEhUTUxJbnB1dEVs
ZW1lbnQmIGVsZW1lbnQpIDogQmFzZUJ1dHRvbklucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1RleHRCdXR0b24oKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1RleHRCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENv
bGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FjaGVkSFRNTENvbGxlY3Rpb24uaApp
bmRleCBkY2IwMjJiMWJjYzgyM2QxMzM0M2FlOGQ2NWU3NTM2MzE5YjUwYjY3Li4xZGY3ZjgzODY1
N2M4MDA1ZmQzNDk5ZGIwN2Y3MThjZTAwNTgwYzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NhY2hlZEhUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9D
YWNoZWRIVE1MQ29sbGVjdGlvbi5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+Q2FjaGVkSFRNTENvbGxlY3Rpb24oKTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQg
bGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVD
b3VudChjb2xsZWN0aW9uKCkpOyB9Ci0gICAgdmlydHVhbCBFbGVtZW50KiBpdGVtKHVuc2lnbmVk
IG9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleENhY2hlLm5vZGVBdChjb2xs
ZWN0aW9uKCksIG9mZnNldCk7IH0KLSAgICB2aXJ0dWFsIEVsZW1lbnQqIG5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc2l6ZV90
IG1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2luZGV4Q2FjaGUu
bWVtb3J5Q29zdCgpICsgSFRNTENvbGxlY3Rpb246Om1lbW9yeUNvc3QoKTsgfQorICAgIHVuc2ln
bmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faW5kZXhDYWNoZS5u
b2RlQ291bnQoY29sbGVjdGlvbigpKTsgfQorICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgb2Zm
c2V0KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4Q2FjaGUubm9kZUF0KGNvbGxlY3Rp
b24oKSwgb2Zmc2V0KTsgfQorICAgIEVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOworICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pbmRleENhY2hlLm1lbW9yeUNvc3QoKSArIEhUTUxD
b2xsZWN0aW9uOjptZW1vcnlDb3N0KCk7IH0KIAogICAgIC8vIEZvciBDb2xsZWN0aW9uSW5kZXhD
YWNoZTsgZG8gbm90IHVzZSBlbHNld2hlcmUuCiAgICAgdXNpbmcgQ29sbGVjdGlvblRyYXZlcnNh
bEl0ZXJhdG9yID0gdHlwZW5hbWUgQ29sbGVjdGlvblRyYXZlcnNhbDx0cmF2ZXJzYWxUeXBlPjo6
SXRlcmF0b3I7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBib29sIGNvbGxlY3Rpb25D
YW5UcmF2ZXJzZUJhY2t3YXJkKCkgY29uc3QgeyByZXR1cm4gdHJhdmVyc2FsVHlwZSAhPSBDb2xs
ZWN0aW9uVHJhdmVyc2FsVHlwZTo6Q3VzdG9tRm9yd2FyZE9ubHk7IH0KICAgICB2b2lkIHdpbGxW
YWxpZGF0ZUluZGV4Q2FjaGUoKSBjb25zdCB7IGRvY3VtZW50KCkucmVnaXN0ZXJDb2xsZWN0aW9u
KGNvbnN0X2Nhc3Q8Q2FjaGVkSFRNTENvbGxlY3Rpb248SFRNTENvbGxlY3Rpb25DbGFzcywgdHJh
dmVyc2FsVHlwZT4mPigqdGhpcykpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNh
Y2hlKERvY3VtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGUoRG9jdW1l
bnQmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgZWxlbWVudE1hdGNoZXMoRWxlbWVudCYpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NoZWNrYm94SW5wdXRUeXBlLmgKaW5kZXggODU0Y2UzZTFi
MDNlODY0ODYxNTJhZTZlMWM2ZmNkNDVhMmE5ZmYwYy4uM2QzOGUxZjQxZjU3YTcxYWRlYjEyZjdh
NGUyZjEyYmIyMTIyZTY1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DaGVja2Jv
eElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2hlY2tib3hJbnB1dFR5cGUu
aApAQCAtNDAsMTQgKzQwLDE0IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBDaGVja2JveElucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VDaGVja2FibGVJbnB1dFR5cGUo
ZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWx1
ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbERpc3BhdGNoQ2xpY2soSW5wdXRFbGVtZW50Q2xpY2tTdGF0ZSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwYXRjaENsaWNrKEV2ZW50KiwgY29uc3QgSW5wdXRFbGVt
ZW50Q2xpY2tTdGF0ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0NoZWNrYm94KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSW5kZXRlcm1pbmF0ZUFw
cGVhcmFuY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0
IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVLZXl1cEV2ZW50KEtleWJvYXJkRXZlbnQq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEaXNwYXRjaENsaWNrKElucHV0RWxlbWVudENsaWNr
U3RhdGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZERpc3BhdGNoQ2xpY2soRXZlbnQqLCBjb25z
dCBJbnB1dEVsZW1lbnRDbGlja1N0YXRlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NoZWNrYm94
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0luZGV0ZXJtaW5hdGVBcHBlYXJh
bmNlKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmgKaW5kZXggZmU1NzdjYWY0N2MzMDIwM2RlNzNlYTk0
ODgyY2U2YWFkZjUzY2ZlMS4uZmY2NDk4Yjk5MmEzMDlmMzA3MzhkMGZjMTc1MDM1MDUwNTg5YTcw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuaApAQCAtNDUsMjYgKzQ1LDI2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Db2xvcklucHV0VHlwZSgpOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRFbmRDaG9vc2VyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBDb2xvciBjdXJyZW50Q29sb3IoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU2hvd1N1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWZWN0
b3I8Q29sb3I+IHN1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzQ29sb3JDb250cm9sKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgZmFsbGJhY2tWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNh
bml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50
KEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFJlc2V0T25Eb2N1bWVudEFjdGl2YXRpb24o
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHZhbHVlQXNDb2xvcigpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RDb2xvcihjb25zdCBDb2xvciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZEVuZENob29zZXIoKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGVsZW1lbnRSZWN0UmVs
YXRpdmVUb1Jvb3RWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgY3VycmVudENvbG9y
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTaG93U3VnZ2VzdGlvbnMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWZWN0b3I8Q29sb3I+IHN1Z2dlc3Rpb25zKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0NvbG9yQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBw
b3J0c1JlcXVpcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGZhbGxiYWNrVmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBU
ZXh0RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZURPTUFjdGl2
YXRlRXZlbnQoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGFjaCgpIG92ZXJyaWRlOwor
ICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBvdmVycmlkZTsKKyAgICBib29s
IHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHNob3VsZFJlc2V0T25Eb2N1bWVudEFjdGl2YXRpb24oKSBvdmVycmlkZTsKKyAgICBDb2xvciB2
YWx1ZUFzQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdENvbG9yKGNvbnN0
IENvbG9yJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGVuZENvbG9yQ2hvb3NlcigpOwogICAgIHZv
aWQgdXBkYXRlQ29sb3JTd2F0Y2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RGF0ZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmgKaW5k
ZXggOGNhMDFmNWM2YzIwNzY3NmZmOTgyMjVjMTQ1MWI4NDA4NjQ5YzViOS4uNzU0MGE1NzY2ZTQ3
YTNlOGNkZGJkMDM1MGFiNDc4MmNmZGJlMDc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRU
eXBlLmgKQEAgLTQxLDEyICs0MSwxMiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRGF0ZUlucHV0
VHlwZShIVE1MSW5wdXRFbGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwo
Y29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhk
b3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzRGF0ZUZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9uZW50czo6VHlw
ZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFu
Z2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlVG9EYXRl
Q29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29t
cG9uZW50cyopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVD
b21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzRGF0ZUZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lSW5wdXRUeXBlLmgKaW5kZXggMjhiNTEx
ZTFhNzJjYzZjZWRhNjQzOGVkZDk3MjAzYjA5Y2Y1YTFiZS4uMDIwNGEwYTc5MmY0N2I1ZWU0Y2Y2
ZDZmNDQwNTBlOGRkYWUyMDBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
VGltZUlucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVJbnB1dFR5
cGUuaApAQCAtNDIsMTQgKzQyLDE0IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBEYXRlVGltZUlu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VEYXRlVGltZUlucHV0VHlw
ZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBEYXRlQ29t
cG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3Rl
cFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgRGVjaW1hbCBkZWZhdWx0VmFsdWVGb3JTdGVwVXAoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VUb0RhdGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3Qg
VUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25lbnRzKikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhkb3VibGUs
IERhdGVDb21wb25lbnRzKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRGF0
ZVRpbWVGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNhbml0aXpl
VmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9uZW50
czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0ZXBSYW5nZSBjcmVhdGVT
dGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVycmlkZTsKKyAgICBEZWNpbWFsIGRl
ZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2VUb0Rh
dGVDb21wb25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVD
b21wb25lbnRzKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0
ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNEYXRlVGltZUZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNhbml0
aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZS5oCmluZGV4IDkyOWE0Y2E2YTA2MjMzNzg0Y2Y0YTAxZWFkNjFhNzBkNDkyY2NiZTQuLjg4YzBi
NWJmM2IyOTIxZTcxMjliNmExMzZjNGYyY2RkNjIyODFjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5oCkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IERhdGVUaW1lTG9jYWxJbnB1dFR5cGUoSFRNTElucHV0RWxlbWVudCYg
ZWxlbWVudCkgOiBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZShlbGVtZW50KSB7
IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBEYXRlQ29tcG9uZW50czo6VHlw
ZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNE
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNEYXRlKGRv
dWJsZSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RlcFJh
bmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhcios
IHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNv
bXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEYXRlVGltZUxv
Y2FsRmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERhdGVDb21wb25lbnRzOjpUeXBlIGRh
dGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIHZhbHVlQXNEYXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWYWx1ZUFzRGF0ZShkb3VibGUsIEV4Y2VwdGlvbkNvZGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0ZXBI
YW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJ
bnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIHNldE1pbGxpc2Vjb25kVG9EYXRlQ29tcG9uZW50cyhk
b3VibGUsIERhdGVDb21wb25lbnRzKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0RhdGVU
aW1lTG9jYWxGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9FbWFpbElucHV0VHlwZS5oCmluZGV4IDQ1ODE4Y2MwMjljNTU3
MDM4YmRlYzRjYTIyZjY4NDViZTM2NzQ3MTIuLjNkZTg4YjQ0ZDdjNDE0NDIwNDg5YWFkNDhmOTNj
YmQ3MTI2OThkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmgKQEAgLTQwLDEz
ICs0MCwxMyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRW1haWxJbnB1dFR5cGUoSFRNTElucHV0
RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtYWlsRmllbGQoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25BUEkoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNFbWFpbEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1NlbGVjdGlv
bkFQSSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzYW5pdGl6ZVZhbHVlKGNvbnN0IFN0
cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJlY3RvcnlEb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmNwcAppbmRleCA1NGViNzkw
NTljYjllMzJiNzA2MmZjOWIxZGU2NDhiMDdhODFmY2MyLi43YTY0NTMzMWVkYjJjY2IxZjUyYTg2
YTkyM2MyNWFhZjE4NTUwMmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERp
cmVjdG9yeURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9y
eURvY3VtZW50LmNwcApAQCAtNTAsMTEgKzUwLDExIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaCgpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5k
KFJlZlB0cjxTdHJpbmdJbXBsPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaCgpIG92ZXJy
aWRlOwogCiAgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBuZWVkIHRoaXM/Ci0gICAgdmlydHVhbCBi
b29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICB2b2lkIGNoZWNrQnVmZmVyKGludCBsZW4gPSAxMCkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0ZUUERpcmVjdG9yeURvY3VtZW50LmgKaW5kZXggYzE1NmFkNmQz
YTA0Y2JiODBlYjllZDk4MDFjODUwNmY5OWYyMjNiMy4uMTk3OWFlODViZGI2NGZiZDUyOWJiMzI2
OTA1NzllZDZiOGQ5NTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GVFBEaXJl
Y3RvcnlEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRlRQRGlyZWN0b3J5RG9j
dW1lbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgRlRQRGly
ZWN0b3J5RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKLSAgICB2aXJ0dWFsIFJlZjxEb2N1
bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgUmVmPERvY3VtZW50UGFy
c2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZpbGVJbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCmluZGV4IGFhZWNjMDZhMmRkODVj
Nzg5NGE2YzdhYTVlY2U0YzA0MjM0OGE2MmUuLjlhNTAxNDQwYWExOTY0YTAwZDNlYzJkMmRmZjZj
Zjc3MzM4MDJkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlw
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmlsZUlucHV0VHlwZS5oCkBAIC01MSw0NCAr
NTEsNDQgQEAgcHVibGljOgogICAgIHN0YXRpYyBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4g
ZmlsZXNGcm9tRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJik7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNv
bnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9y
bUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5w
dXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBj
YW5DaGFuZ2VGcm9tQW5vdGhlclR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEZp
bGVMaXN0KiBmaWxlcygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxlcyhQYXNz
UmVmUHRyPEZpbGVMaXN0Pikgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVG
b3JtQ29udHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN0b3JlRm9ybUNv
bnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBh
cHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJp
bmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRE9N
QWN0aXZhdGVFdmVudChFdmVudCopIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBjYW5TZXRTdHJpbmdWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2Fu
Q2hhbmdlRnJvbUFub3RoZXJUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmlsZUxpc3QqIGZp
bGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaWxlcyhQYXNzUmVmUHRyPEZpbGVMaXN0Pikg
b3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlT
dHJpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgZGlzcGxheVN0cmluZygpIGNvbnN0
IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCBib29sIGNhblNldFZhbHVlKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBnZXRUeXBlU3BlY2lmaWNWYWx1ZShT
dHJpbmcmKSBvdmVycmlkZTsgLy8gQ2hlY2tlZCBmaXJzdCwgYmVmb3JlIGludGVybmFsIHN0b3Jh
Z2Ugb3IgdGhlIHZhbHVlIGF0dHJpYnV0ZS4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29u
c3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92
ZXJyaWRlOworICAgIGJvb2wgY2FuU2V0VmFsdWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBnZXRUeXBlU3BlY2lmaWNWYWx1ZShTdHJpbmcmKSBvdmVycmlkZTsgLy8gQ2hlY2tl
ZCBmaXJzdCwgYmVmb3JlIGludGVybmFsIHN0b3JhZ2Ugb3IgdGhlIHZhbHVlIGF0dHJpYnV0ZS4K
KyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
Ci0gICAgdmlydHVhbCBib29sIHJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmKSBv
dmVycmlkZTsKKyAgICBib29sIHJlY2VpdmVEcm9wcGVkRmlsZXMoY29uc3QgRHJhZ0RhdGEmKSBv
dmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBJY29uKiBpY29uKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRmlsZVVwbG9hZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBtdWx0aXBsZUF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBkZWZhdWx0VG9vbFRpcCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEljb24qIGljb24oKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRmlsZVVwbG9hZCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJs
ZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdWx0aXBsZUF0dHJpYnV0
ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZGVmYXVsdFRvb2xUaXAoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIEZpbGVDaG9vc2VyQ2xpZW50IGltcGxlbWVudGF0aW9uLgotICAg
IHZpcnR1YWwgdm9pZCBmaWxlc0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5m
bz4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGVzQ2hvc2VuKGNvbnN0IFZlY3RvcjxGaWxlQ2hv
b3NlckZpbGVJbmZvPiYpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IHZvaWQgZmlsZXNDaG9zZW4oY29uc3QgVmVjdG9yPEZpbGVDaG9vc2VyRmlsZUluZm8+JiwgY29u
c3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nLCBJY29uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxl
c0Nob3Nlbihjb25zdCBWZWN0b3I8RmlsZUNob29zZXJGaWxlSW5mbz4mLCBjb25zdCBTdHJpbmcm
IGRpc3BsYXlTdHJpbmcsIEljb24qKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgLy8gRmlsZUlj
b25Mb2FkZXJDbGllbnQgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJl
bmRlcmluZyhQYXNzUmVmUHRyPEljb24+KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVJlbmRl
cmluZyhQYXNzUmVmUHRyPEljb24+KSBvdmVycmlkZTsKIAogICAgIFBhc3NSZWZQdHI8RmlsZUxp
c3Q+IGNyZWF0ZUZpbGVMaXN0KGNvbnN0IFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiYgZmls
ZXMpIGNvbnN0OwogICAgIHZvaWQgcmVxdWVzdEljb24oY29uc3QgVmVjdG9yPFN0cmluZz4mKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA3
NTkzOTA0MzVhZWQxOWRmYzFmNTBlNDBiMzZiNzg0NWQ1MmNjYjVkLi5kYTNkZThkNTE2YjMyYjM5
ZmU5NzkxZGVmZmZhNWFlYWE3MGY4MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBGb3Jt
QXR0cmlidXRlVGFyZ2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgRm9ybUFzc29j
aWF0ZWRFbGVtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGlkVGFyZ2V0Q2hh
bmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgaWRUYXJnZXRDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAK
ICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQmIG1fZWxlbWVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCBmMzlhY2YyZDZhMTkzZjc1NjQ4
ZjcyOTU5NTUzYmZiYjMwNWI2MTA1Li43ODQxMWU3NzM2NzNjNjM1MzQyMjI1YTFlNmZmZGFhYTVh
YTdhZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgK
QEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCByZXNldEZvcm1BdHRyaWJ1
dGVUYXJnZXRPYnNlcnZlcigpOwogCi0gICAgdmlydHVhbCBib29sIGlzRm9ybUFzc29jaWF0ZWRF
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Rm9ybUF0dHJpYnV0ZVRhcmdldE9ic2VydmVy
PiBtX2Zvcm1BdHRyaWJ1dGVUYXJnZXRPYnNlcnZlcjsKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1f
Zm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuaAppbmRleCAxNDgzYjE2
YTAxNzQ5YTIwMzZhZGJlMTc5OTRhNmRhYjI0YjUwOTM4Li42NjBjNzA2NzE2OGM4NWNjM2I2ODM3
NzllOTc5NjVlMjhjYzI5OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
bmNob3JFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVu
dC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xpdmVMaW5rKCkg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMo
KSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRz
KCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBib29sIGhhc1JlbCh1aW50MzJfdCByZWxhdGlvbikg
Y29uc3Q7CiAgICAgCkBAIC0xMTUsMjAgKzExNSwyMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTEFuY2hvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0aXZlID0gdHJ1
ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQg
YWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBzaG9ydCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgYm9vbCBkcmFnZ2FibGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBi
b29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTW91c2VGb2N1
c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5
Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCopIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYWN0aXZl
ID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGFj
Y2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGUgZmluYWw7CisgICAg
Ym9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKKyAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgU3RyaW5nIHRhcmdldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHNob3J0IHRhYkluZGV4KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBkcmFnZ2FibGUoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKIAogICAgIHZvaWQgc2VuZFBpbmdzKGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcHBsZXRFbGVtZW50LmgKaW5kZXggZWE4OTQxZTU4
NGIyMWNjMzUzYWE4MTJjMGJiNWM0NmVlYWU3ZmI1Mi4uZjQ4OGJmMWRhYjQ3NDczMjUzM2I2NWMw
MTg1MzgxYmI0MTBiZWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXBw
bGV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFwcGxldEVsZW1lbnQu
aApAQCAtMzQsMTMgKzM0LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEFwcGxldEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBjcmVhdGVkQnlQYXJz
ZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJT
dHlsZSYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2Fk
aW5nUGx1Z2luKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdl
dChQbHVnaW5DcmVhdGlvbk9wdGlvbikgb3ZlcnJpZGU7CisgICAgUmVuZGVyV2lkZ2V0KiByZW5k
ZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVX
aWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG92ZXJyaWRlOwogCiAgICAgYm9vbCBjYW5FbWJl
ZEphdmEoKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
cmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAppbmRl
eCBhMDYzYjgxODZjZjM0YWM0NDA2OGFiZTA1NjZjM2I0MmEzNmRiZTc4Li43MDdiMDVjZjQyNGQ5
YWE0MTVmNzQzZWE5YzdlZTgxMGY3Yzk3Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFF
bGVtZW50LmgKQEAgLTUxLDE0ICs1MSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxB
cmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGVjdGlvblJlc3RvcmF0
aW9uTW9kZSwgU2VsZWN0aW9uUmV2ZWFsTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0YXJnZXQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZShTZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUsIFNlbGVjdGlvblJl
dmVhbE1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7CiAK
ICAgICBlbnVtIFNoYXBlIHsgRGVmYXVsdCwgUG9seSwgUmVjdCwgQ2lyY2xlLCBVbmtub3duIH07
CiAgICAgUGF0aCBnZXRSZWdpb24oY29uc3QgTGF5b3V0U2l6ZSYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXggZTU0ZGM4OThmMGMzNDcx
NThjMGU0NTY0ZGEyMjZlYTViNzc1ZjNhYy4uY2M0MzFiYTk4NTZmYmExODhhOTdiYWE4YjA4MzZh
ODU4YWRhMWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5oCkBAIC00NywxMSArNDcsMTEgQEAgcHJpdmF0ZToKICAgICBIVE1MQXR0YWNobWVudEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgdmlydHVhbCB+SFRNTEF0
dGFjaG1lbnRFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2VsZWN0T25Nb3Vz
ZURvd24oKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhbkNv
bnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU2VsZWN0T25Nb3VzZURv
d24oKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5Db250YWluUmFuZ2VF
bmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdWRpb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF1ZGlvRWxlbWVudC5oCmluZGV4IDc1YzY3NTVhYjhiOWVkMGNkOWYzZjRhNTRlZTZm
ZmE0OTIyNjBlMGIuLmY4ZTgwMTFmNjMzZTMyYzgyZTBkNzY2NjZlZWZjNzkwNWQwYjNlYTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF1ZGlvRWxlbWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTEF1ZGlvRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBib29sKTsKIAotICAgIHZpcnR1YWwgUGxhdGZvcm1NZWRpYVNlc3Npb246
Ok1lZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxh
dGZvcm1NZWRpYVNlc3Npb246OkF1ZGlvOyB9CisgICAgUGxhdGZvcm1NZWRpYVNlc3Npb246Ok1l
ZGlhVHlwZSBwcmVzZW50YXRpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZv
cm1NZWRpYVNlc3Npb246OkF1ZGlvOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCUkVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCmluZGV4IDIzZTRmZWZjNjc2OGNkNDMxYmJiZjhm
NTZjOTNiOTljOGQyYTU3MTguLjhlMGMzYmQ2NzAxMGM2OGE2YmE2ODA4OTExMzRlYjQxMzBmMjE2
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJSRWxlbWVudC5oCkBAIC0zMywxNSArMzMsMTUgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEJSRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7
CiAgICAgc3RhdGljIFJlZjxIVE1MQlJFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9p
bnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuQ29udGFp
blJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2
YXRlOgogICAgIEhUTUxCUkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICBib29sIGlz
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGll
cyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxC
YXNlRWxlbWVudC5oCmluZGV4IGEwZTY1NmQ0MzJiYmE1ZDg4NWM5OWEwMjVjMTZmNzI0YTI4ZDgw
ODEuLmEzN2M5NDkwMmQ3NmFlYmUxNjQwMjEwODNmMWY0NGVmZDNiZDAwYjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJhc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQmFzZUVsZW1lbnQuaApAQCAtMzcsMTEgKzM3LDExIEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSFRNTEJhc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25O
b3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlF
bGVtZW50LmgKaW5kZXggYzRjZGZkNTA1MWMxOTRkMDkzYTU4Yjc3YzJlZmFmZjU0MjAzZDJiYy4u
ZWVjODg2ZWJkN2VhY2ZhNGU3ZDRhNDcxZWM0OTc2ZDVkZTU1NDAwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxCb2R5RWxlbWVudC5oCkBAIC00MSwyNiArNDEsMjYgQEAgcHJpdmF0ZToKIAogICAg
IGJvb2wgaXNGaXJzdEJvZHlFbGVtZW50T2ZEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RT
dHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgaW50IHNjcm9s
bExlZnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGVmdChpbnQpIG92
ZXJyaWRlOworICAgIGludCBzY3JvbGxMZWZ0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3Jv
bGxMZWZ0KGludCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsVG9wKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFRvcChpbnQpIG92ZXJyaWRlOwor
ICAgIGludCBzY3JvbGxUb3AoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbFRvcChpbnQp
IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgaW50IHNjcm9sbEhlaWdodCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFdpZHRoKCkgb3ZlcnJpZGU7CisgICAgaW50IHNjcm9s
bEhlaWdodCgpIG92ZXJyaWRlOworICAgIGludCBzY3JvbGxXaWR0aCgpIG92ZXJyaWRlOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hT
ZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBF
dmVudEhhbmRsZXJOYW1lTWFwIGNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxlck5hbWVNYXAoKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKaW5kZXggM2IyNzA4MDYxZmI3
YjQxYTk1ZjM2Mjg1YTdhNGU1OWFmMGM2OTQ3Ni4uMTYwMzQzZjRiOGQ0N2NlM2ZiOGZhMzg1NTYx
ZDIzYmNmNGIyZTY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9u
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaApA
QCAtMzYsNDEgKzM2LDQxIEBAIHB1YmxpYzoKICAgICAKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZl
bnRzKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSFRNTEJ1dHRvbkVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAog
ICAgIGVudW0gVHlwZSB7IFNVQk1JVCwgUkVTRVQsIEJVVFRPTiB9OwogCi0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAK
ICAgICAvLyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGFsd2F5cyBjcmVhdGVzIG9uZSwgYnV0IGJ1
dHRvbnMgZG9uJ3QgbmVlZCBpdC4KLSAgICB2aXJ0dWFsIGJvb2wgYWx3YXlzQ3JlYXRlVXNlckFn
ZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93
Um9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5IYXZl
VXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwZW5kRm9ybURh
dGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
bnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2YXRlZFN1Ym1pdChib29sIGZsYWcpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2V0QWN0aXZhdGVkU3VibWl0KGJvb2wgZmxhZykgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzT3B0aW9u
YWxGb3JtQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVHlw
ZSBtX3R5cGU7CiAgICAgYm9vbCBtX2lzQWN0aXZhdGVkU3VibWl0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQ2FudmFzRWxlbWVudC5oCmluZGV4IGE3NzQ5MDAxYTc3YjA5NDlmYjgyZGY5MGYxODY2
NTY4MjVkZDhhZjguLjdlODExMzU0ZTkwY2ZhZTBmM2YyOGNjZGJlMGZhMDIyZWU2Nzg2NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmgKQEAgLTE0OSwxMSArMTQ5LDEx
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTENhbnZhc0VsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2lu
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHJlc2V0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaApp
bmRleCA4Njc0YzZhYTFiMGY0MGYwMDU3ZTQ2NTUwNDQ0YjYzMGEzMjUyYmFhLi5kY2Q0MGViYjg2
MDVmMjgyZmI5YzE1ODJhMDA0MWM2YmVkMzQzZTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5oCkBAIC02NiwxNCArNjYsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhUTUxD
b2xsZWN0aW9uKCk7CiAKICAgICAvLyBET00gQVBJCi0gICAgdmlydHVhbCBFbGVtZW50KiBpdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdCBvdmVycmlkZSA9IDA7IC8vIFRpZ2h0ZW4gcmV0dXJuIHR5
cGUgZnJvbSBOb2RlTGlzdDo6aXRlbSgpLgorICAgIEVsZW1lbnQqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0IG92ZXJyaWRlID0gMDsgLy8gVGlnaHRlbiByZXR1cm4gdHlwZSBmcm9tIE5vZGVM
aXN0OjppdGVtKCkuCiAgICAgdmlydHVhbCBFbGVtZW50KiBuYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKSBjb25zdCA9IDA7CiAgICAgY29uc3QgVmVjdG9yPEF0b21pY1N0cmluZz4m
IHN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKTsKICAgICBSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBOb24tRE9NIEFQSQogICAgIFZlY3RvcjxSZWY8RWxlbWVu
dD4+IG5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc2l6ZV90IG1lbW9y
eUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNSb290ZWRBdERvY3VtZW50KCkg
Y29uc3Q7CiAgICAgTm9kZUxpc3RJbnZhbGlkYXRpb25UeXBlIGludmFsaWRhdGlvblR5cGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCmluZGV4IDkyMzRm
ZTBkZmE4M2JkNmZlYTMyNWQ2YWViYTBmOGE1NTE5MWFlMDYuLjU2Mjg1NGE1MmIzMGY4ZTU4MDEw
YTYxNTAxNTZhYTU1YzRjMmI4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TERldGFpbHNFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0Vs
ZW1lbnQuaApAQCAtMzgsMTEgKzM4LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTERl
dGFpbHNFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9v
dChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93
Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wg
bV9pc09wZW4geyBmYWxzZSB9OwogICAgIEhUTUxTbG90RWxlbWVudCogbV9zdW1tYXJ5U2xvdCB7
IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERpdkVsZW1lbnQuaAppbmRleCBiY2MwZTk4
MjExNjY4YzI4NzU0ZmE3NTBiMzg1MWI0MzBhN2VmNTI5Li5kOTZmODcwNGJhMTJlZWYyMjUwNzNh
YmE3MDZiZDA4M2IwMjZjODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxE
aXZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGl2RWxlbWVudC5oCkBA
IC0zNiw4ICszNiw4IEBAIHByb3RlY3RlZDoKICAgICBIVE1MRGl2RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERvY3VtZW50LmgKaW5kZXggZDdk
YWVmZjE0NzQxYzJjMWNmMzRiMjhiMDU4YWNmODY1OGI3MWM4NC4uMjZkYjc0ZmIxZTY5NjVkMmI0
YmI0MmUxYThkNWYwZTFhN2UyYTM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBA
IC04Niw5ICs4Niw5IEBAIHByb3RlY3RlZDoKICAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25z
dCBVUkwmLCBEb2N1bWVudENsYXNzRmxhZ3MgPSAwLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFn
cyA9IDApOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lU2V0KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0ZVBhcnNlcigp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91
dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBpc0ZyYW1lU2V0KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPERvY3VtZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBv
dmVycmlkZTsKKyAgICBSZWY8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4o
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2RvY3Vt
ZW50TmFtZWRJdGVtOwogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX3dpbmRvd05hbWVkSXRlbTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAyNjI0YTQyZThiYjdlYzljMzAyMDBmN2Ez
ZWRjNDFmMTBlYTdmZDc5Li4zY2MxMmM2MTVlNjVkYjcxMDg4Yjg0NzE5MDc0Y2NiYjkzNTczZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC00Miw5ICs0Miw5IEBAIGNsYXNzIEhU
TUxFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBTdHJpbmcgdGl0bGUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdGl0bGUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBzaG9ydCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBzZXRJbm5lclRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
c2V0T3V0ZXJUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTU0LDcgKzU0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW5zZXJ0QWRqYWNlbnRUZXh0KGNvbnN0IFN0cmluZyYg
d2hlcmUsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdmlydHVh
bCBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIGNvbnRlbnRFZGl0YWJsZSgpIGNvbnN0OwogICAg
IHZvaWQgc2V0Q29udGVudEVkaXRhYmxlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
QEAgLTcyLDEyICs3MiwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsaWNrKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGllRm9yYmlkc0luc2VydEhUTUwoKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAg
ICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbEZvcm0oKTsg
fQogCkBAIC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29u
dHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VXaGVlbEV2ZW50cygp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIG92ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92
ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlV2hlZWxFdmVudHMoKSBvdmVycmlk
ZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNMYWJlbGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZpcnR1YWwgRm9ybU5hbWVkSXRlbSogYXNGb3JtTmFtZWRJdGVtKCkgeyByZXR1cm4gMDsg
fQpAQCAtMTExLDEzICsxMTEsMTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYXBwbHlBbGlnbm1l
bnRBdHRyaWJ1dGVUb1N0eWxlKGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmKTsKICAgICB2b2lkIGFwcGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShjb25zdCBBdG9t
aWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
bWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlk
ZTsKKyAgICBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0
eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAgICAgdW5z
aWduZWQgcGFyc2VCb3JkZXJXaWR0aEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsK
IAogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQXRvbWljU3RyaW5nPiBF
dmVudEhhbmRsZXJOYW1lTWFwOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHByb3RlY3RlZDoKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgRXZlbnRIYW5kbGVy
TmFtZU1hcCYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICB2b2lkIG1hcExhbmd1YWdlQXR0cmlidXRlVG9Mb2NhbGUoY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5oCmluZGV4IDQ2MDdlM2ViMThmYTc3YWRhNGNhYTkxMTc4ZWE1YWU1
ZDUzZjQxODUuLjc4ZDE2M2ExYjQ0NGM1NGM5NGVhY2Y3ZTIzMTcwMDI5MzIxMzhiZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5oCkBAIC0zNCwyMCArMzQsMjAgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBIVE1MRW1iZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVj
dFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJMKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGltYWdlU291cmNlVVJM
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlcldpZGdldCogcmVuZGVyV2lk
Z2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlbmRlcldpZGdldCogcmVu
ZGVyV2lkZ2V0TG9hZGluZ1BsdWdpbigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYXJhbWV0ZXJzRm9y
UGx1Z2luKFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1W
YWx1ZXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZpZWxkU2V0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKaW5k
ZXggZGIxNmZhNzQyOTQ2YWI1MWFhMjY2YTAxNzhlMzk4ODgwZTM0ZmI4Mi4uOWNkM2Q4YmFiNDE1
ZjI5MzQzOTA5NTJjODQxZTU5NWUwMWMxMjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RmllbGRTZXRFbGVtZW50LmgKQEAgLTUxLDE4ICs1MSwxOCBAQCBwcml2YXRlOgogICAgIEhUTUxG
aWVsZFNldEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgSFRNTEZvcm1F
bGVtZW50Kik7CiAgICAgfkhUTUxGaWVsZFNldEVsZW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGVkQXR0cmlidXRlQ2hhbmdl
ZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVz
VmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBtYXRj
aGVzSW52YWxpZFBzZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VudW1l
cmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlzYWJsZWRBdHRyaWJ1
dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlZFN0YXRlQ2hhbmdlZCgpIG92
ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1l
bnQpIG92ZXJyaWRlOworCisgICAgYm9vbCBtYXRjaGVzVmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgbWF0Y2hlc0ludmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgdm9pZCByZWZyZXNoRWxlbWVudHNJZk5lZWRlZCgpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9udEVsZW1lbnQuaAppbmRleCAwMGRmODAyMzQyYzYwNTM4OTUx
N2M3N2Y3NGU3MGM2ZDRjNmNlMTYyLi5kYjQwM2Q1NzAxYTVhMmY2MjcxZmQ2OTE3OWFlNzU0YTA2
NDY1YmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb250RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvbnRFbGVtZW50LmgKQEAgLTM3LDggKzM3
LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MRm9udEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
TXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggZDQ4
M2IxMWFjODIyNjAwZWEwYzAwMmMxZDI4MTQ0M2EzODRmYzEwMS4uNDkyN2UzODMwMjc4NmRhNDE5
MWU4YzNiMmI0ZDM0NmQyNGFmNGJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKQEAgLTcwLDExICs3MCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aXNwYXRjaENoYW5nZUV2ZW50KCk7CiAgICAgdm9pZCBkaXNwYXRjaEZvcm1Db250cm9sSW5wdXRF
dmVudCgpOwogCi0gICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHRCdXR0b25Gb3JGb3JtKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzRGVmYXVsdEJ1dHRvbkZvckZvcm0oKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNF
bnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9v
bCBpc1JlcXVpcmVkKCkgY29uc3Q7CiAKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogCiAgICAg
Ly8gT3ZlcnJpZGUgaW4gZGVyaXZlZCBjbGFzc2VzIHRvIGdldCB0aGUgZW5jb2RlZCBuYW1lPXZh
bHVlIHBhaXIgZm9yIHN1Ym1pdHRpbmcuCiAgICAgLy8gUmV0dXJuIHRydWUgZm9yIGEgc3VjY2Vz
c2Z1bCBjb250cm9sIChzZWUgSFRNTDQtMTcuMTMuMikuCi0gICAgdmlydHVhbCBib29sIGFwcGVu
ZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1
dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZh
dGVkU3VibWl0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEwMSwxMyArMTAxLDEzIEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9jYXBpdGFsaXplKGNvbnN0IEF0b21pY1N0cmluZyYp
OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWw7CisgICAgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
ICAgICB2b2lkIHVwZGF0ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogICAgIHZvaWQgaGlk
ZVZpc2libGVWYWxpZGF0aW9uTWVzc2FnZSgpOwogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShWZWN0
b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJv
bHMgPSAwKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNv
bnN0cmFpbnQgb3IgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgdXBkYXRlVmFs
aWRpdHkoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZWFk
T25seTsgfQogICAgIGJvb2wgaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSBjb25zdCB7IHJldHVybiBp
c0Rpc2FibGVkRm9ybUNvbnRyb2woKSB8fCBtX2lzUmVhZE9ubHk7IH0KQEAgLTEyOCwyNCArMTI4
LDI0IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgZGlzYWJsZWRCeUFuY2VzdG9yRmllbGRzZXQo
KSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkQnlBbmNlc3RvckZpZWxkc2V0OyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZWRTdGF0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhZE9ubHlBdHRyaWJ1dGVDaGFu
Z2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVpcmVkQXR0cmlidXRlQ2hhbmdlZCgpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOworICAg
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1l
bnQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2
ZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjYWxjU3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNl
ZEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVs
ZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpIG92ZXJyaWRlOwogCiAgICAgLy8gVGhpcyBtdXN0
IGJlIGNhbGxlZCBhbnkgdGltZSB0aGUgcmVzdWx0IG9mIHdpbGxWYWxpZGF0ZSgpIGhhcyBjaGFu
Z2VkLgogICAgIHZvaWQgc2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygpOwpAQCAtMTUzLDI5ICsx
NTMsMjkgQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCB2YWxpZGF0aW9uTWVzc2FnZVNoYWRvd1Ry
ZWVDb250YWlucyhjb25zdCBOb2RlJikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENo
YW5nZUZvcm0oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRm9ybSgpIG92
ZXJyaWRlOworICAgIHZvaWQgd2lsbENoYW5nZUZvcm0oKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZENoYW5nZUZvcm0oKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcmVm
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwg
dm9pZCBkZXJlZkZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQor
ICAgIHZvaWQgcmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQor
ICAgIHZvaWQgZGVyZWZGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzVmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBtYXRjaGVzSW52YWxpZFBzZXVkb0NsYXNzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBtYXRjaGVzVmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgbWF0Y2hlc0ludmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBhbHdheXNDcmVh
dGVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgaXNGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBzaG9ydCB0YWJJ
bmRleCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHNob3J0IHRhYkluZGV4KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVhbEZv
cm0oKSBjb25zdCBvdmVycmlkZTsKKyAgICBIVE1MRm9ybUVsZW1lbnQqIHZpcnR1YWxGb3JtKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkgY29u
c3Q7CiAKICAgICBib29sIGNvbXB1dGVJc0Rpc2FibGVkQnlGaWVsZHNldEFuY2VzdG9yKCkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIEhUTUxFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gKnRoaXM7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiAq
dGhpczsgfQotICAgIHZpcnR1YWwgSFRNTEZvcm1Db250cm9sRWxlbWVudCogYXNGb3JtTmFtZWRJ
dGVtKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdGhpczsgfQorICAgIEhUTUxFbGVtZW50JiBh
c0hUTUxFbGVtZW50KCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBjb25z
dCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50KiBhc0Zv
cm1OYW1lZEl0ZW0oKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8VmFsaWRhdGlvbk1lc3NhZ2U+IG1fdmFsaWRhdGlvbk1lc3NhZ2U7CiAgICAg
Ym9vbCBtX2Rpc2FibGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmgKaW5kZXggMzIzY2FkZGNiMDMwMmRhMmI3YTRi
NTNlZDg5ZjI3MmUwNjcyODc0NS4uMjY0NGJhZTYxMzFhNmEyMWU2NmUzZmNkMGQ2MzcyODFlNDA2
OTM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50V2l0aFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50V2l0aFN0YXRlLmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgSFRNTEZvcm1Db250cm9s
RWxlbWVudFdpdGhTdGF0ZSA6IHB1YmxpYyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFNh
dmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgRm9ybUNv
bnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0OwpAQCAtNDUsMTAgKzQ1LDEw
IEBAIHByb3RlY3RlZDoKICAgICBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiwgSFRNTEZvcm1FbGVtZW50Kik7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVycmlk
ZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZSgpIGNvbnN0
IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24uaAppbmRleCA5M2Q0NzdmOTBlYjdmMTQyMTVl
OTE2NmM5ZWNmODI0ZGE0ZWRhYjI0Li43NTk5YTE0ZDM4YzRhY2RjNjljYjllZmE0MDkzOTVjZWFj
YWRmYjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbHND
b2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbi5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxG
b3JtQ29udHJvbHNDb2xsZWN0aW9uPiBjcmVhdGUoQ29udGFpbmVyTm9kZSYsIENvbGxlY3Rpb25U
eXBlKTsKICAgICB2aXJ0dWFsIH5IVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbigpOwogCi0gICAg
dmlydHVhbCBIVE1MRWxlbWVudCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRl
OworICAgIEhUTUxFbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBGb3IgQ2FjaGVkSFRNTENvbGxlY3Rpb24uCiAgICAgSFRNTEVsZW1lbnQqIGN1
c3RvbUVsZW1lbnRBZnRlcihFbGVtZW50KikgY29uc3Q7CkBAIC00Nyw4ICs0Nyw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24oQ29u
dGFpbmVyTm9kZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDYWNoZShEb2N1bWVu
dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUNhY2hlKERvY3VtZW50Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVOYW1lZEVsZW1lbnRDYWNoZSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgY29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJv
bEVsZW1lbnRzKCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYg
Zm9ybUltYWdlRWxlbWVudHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5oCmluZGV4IGY4NjViYmE5ZDljNzNhOWEyM2NkMTU5MzQyN2FiZjFiMGJiNGRjNTIuLjQ4MDEw
ZDA2MWNmOWU2YzVlNWU4NTNhMjRjODBlMjdmYWUxOTBlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuaApAQCAtMTExLDcgKzExMSw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcg
bWV0aG9kKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZXRob2QoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICB2aXJ0dWFsIFN0cmluZyB0YXJnZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGFy
Z2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHdhc1VzZXJTdWJtaXR0ZWQoKSBjb25z
dDsKIApAQCAtMTQzLDIxICsxNDMsMjEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MRm9y
bUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFp
bmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJl
bigpIG92ZXJyaWRlOworICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIG92ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJ
bnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBoYW5kbGVMb2NhbEV2ZW50cyhFdmVudCYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERv
Y3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50
KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJp
YnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3VibWl0KEV2ZW50KiwgYm9vbCBhY3RpdmF0ZVN1Ym1p
dEJ1dHRvbiwgYm9vbCBwcm9jZXNzaW5nVXNlckdlc3R1cmUsIEZvcm1TdWJtaXNzaW9uVHJpZ2dl
cik7CiAKQEAgLTE3Nyw4ICsxNzcsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXNzZXJ0SXRlbUNh
bkJlSW5QYXN0TmFtZXNNYXAoRm9ybU5hbWVkSXRlbSopIGNvbnN0OwogICAgIHZvaWQgcmVtb3Zl
RnJvbVBhc3ROYW1lc01hcChGb3JtTmFtZWRJdGVtKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWF0
Y2hlc1ZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
bWF0Y2hlc0ludmFsaWRQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgbWF0
Y2hlc1ZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG1hdGNoZXNJ
bnZhbGlkUHNldWRvQ2xhc3MoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8QXRvbWljU3RyaW5nSW1wbD4sIEZvcm1OYW1lZEl0ZW0qPiBQYXN0TmFtZXNNYXA7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKaW5kZXggODc2ODhjMDdlMTM0
NDI2NzhlMWM5OWY3YTg2MzVjNWY3YTUxYzg2Ny4uYTZhNTI0MjFhNjJhMTZiNmZhYWNkZDRjNjk5
MDM2YzUxZTIyNzg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50LmgKQEAg
LTM5LDEyICszOSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxGcmFtZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
QXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJl
bmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICBib29sIG1fZnJhbWVCb3JkZXI7CiAgICAgYm9vbCBt
X2ZyYW1lQm9yZGVyU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJh
bWVFbGVtZW50QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5oCmluZGV4IDAxM2NiYTBiOTUzMzg0MWNkMDcxNjE1NGE1NjA1NmY2MTMyMTk2OGYuLjVlMDli
ZDE5MjUzN2UzNDA1Zjc0ZjQ5NmI1YTdhNjQ0OTE3MmYzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAg
IFVSTCBsb2NhdGlvbigpIGNvbnN0OwogICAgIHZvaWQgc2V0TG9jYXRpb24oY29uc3QgU3RyaW5n
Jik7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhck1vZGUgc2Nyb2xsaW5nTW9kZSgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fc2Nyb2xsaW5nOyB9CisgICAgU2Nyb2xsYmFyTW9kZSBz
Y3JvbGxpbmdNb2RlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9zY3JvbGxpbmc7
IH0KICAgICAKICAgICBpbnQgbWFyZ2luV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX21hcmdpbldp
ZHRoOyB9CiAgICAgaW50IG1hcmdpbkhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFyZ2luSGVp
Z2h0OyB9CkBAIC00MywyNiArNDMsMjYgQEAgcHVibGljOgogICAgIGludCB3aWR0aCgpOwogICAg
IGludCBoZWlnaHQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2lu
dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5D
b250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNl
OyB9CiAKIHByb3RlY3RlZDoKICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaXNVUkxBbGxvd2VkKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZp
Y2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNl
cnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZmluaXNo
ZWRJbnNlcnRpbmdTdWJ0cmVlKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRBdHRhY2hS
ZW5kZXJlcnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1
cyhib29sKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlIGZpbmFsOwog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MQ29udGVudEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGlz
VVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IGJvb2wgaXNIVE1MQ29udGVudEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lRWxlbWVudEJhc2UoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0ZyYW1lRWxlbWVu
dEJhc2UoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lk
IHNldE5hbWVBbmRPcGVuVVJMKCk7CiAgICAgdm9pZCBvcGVuVVJMKExvY2tIaXN0b3J5ID0gTG9j
a0hpc3Rvcnk6OlllcywgTG9ja0JhY2tGb3J3YXJkTGlzdCA9IExvY2tCYWNrRm9yd2FyZExpc3Q6
Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAppbmRl
eCA5NjY3MWYzN2MwMjFlMzIyOTQ1MjNmNjVmMjY5OTZhNDliNjk5MjViLi44YTBiZWJiZWM1MWNj
YjVlNjc0MmI0ZjFmM2U4MGUwZGY3OTA3MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTYzLDggKzYzLDggQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0U2FuZGJveEZsYWdzKFNhbmRib3hGbGFncyk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1lT3duZXJFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXli
b2FyZEV2ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0ZyYW1lT3duZXJFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgRnJhbWUqIG1f
Y29udGVudEZyYW1lOwogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hGbGFnczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKaW5kZXggNmNkODVkYzQ3YTU4YjFlNzU1
OGFjMDZjZTAxYWE4NGQ2OTZlMTAyNS4uMDZkZmE3ZDllNjU5MDA1ZjRjMGRkZDdjZWZmNDYzODNi
M2U4YmRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKQEAg
LTUwLDIwICs1MCwyMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxl
Y3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3aWxsQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0
eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICBJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGVuZ3RoW10+IG1fcm93TGVuZ3RoczsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGVuZ3RoW10+IG1fY29sTGVuZ3RoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEhSRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVt
ZW50LmgKaW5kZXggZjE1OTQ2NWMyNjU1MGJiODUzOTNhM2Q1YzkwNzk1OWNhZDhiYWEyZC4uZmNm
ZTk4NzE5ZTFlN2I5NDAzYmQ1MGUwMzBmMzU5YTk5YjBjNDc2NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSFJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSFJFbGVtZW50LmgKQEAgLTM1LDkgKzM1LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MSFJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhbkNv
bnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVy
cmlkZTsKKyAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxIdG1sRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVs
ZW1lbnQuaAppbmRleCA0NGQ2ZDYwZGI1OWE4M2UwMjUzMTkzZTI0NzgwZTBhYzQyYTE5OGJlLi4y
Y2MyMTlmMzdlN2IyNDg2MTliZTIxYzg5YTAzZmQzMDM2ZWFlZTE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEh0bWxFbGVtZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBIVE1MSHRtbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmgKaW5kZXggOWQwN2JkOTE5OGFhOWYyOWUzYTZhNjBjN2RlY2VkMGE5ODQ4
NDFjYS4uZTQyMWE5NjY4NzYzZTc2MjIwNzQxN2E4MTdlZGI4OTgzZTY4MzY0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaApAQCAtNDAsMTUgKzQwLDE1IEBAIHByaXZh
dGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1
c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBdHRyaWJ1dGVET01Ub2tlbkxpc3Q+IG1fc2FuZGJveDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCmluZGV4IGQ1NTcyOGQ3NGJlNTk2NDBhODE2NTIzNTlj
MjQwZTIzYTRjYjcxM2UuLjM4MjI4OTQ5ODdmNDU3ZDBlNjA1YjNmNTRmZjczYzYwZTAzZTU2ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCkBAIC04MCwxNCArODAsMTQg
QEAgcHVibGljOgogICAgIGJvb2wgY29tcGxldGUoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVy
cmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4g
bV9pbWFnZUxvYWRlci5oYXNQZW5kaW5nQWN0aXZpdHkoKTsgfQogCi0gICAgdmlydHVhbCBib29s
IGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNv
dXJjZVVSTCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VT
b3VyY2VVUkwoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzU2hhZG93Q29udHJvbHMo
KSBjb25zdCB7IHJldHVybiBtX2V4cGVyaW1lbnRhbEltYWdlTWVudUVuYWJsZWQ7IH0KICAgICAK
QEAgLTk3LDM0ICs5NywzNCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTEltYWdlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqID0g
MCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9s
ZERvY3VtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3Vt
ZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQXR0
YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNy
ZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFn
ZUNhbmRpZGF0ZShjb25zdCBJbWFnZUNhbmRpZGF0ZSYpOwogCi0gICAgdmlydHVhbCBib29sIGNh
blN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TdGFydFNlbGVj
dGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRl
KGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhdHRy
aWJ1dGVDb250YWluc1VSTChjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFz
ZSwgY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGF0dHJpYnV0
ZUNvbnRhaW5zVVJMKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBjb21wbGV0ZVVSTHNJbkF0dHJpYnV0ZVZhbHVlKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQXR0
cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZHJhZ2dhYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBkcmFnZ2FibGUoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3Zl
cnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzRm9ybUFzc29jaWF0ZWRFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIEZv
cm1OYW1lZEl0ZW0qIGFzRm9ybU5hbWVkSXRlbSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRo
aXM7IH0KLSAgICB2aXJ0dWFsIEhUTUxJbWFnZUVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQotICAgIHZpcnR1YWwgY29uc3QgSFRNTEltYWdl
RWxlbWVudCYgYXNIVE1MRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuICp0
aGlzOyB9CisgICAgYm9vbCBpc0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgRm9ybU5hbWVkSXRlbSogYXNGb3JtTmFtZWRJ
dGVtKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdGhpczsgfQorICAgIEhUTUxJbWFnZUVsZW1l
bnQmIGFzSFRNTEVsZW1lbnQoKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiAqdGhpczsgfQorICAg
IGNvbnN0IEhUTUxJbWFnZUVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiAqdGhpczsgfQogCiAgICAgdm9pZCBzZWxlY3RJbWFnZVNvdXJjZSgpOwog
CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZUltYWdlQ29udHJv
bHMoKTsKICAgICB2b2lkIGRlc3Ryb3lJbWFnZUNvbnRyb2xzKCk7CiAgICAgYm9vbCBoYXNJbWFn
ZUNvbnRyb2xzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAg
IGZyaWVuZCBjbGFzcyBIVE1MUGljdHVyZUVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VMb2FkZXIuaAppbmRleCBlOWJmMWMyZTNlZmViZWU5NmY4MmMyYWM3ZGRmMjMwMjkxMzQ4ZGU1
Li45MDBjMzRiM2Y3YzYyMmFhYTRhYmQzNTc1NDAyNjAxNmViZWNhNzdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlTG9hZGVyLmgKQEAgLTMyLDEwICszMiwxMCBAQCBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgSFRNTEltYWdlTG9hZGVyKEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MSW1h
Z2VMb2FkZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7Cisg
ICAgU3RyaW5nIHNvdXJjZVVSSShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJy
aWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDMy
ZjMxZjMyY2E1NmVlYzMyMDQ2MzI2M2Y4MTA0ZWQyM2JhMGIwMTguLmRjZGJlZDM0ZjRkZjU3NzUw
YmM2NTFkNjZjMDJkNmYwYTFkNGU1NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBMaXN0QXR0cmlidXRlVGFyZ2V0T2Jz
ZXJ2ZXIgOiBJZFRhcmdldE9ic2VydmVyIHsKIHB1YmxpYzoKICAgICBMaXN0QXR0cmlidXRlVGFy
Z2V0T2JzZXJ2ZXIoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgSFRNTElucHV0RWxlbWVudCopOwog
Ci0gICAgdmlydHVhbCB2b2lkIGlkVGFyZ2V0Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQg
aWRUYXJnZXRDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSFRNTElucHV0RWxl
bWVudCogbV9lbGVtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRl
eCA5MDI3ZDcxZTgxM2E0NzhlMjhjZTIwNTE2Nzk0ZDQ0MDZkMDE0ZjdkLi42MzQwNDZlZDQwZTE1
N2U4N2UxZDhkYzVjYmY1ZmIwMDQyNDAyNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuaApAQCAtNjYsMTggKzY2LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhU
TUxJbnB1dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBI
VE1MRm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAgICAgdmlydHVhbCB+SFRN
TElucHV0RWxlbWVudCgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHNob3Vs
ZEF1dG9jb21wbGV0ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICAv
LyBGb3IgVmFsaWRpdHlTdGF0ZQotICAgIHZpcnR1YWwgYm9vbCBoYXNCYWRJbnB1dCgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZsb3coKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKKyAgICBib29sIGhhc0JhZElucHV0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29s
IHJhbmdlVW5kZXJmbG93KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCByYW5nZU92
ZXJmbG93KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBzdGVwTWlzbWF0Y2goKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHRvb0xvbmcoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKKyAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICAvLyBSZXR1cm5z
IHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0eXBlPWRhdGUsIG51bWJlciwgb3IgcmFuZ2UuICBEb24n
dCBjYWxsIHRoaXMgZm9yIG90aGVyIHR5cGVzLgogICAgIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7
CkBAIC0xNDEsOCArMTQxLDggQEAgcHVibGljOgogCiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5l
ckVsZW1lbnQoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFRleHRDb250cm9sSW5uZXJUZXh0
RWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCog
aW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFJlZjxSZW5kZXJT
dHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIEhUTUxFbGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0OwogICAg
IEhUTUxFbGVtZW50KiBpbm5lclNwaW5CdXR0b25FbGVtZW50KCkgY29uc3Q7CkBAIC0xNTEsNyAr
MTUxLDcgQEAgcHVibGljOgogICAgIEhUTUxFbGVtZW50KiBjYW5jZWxCdXR0b25FbGVtZW50KCkg
Y29uc3Q7CiAgICAgSFRNTEVsZW1lbnQqIHNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0OwogICAg
IEhUTUxFbGVtZW50KiBzbGlkZXJUcmFja0VsZW1lbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEhU
TUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAg
ICBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CiAgICAgV0VCQ09SRV9FWFBPUlQgSFRNTEVsZW1lbnQqIGF1dG9GaWxsQnV0dG9uRWxlbWVudCgp
IGNvbnN0OwogCiAgICAgYm9vbCBjaGVja2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NoZWNrZWQ7
IH0KQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbmRldGVybWluYXRl
KGJvb2wpOwogICAgIC8vIHNob3VsZEFwcGVhckNoZWNrZWQgaXMgdXNlZCBieSB0aGUgcmVuZGVy
aW5nIHRyZWUvQ1NTIHdoaWxlIGNoZWNrZWQoKSBpcyB1c2VkIGJ5IEpTIHRvIGRldGVybWluZSBj
aGVja2VkIHN0YXRlCiAgICAgYm9vbCBzaG91bGRBcHBlYXJDaGVja2VkKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKKyAgICBib29sIHNob3VsZEFwcGVhckluZGV0ZXJtaW5hdGUoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKIAogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdDsKICAgICBib29sIHNpemVTaG91
bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0OwpAQCAtMTcwLDcg
KzE3MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VHlwZShjb25zdCBBdG9taWNTdHJpbmcm
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJiwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciA9IERpc3BhdGNoTm9FdmVudCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBUZXh0RmllbGRFdmVudEJl
aGF2aW9yID0gRGlzcGF0Y2hOb0V2ZW50KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZh
bHVlRm9yVXNlcihjb25zdCBTdHJpbmcmKTsKQEAgLTIwMCwxNyArMjAwLDE3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgY2FuSGF2ZVNlbGVjdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7
CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUg
ZmluYWw7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
IGZpbmFsOworICAgIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBk
aWREZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIC8vIEZJWE1FOiBGb3Ig
aXNBY3RpdmF0ZWRTdWJtaXQgYW5kIHNldEFjdGl2YXRlZFN1Ym1pdCwgd2Ugc2hvdWxkIHVzZSB0
aGUgTlZJLWlkaW9tIGhlcmUgYnkgbWFraW5nCiAgICAgLy8gaXQgcHJpdmF0ZSB2aXJ0dWFsIGlu
IGFsbCBjbGFzc2VzIGFuZCBleHBvc2UgYSBwdWJsaWMgbWV0aG9kIGluIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQgdG8gY2FsbAogICAgIC8vIHRoZSBwcml2YXRlIHZpcnR1YWwgbWV0aG9kLgotICAg
IHZpcnR1YWwgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCBmbGFnKSBvdmVycmlkZSBm
aW5hbDsKKyAgICBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCBmbGFnKSBvdmVycmlkZSBmaW5hbDsK
IAogICAgIFN0cmluZyBhbHRUZXh0KCkgY29uc3Q7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRTZWFyY2hSZXN1bHQoKTsKICAgICB2b2lkIG9uU2VhcmNoKCk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlk
ZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAK
ICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBIVE1MRWxlbWVudCogbGlzdCgpIGNv
bnN0OwpAQCAtMjk5LDE4ICsyOTksMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGVpZ2h0KHVu
c2lnbmVkKTsKICAgICB2b2lkIHNldFdpZHRoKHVuc2lnbmVkKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBibHVyKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBibHVyKCkgb3ZlcnJpZGUgZmluYWw7
CiAgICAgdm9pZCBkZWZhdWx0Qmx1cigpOwogCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAogICAgIHZvaWQgZW5kRWRpdGluZygpOwog
CiAgICAgc3RhdGljIFZlY3RvcjxGaWxlQ2hvb3NlckZpbGVJbmZvPiBmaWxlc0Zyb21GaWxlSW5w
dXRGb3JtQ29udHJvbFN0YXRlKGNvbnN0IEZvcm1Db250cm9sU3RhdGUmKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBtYXRjaGVzUmVhZFdyaXRlUHNldWRvQ2xhc3MoKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1l
bnQsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uTW9kZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBzZXRSYW5nZVRleHQoY29uc3QgU3RyaW5nJiBy
ZXBsYWNlbWVudCwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc2V0
UmFuZ2VUZXh0KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQsIGNvbnN0IFN0cmluZyYgc2VsZWN0aW9uTW9kZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgSFRNTEltYWdlTG9hZGVyKiBpbWFnZUxvYWRlcigpIHsgcmV0
dXJuIG1faW1hZ2VMb2FkZXIuZ2V0KCk7IH0KICAgICBIVE1MSW1hZ2VMb2FkZXImIGVuc3VyZUlt
YWdlTG9hZGVyKCk7CkBAIC0zMjQsNjcgKzMyNCw2NyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgSFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1M
Rm9ybUVsZW1lbnQqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGVudW0gQXV0b0Nv
bXBsZXRlU2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRT
aGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGNhbkhhdmVV
c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VGb3JtKCkgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUZvcm0oKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHdpbGxDaGFuZ2VGb3JtKCkgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdm9pZCBkaWRDaGFuZ2VGb3JtKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgSW5z
ZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQgZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9j
dW1lbnQqIG9sZERvY3VtZW50KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0Rv
Y3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShT
ZWxlY3Rpb25SZXN0b3JhdGlvbk1vZGUsIFNlbGVjdGlvblJldmVhbE1vZGUpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIG92ZXJyaWRlIGZp
bmFsOworICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OworICAgIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CisgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwor
ICAgIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQg
dXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSwgU2VsZWN0aW9u
UmV2ZWFsTW9kZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhv
ZCgpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzVGV4dEZvcm1Db250cm9s
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gaXNUZXh0RmllbGQoKTsgfQorICAgIGJv
b2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBpc1Rl
eHRGaWVsZCgpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuVHJpZ2dlckltcGxpY2l0U3VibWlz
c2lvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGlzVGV4dEZpZWxkKCk7IH0KKyAg
ICBib29sIGNhblRyaWdnZXJJbXBsaWNpdFN1Ym1pc3Npb24oKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBpc1RleHRGaWVsZCgpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZv
cm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRl
IGZpbmFsOworICAgIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRy
b2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgcmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAg
dmlydHVhbCBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCi0gICAg
dmlydHVhbCB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMp
IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZSBmaW5hbDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVG
b3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCB2b2lkIHBhcnNlckRpZFNldEF0dHJpYnV0ZXMoKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25zdCBF
bGVtZW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVy
dGllc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQmKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZp
cnR1YWwgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBvdmVycmlkZSBm
aW5hbDsKKyAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJy
aWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgaXNTdWNjZXNzZnVsU3VibWl0QnV0dG9u
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGlzSW5SYW5nZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgYm9vbCBpc091dE9mUmFuZ2UoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOworICAgIGJvb2wgaXNJblJhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
Ym9vbCBpc091dE9mUmFuZ2UoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwg
dm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEb2N1
bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHByZXBhcmVGb3JEb2N1
bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZSBmaW5hbDsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgYm9vbCBuZWVkc1N1
c3BlbnNpb25DYWxsYmFjaygpOwogICAgIHZvaWQgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJh
Y2tJZk5lZWRlZCgpOwpAQCAtMzk0LDIyICszOTQsMjIgQEAgcHJpdmF0ZToKICAgICBib29sIGlz
VGV4dFR5cGUoKSBjb25zdDsKICAgICBib29sIHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNU
b0NoZWNrRGlydHlGbGFnKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1BsYWNl
aG9sZGVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBs
YWNlaG9sZGVyVGV4dCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5
VmFsdWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRm9j
dXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIHVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wg
aXNFbXB0eVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBoYW5kbGVGb2N1
c0V2ZW50KE5vZGUqIG9sZEZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbikgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZp
cnR1YWwgYm9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNS
ZXF1aXJlZEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBi
b29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAg
Ym9vbCBpc09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biAhaXNSZXF1aXJlZEZvcm1Db250cm9sKCk7IH0KKyAgICBib29sIGlzUmVxdWlyZWRGb3JtQ29u
dHJvbCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgY29tcHV0ZVdpbGxWYWxpZGF0
ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFu
Z2VkKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2b2lkIGluaXRpYWxpemVJbnB1dFR5cGUoKTsK
ICAgICB2b2lkIHVwZGF0ZVR5cGUoKTsKICAgICB2b2lkIHJ1blBvc3RUeXBlVXBkYXRlVGFza3Mo
KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7CiAKICNp
ZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICB2b2lkIHJlc2V0TGlzdEF0dHJpYnV0ZVRh
cmdldE9ic2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXln
ZW5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3Bw
CmluZGV4IGI2MTdiMDMzNmNiYzVhMzhlZTFmNTgwM2QzYWQ4MWJhYzY5NDExMzQuLjQ4MjhkYzIx
ZWVhNDBlODY2ZjJlNGFjOWJmOTVmMmI3YzQwYmZmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEtleWdlbkVsZW1lbnQuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHByb3RlY3RlZDoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91
dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYgdGFyZ2V0RG9jdW1lbnQpIG92ZXJyaWRl
CisgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4oRG9jdW1lbnQmIHRhcmdldERvY3VtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIGNyZWF0ZSh0YXJnZXREb2N1bWVudCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
S2V5Z2VuRWxlbWVudC5oCmluZGV4IDMwYWMzZWRlNjA0NmM3NDhhZDJlNDRmNGM0NjBjYzQwNTU0
MGUxMzAuLjlhOTFjNTZkOTA0NmQ1MzRlZTNmZDQ2YWRkOTEwZWNlNjlhYWIxNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKQEAgLTM3LDIyICszNywyMiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEhUTUxLZXlnZW5FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGNvbXB1
dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBjb21wdXRlV2lsbFZhbGlkYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURh
dGFMaXN0JiwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc09w
dGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgb3ZlcnJpZGU7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzT3B0aW9uYWxGb3JtQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29u
dHJvbFN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwor
ICAgIGJvb2wgc2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5IYXZlVXNl
ckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzaGFkb3dTZWxlY3QoKSBjb25zdDsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCmluZGV4IDQ4OWI0MzRjODVjMmYwMjhiODU2NjE2MDIw
N2UyYTM4MGRhN2RkMDMuLjA2ZDM5MmZiZDhjMWY3MWI4Y2Q0YmIxMzIyMjlkMTAzZGZkODliMzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5oCkBAIC0zNSwxMSArMzUsMTEgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBIVE1MTElFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVT
dHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29s
IGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVy
dGllcyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHBhcnNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJik7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGFiZWxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMYWJlbEVsZW1lbnQuaAppbmRleCA4ODE1YmZlOGQ2MGYxYTU0NDgwZDYwM2EyYTFm
MjhjYjIzMzAxYTdkLi4yNTVlZGQxNmJmYTk2ZTgyMmMyNWQ4OWMxODJjNjRlNjg1MGEwNjVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMYWJlbEVsZW1lbnQuaApAQCAtMzYsMjMgKzM2LDIzIEBA
IHB1YmxpYzoKICAgICBMYWJlbGFibGVFbGVtZW50KiBjb250cm9sKCk7CiAgICAgSFRNTEZvcm1F
bGVtZW50KiBmb3JtKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSFRNTExhYmVsRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zv
Y3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91
c2VFdmVudHMpIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1v
dXNlRXZlbnRzKSBvdmVycmlkZTsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gdXBkYXRlIHRoZSBo
b3Zlci9hY3RpdmUgc3RhdGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbC4KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgPSB0cnVlLCBib29sIHBhdXNlID0gZmFsc2UpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJvb2wgPSB0cnVlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEFjdGl2ZShib29sID0gdHJ1ZSwgYm9vbCBwYXVzZSA9IGZhbHNlKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIG92ZXJyaWRlOwogCiAgICAg
Ly8gT3ZlcnJpZGRlbiB0byBlaXRoZXIgY2xpY2soKSBvciBmb2N1cygpIHRoZSBjb3JyZXNwb25k
aW5nIGNvbnRyb2wuCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlv
biwgRm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZm9jdXMoYm9vbCByZXN0b3Jl
UHJldmlvdXNTZWxlY3Rpb24sIEZvY3VzRGlyZWN0aW9uKSBvdmVycmlkZTsKIH07CiAKIH0gLy9u
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExlZ2VuZEVsZW1lbnQuaAppbmRleCA0ZGUx
MmQ5OTY2ZWM1NmEwMDg0NTc5NTczYzIyMjg0MTE5YTBjNTBjLi41NTIxNjQxZjc4ZWZhYTE0NjEz
YzEyMjM1ZmZlYzc2NzVjMTVlNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxMZWdlbmRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGVnZW5kRWxl
bWVudC5oCkBAIC00MCw5ICs0MCw5IEBAIHByaXZhdGU6CiAgICAgLy8gQ29udHJvbCBpbiB0aGUg
bGVnZW5kJ3MgZmllbGRzZXQgdGhhdCBnZXRzIGZvY3VzIGFuZCBhY2Nlc3Mga2V5LgogICAgIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQqIGFzc29jaWF0ZWRDb250cm9sKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24sIEZvY3Vz
RGlyZWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEhUTUxGb3JtRWxlbWVudCogdmlydHVh
bEZvcm0oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNl
bmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7CisgICAgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2
aW91c1NlbGVjdGlvbiwgRm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlOworICAgIEhUTUxGb3JtRWxl
bWVudCogdmlydHVhbEZvcm0oKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy9uYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5oCmluZGV4IDI3OTMzNWVhOTU5MmUyZGM4
ZDE0ZWZkZjZhY2RmOTZkYjcxNmExODMuLjJlM2I0NGYzNzE1NGFiZDM2ZTE3NDAwYzQ2OTcwZmU2
NjRiNTYxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuaApAQCAtNTAsNyAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgVVJMIGhyZWYoKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIHJlbCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIHRhcmdldCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgY29uc3Q7CiAKQEAgLTczLDM5ICs3MywzOSBAQCBwdWJs
aWM6CiAgICAgRE9NVG9rZW5MaXN0JiByZWxMaXN0KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRMb2FkTGluaygpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkTG9hZExpbmsoKSBv
dmVycmlkZTsKICAgICB2b2lkIHByb2Nlc3MoKTsKICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzQ2Fs
bGJhY2soTm9kZSopOwogICAgIHZvaWQgY2xlYXJTaGVldCgpOwogCi0gICAgdmlydHVhbCBJbnNl
cnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVy
cmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2Rl
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBmcm9tIENhY2hlZFJlc291cmNlQ2xpZW50Ci0gICAgdmly
dHVhbCB2b2lkIHNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFN0cmluZyYgY2hhcnNldCwgY29uc3QgQ2FjaGVkQ1NTU3R5bGVTaGVl
dCogc2hlZXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaGVldExvYWRlZCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlMb2FkZWRTaGVldEFuZEFsbENyaXRpY2FsU3Vi
cmVzb3VyY2VzKGJvb2wgZXJyb3JPY2N1cnJlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgU3Ry
aW5nJiBjaGFyc2V0LCBjb25zdCBDYWNoZWRDU1NTdHlsZVNoZWV0KiBzaGVldCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBzaGVldExvYWRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5TG9hZGVk
U2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgbGlua0xvYWRlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBs
aW5rTG9hZGluZ0Vycm9yZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxpbmtMb2FkZWQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGxpbmtMb2FkaW5nRXJyb3JlZCgpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCBpc0FsdGVybmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWJsZWRTdGF0ZSA9PSBVbnNldCAm
JiBtX3JlbEF0dHJpYnV0ZS5pc0FsdGVybmF0ZTsgfQogICAgIAogICAgIHZvaWQgc2V0RGlzYWJs
ZWRTdGF0ZShib29sKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBB
dHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBvdmVycmlkZTsKICAgICB2b2lkIGhhbmRsZUNsaWNrKEV2ZW50Jik7CiAKICAg
ICBIVE1MTGlua0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCBj
cmVhdGVkQnlQYXJzZXIpOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmli
dXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFBl
bmRpbmdTaGVldFR5cGUgeyBVbmtub3duLCBBY3RpdmVTaGVldCwgSW5hY3RpdmVTaGVldCB9Owog
ICAgIHZvaWQgYWRkUGVuZGluZ1NoZWV0KFBlbmRpbmdTaGVldFR5cGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWFwRWxlbWVudC5oCmluZGV4IDdkNzc0MDgzMDA0MmVkMjAzYjA1NTMwZjEzN2NmODY0
YWVmYmRkYzkuLjZhYjYwODJlMTM5YzA2NThmNWUxZDljODkxMzk2MDVhOWY3YmM4OGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmgKQEAgLTQ2LDEwICs0NiwxMCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEhUTUxNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVt
b3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCiAgICAgQXRvbWljU3RyaW5nIG1f
bmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAppbmRleCA2
ZDE5NmRkMzNmOTFmYWI1MTgxNDEyNjA2MzA3ZDc4MTk3ZDI0NTFhLi4wMzM0MTljNWE5NjI1MDk1
MzY2MjBkMjZiZjk5YmVhOTEzN2IyNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXJxdWVlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1
ZWVFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIC8vIERPTSBGdW5jdGlv
bnMKIAogICAgIHZvaWQgc3RhcnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwogICAgIAogICAgIHVuc2lnbmVkIHNjcm9sbEFt
b3VudCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsQW1vdW50KHVuc2lnbmVkKTsKQEAgLTUz
LDE2ICs1MywxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxNYXJxdWVlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1By
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJv
cGVydGllcyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxl
Rm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAKICAgICAvLyBB
Y3RpdmVET01PYmplY3QKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3Vz
cGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNv
bkZvclN1c3BlbnNpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiSFRNTE1hcnF1ZWVFbGVtZW50IjsgfQorICAgIGJvb2wgY2Fu
U3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZSgp
IG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiSFRNTE1hcnF1ZWVFbGVtZW50IjsgfQogCi0gICAgdmlydHVhbCBi
b29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBSZW5kZXJNYXJxdWVlKiBy
ZW5kZXJNYXJxdWVlKCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA3MjVmYjNhN2QxMDE4OGFkYjY4MDhhMDVlZmQ3NGUyZDFiZTg3NTIwLi4wZTQx
OGFhNmNkMmNiYzkyOTQ1MmM0ODAyNDVmMDNmNjg2MjFhZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMTExLDIyICsxMTEsMjIgQEAgcHVibGljOgogICAgIE1l
ZGlhUGxheWVyKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci5nZXQoKTsgfQogCiAg
ICAgdmlydHVhbCBib29sIGlzVmlkZW8oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNW
aWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYXNBdWRp
bygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIEhhc2hTZXQ8SFRNTE1lZGlhRWxlbWVu
dCo+JiBhbGxNZWRpYUVsZW1lbnRzKCk7CiAKICAgICB2b2lkIHJld2luZChkb3VibGUgdGltZURl
bHRhKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmV0dXJuVG9SZWFsdGltZSgpIG92
ZXJyaWRlOwogCiAgICAgLy8gRXZlbnR1YWxseSBvdmVybG9hZGVkIGluIEhUTUxWaWRlb0VsZW1l
bnQKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH07CisgICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNhblNh
dmVNZWRpYURhdGEoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0
ZShjb25zdCBBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcqIHZhbHVlID0gbnVsbHB0cikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcmLCBBdG9taWNTdHJpbmcqIHZhbHVlID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdDsKICAg
ICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CkBAIC0xNjYsMjYgKzE2Niwy
NiBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHByZWxvYWQoKSBjb25zdDsgICAgCiAgICAgdm9pZCBz
ZXRQcmVsb2FkKGNvbnN0IFN0cmluZyYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWVS
YW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFu
Z2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbG9hZCgpOwogICAgIFN0
cmluZyBjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGtl
eVN5c3RlbSA9IFN0cmluZygpLCBjb25zdCBVUkwmID0gVVJMKCkpIGNvbnN0OwogCiAvLyByZWFk
eSBzdGF0ZQogICAgIHVzaW5nIEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6UmVhZHlTdGF0ZTsKLSAg
ICB2aXJ0dWFsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgc2Vla2luZygp
IGNvbnN0OwogCiAvLyBwbGF5YmFjayBzdGF0ZQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
ZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEN1cnJlbnRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgZG91Ymxl
IGN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZShk
b3VibGUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUs
IEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBnZXRTdGFydERhdGUoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBkZWZhdWx0UGxheWJhY2tSYXRlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldERlZmF1bHRQbGF5YmFja1JhdGUoZG91Ymxl
KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGRvdWJsZSBwbGF5YmFja1Jh
dGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRv
dWJsZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgZG91YmxlIGR1cmF0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYXVzZWQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBkb3VibGUgZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0RGVmYXVsdFBsYXliYWNrUmF0ZShkb3VibGUpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIGRvdWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFBsYXliYWNrUmF0ZShkb3VibGUpIG92ZXJyaWRlOwogCiAvLyBNZWRpYVRpbWUgdmVy
c2lvbnMgb2YgcGxheWJhY2sgc3RhdGUKICAgICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgp
IGNvbnN0OwpAQCAtMTk2LDE2ICsxOTYsMTYgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlUGxh
eWJhY2tSYXRlKCk7CiAgICAgYm9vbCB3ZWJraXRQcmVzZXJ2ZXNQaXRjaCgpIGNvbnN0OwogICAg
IHZvaWQgc2V0V2Via2l0UHJlc2VydmVzUGl0Y2goYm9vbCk7Ci0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFRpbWVSYW5nZXM+IHBsYXllZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8
VGltZVJhbmdlcz4gcGxheWVkKCkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2Vz
PiBzZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5k
ZWQoKSBjb25zdDsKICAgICBib29sIGF1dG9wbGF5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0F1dG9w
bGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvcGxheWluZzsgfQogICAgIGJvb2wgbG9vcCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0TG9vcChib29sIGIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHBhdXNlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEJ1ZmZlckRh
dGEoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0U2hvdWxkQnVmZmVyRGF0YShib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGZhc3RTZWVrKGRv
dWJsZSk7CiAgICAgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0OwogICAgIGRvdWJs
ZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25zdDsKQEAgLTIxNyw3ICsyMTcsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCB3ZWJraXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdDsKICAgICB2b2lk
IHNldFdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZShib29sKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBlbGVtZW50SXNIaWRkZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2VsZW1lbnRJc0hp
ZGRlbjsgfQorICAgIGJvb2wgZWxlbWVudElzSGlkZGVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9lbGVtZW50SXNIaWRkZW47IH0KIAogI2lmIEVOQUJMRShNRURJQV9TVEFUSVNUSUNTKQog
Ly8gU3RhdGlzdGljcwpAQCAtMjUwLDIwICsyNTAsMjAgQEAgcHVibGljOgogLy8gY29udHJvbHMK
ICAgICBib29sIGNvbnRyb2xzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250cm9scyhib29sKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGRvdWJsZSB2b2x1bWUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBkb3VibGUgdm9sdW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRWb2x1bWUoZG91YmxlLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBtdXRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0TXV0ZWQoYm9vbCkgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBiZWdpblNjcnViYmluZygpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBlbmRTY3J1YmJpbmcoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGJlZ2luU2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
bmRTY3J1YmJpbmcoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5n
KFNjYW5EaXJlY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygp
IG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZyhTY2FuRGlyZWN0aW9uKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgZG91YmxlIG5leHRTY2Fu
UmF0ZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGNhblBsYXkoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhblBsYXkoKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIGRvdWJsZSBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CiAKQEAgLTI5MSwxNSAr
MjkxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlVGV4dFRyYWNrKEhUTUxU
cmFja0VsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRB
ZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8
QXVkaW9UcmFja1ByaXZhdGU+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJEaWRSZW1vdmVUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVmlkZW9UcmFj
ayhQYXNzUmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRp
YVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4pIG92
ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllckRp
ZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4pIG92ZXJyaWRlOwor
ICAgIHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9U
cmFja1ByaXZhdGU+KSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyRGlkUmVtb3ZlVGV4
dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pIG92ZXJyaWRlOworICAg
IHZvaWQgbWVkaWFQbGF5ZXJEaWRSZW1vdmVWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFj
a1ByaXZhdGU+KSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCi0gICAgdmly
dHVhbCBWZWN0b3I8UmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPj4gb3V0T2ZCYW5kVHJhY2tTb3Vy
Y2VzKCkgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4+IG91
dE9mQmFuZFRyYWNrU291cmNlcygpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgVHJh
Y2tHcm91cDsKQEAgLTMxNSwxOSArMzE1LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVRl
eHRUcmFja0Rpc3BsYXkoKTsKIAogICAgIC8vIEF1ZGlvVHJhY2tDbGllbnQKLSAgICB2aXJ0dWFs
IHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGF1ZGlvVHJhY2tFbmFibGVkQ2hhbmdlZChBdWRpb1RyYWNrKikgb3ZlcnJpZGU7CiAK
ICAgICAvLyBUZXh0VHJhY2tDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVhZHlT
dGF0ZUNoYW5nZWQoVGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0tpbmRD
aGFuZ2VkKFRleHRUcmFjayopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tN
b2RlQ2hhbmdlZChUZXh0VHJhY2sqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRy
YWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tB
ZGRDdWUoVGV4dFRyYWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8
VGV4dFRyYWNrQ3VlPikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChU
ZXh0VHJhY2sqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBj
b25zdCBUZXh0VHJhY2tDdWVMaXN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1v
dmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1
ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBh
c3NSZWZQdHI8VGV4dFRyYWNrQ3VlPikgb3ZlcnJpZGU7CiAKICAgICAvLyBWaWRlb1RyYWNrQ2xp
ZW50Ci0gICAgdmlydHVhbCB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFj
ayopIG92ZXJyaWRlOworICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1Ry
YWNrKikgb3ZlcnJpZGU7CiAKICAgICBib29sIHJlcXVpcmVzVGV4dFRyYWNrUmVwcmVzZW50YXRp
b24oKSBjb25zdDsKICAgICB2b2lkIHNldFRleHRUcmFja1JlcHJlc2VudGF0aW9uKFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uKik7CkBAIC0zMzYsMTUgKzMzNiwxNSBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogICAgIHZvaWQgd2Via2l0U2hvd1BsYXli
YWNrVGFyZ2V0UGlja2VyKCk7Ci0gICAgdmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29s
IHVzZUNhcHR1cmUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZW1vdmVFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1
c2VDYXB0dXJlKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCB3aXJlbGVzc1JvdXRlc0F2
YWlsYWJsZURpZENoYW5nZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9X
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNr
VGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1c3RvbVBsYXli
YWNrQWN0aW9uU2VsZWN0ZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIo
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2Fw
dHVyZSkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHdpcmVsZXNzUm91dGVzQXZhaWxhYmxlRGlkQ2hh
bmdlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tU
YXJnZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFdpcmVsZXNzUGxheWJhY2tUYXJn
ZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXN0b21Q
bGF5YmFja0FjdGlvblNlbGVjdGVkKCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHBsYXliYWNrVGFy
Z2V0UGlja2VyQ3VzdG9tQWN0aW9uTmFtZSgpIGNvbnN0OwogI2VuZGlmCiAgICAgYm9vbCB3ZWJr
aXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkgY29uc3Q7CkBAIC0zNTgsNyArMzU4
LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0
IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KTsgfQogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc0Z1bGxzY3JlZW4o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRnVsbHNjcmVlbigp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdG9nZ2xlRnVsbHNjcmVlblN0YXRlKCk7CiAKICAg
ICB1c2luZyBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlOwpAQCAtMzY2LDE5
ICszNjYsMTkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoVmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKSB7IG1fdmlkZW9GdWxsc2NyZWVuTW9kZSA9IG1v
ZGU7IH0KIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKFZpZGVvRnVsbHNjcmVlbk1vZGUpOwot
ICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGVu
dGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZXhpdEZ1
bGxzY3JlZW4oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJv
b2wpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGNsb3NlZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgTWVk
aWFDb250cm9scyogbWVkaWFDb250cm9scygpIGNvbnN0OwogCiAgICAgdm9pZCBzb3VyY2VXYXNS
ZW1vdmVkKEhUTUxTb3VyY2VFbGVtZW50Kik7CiAgICAgdm9pZCBzb3VyY2VXYXNBZGRlZChIVE1M
U291cmNlRWxlbWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRl
RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENo
YW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVkaWEgY2FjaGUgbWFuYWdlbWVudC4KICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3Ry
aW5nPiYpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF5aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9wbGF5aW5nOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKiBhdWRpb1NvdXJjZU5vZGUoKSB7IHJldHVybiBtX2F1ZGlv
U291cmNlTm9kZTsgfQpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBt
YXhCdWZmZXJlZFRpbWUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTWVkaWFQcm9kdWNlcjo6TWVk
aWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVByb2R1
Y2VyOjpNZWRpYVN0YXRlRmxhZ3MgbWVkaWFTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
dm9pZCBsYXlvdXRTaXplQ2hhbmdlZCgpOwogICAgIHZvaWQgdmlzaWJpbGl0eURpZENoYW5nZSgp
OwpAQCAtNDcxLDcgKzQ3MSw3IEBAIHByb3RlY3RlZDoKICAgICBEaXNwbGF5TW9kZSBkaXNwbGF5
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU1vZGU7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0RGlzcGxheU1vZGUoRGlzcGxheU1vZGUgbW9kZSkgeyBtX2Rpc3BsYXlNb2RlID0gbW9kZTsg
fQogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzTWVkaWFFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogICAgIGJvb2wgaWdub3JlVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKSBjb25zdCB7IHJl
dHVybiBtX2lnbm9yZVRyYWNrRGlzcGxheVVwZGF0ZSA+IDAgfHwgIW1fdGV4dFRyYWNrcyB8fCAh
bV9jdWVUcmVlLnNpemUoKTsgfQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIGVuZElnbm9yaW5nVHJhY2tEaXNwbGF5VXBkYXRlUmVxdWVzdHMoKTsKICNlbmRpZgogCi0g
ICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAj
aWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkKICAgICBib29sIG1lZGlhQ29udHJvbHNE
ZXBlbmRPblBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDb250cm9sc0Rl
cGVuZE9uUGFnZVNjYWxlRmFjdG9yOyB9CkBAIC00OTEsMjMgKzQ5MSwyMyBAQCBwcm90ZWN0ZWQ6
CiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXIoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIEZJWE1FOiBTaGFkb3cg
RE9NIHNwZWMgc2F5cyB3ZSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgc2hhZG93IHJvb3Qgb24g
YXVkaW8gYW5kIHZpZGVvIGVsZW1lbnRzCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdl
bnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hhbmdlKSBvdmVycmlkZTsKKyAg
ICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1
cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTW91c2VGb2N1c2FibGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmKSBvdmVycmlkZTsKKyAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29u
c3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2FsY1N0eWxl
KFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxCZWNvbWVG
dWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVG
dWxsc2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsU3RvcEJl
aW5nRnVsbHNjcmVlbkVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZWNvbWVGdWxs
c2NyZWVuRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQmVjb21lRnVsbHNjcmVlbkVs
ZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTdG9wQmVpbmdGdWxsc2NyZWVuRWxlbWVu
dCgpIG92ZXJyaWRlOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBjb25zdCBj
aGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC01MTYsMTEgKzUx
NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzdW1lKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzdG9wV2l0aG91dERlc3Ryb3lpbmdNZWRpYVBsYXll
cigpOwotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IG1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVZvbHVtZURp
ZENoYW5nZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlTdGF0ZUNo
YW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpc2liaWxpdHlTdGF0ZUNoYW5nZWQoKSBvdmVy
cmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSB7IH0KICAgICAK
QEAgLTUzMCw5NCArNTMwLDk0IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIGVmZmVjdGl2ZVBsYXli
YWNrUmF0ZSgpIGNvbnN0OwogICAgIGRvdWJsZSByZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNoYW5nZWQoTWVk
aWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZWFkeVN0
YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBtZWRp
YVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIG1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllck11dGVDaGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRHVyYXRpb25DaGFuZ2VkKE1lZGlhUGxh
eWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmF0ZUNoYW5nZWQo
TWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJQbGF5
YmFja1N0YXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBtZWRpYVBsYXllclNhd1Vuc3VwcG9ydGVkVHJhY2tzKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQ
bGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJSZXBhaW50KE1l
ZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyU2l6ZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5
ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIG1lZGlhUGxheWVyUmVuZGVyaW5nTW9kZUNoYW5nZWQoTWVkaWFQbGF5ZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJFbmdpbmVVcGRhdGVkKE1l
ZGlhUGxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllck5ldHdvcmtTdGF0ZUNo
YW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyUmVhZHlT
dGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVy
VGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVy
Vm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5
ZXJNdXRlQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5
ZXJEdXJhdGlvbkNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlh
UGxheWVyUmF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlh
UGxheWVyUGxheWJhY2tTdGF0ZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2
b2lkIG1lZGlhUGxheWVyU2F3VW5zdXBwb3J0ZWRUcmFja3MoTWVkaWFQbGF5ZXIqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyUmVzb3VyY2VOb3RTdXBwb3J0ZWQoTWVkaWFQbGF5ZXIq
KSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyUmVwYWludChNZWRpYVBsYXllciopIG92
ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJTaXplQ2hhbmdlZChNZWRpYVBsYXllciopIG92
ZXJyaWRlOworICAgIGJvb2wgbWVkaWFQbGF5ZXJSZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkKE1l
ZGlhUGxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllclJlbmRlcmluZ01vZGVD
aGFuZ2VkKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllckVuZ2lu
ZVVwZGF0ZWQoTWVkaWFQbGF5ZXIqKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
bWVkaWFQbGF5ZXJGaXJzdFZpZGVvRnJhbWVBdmFpbGFibGUoTWVkaWFQbGF5ZXIqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJDaGFyYWN0ZXJpc3RpY0NoYW5nZWQoTWVk
aWFQbGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyRmlyc3RWaWRlb0ZyYW1l
QXZhaWxhYmxlKE1lZGlhUGxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllckNo
YXJhY3RlcmlzdGljQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5ZXJLZXlBZGRlZChN
ZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5RXJyb3IoTWVk
aWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9u
SWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQgc2hvcnQg
c3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyS2V5TWVz
c2FnZShNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcm
IHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogbWVzc2FnZSwgdW5zaWduZWQgbWVzc2Fn
ZUxlbmd0aCwgY29uc3QgVVJMJiBkZWZhdWx0VVJMKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluaXRE
YXRhLCB1bnNpZ25lZCBpbml0RGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBs
YXllcktleUFkZGVkKE1lZGlhUGxheWVyKiwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkKSBvdmVycmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyS2V5RXJy
b3IoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIE1lZGlhUGxheWVyQ2xpZW50OjpNZWRpYUtleUVycm9yQ29kZSwgdW5zaWduZWQg
c2hvcnQgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllcktleU1lc3Nh
Z2UoTWVkaWFQbGF5ZXIqLCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1lc3NhZ2UsIHVuc2lnbmVkIG1lc3NhZ2VM
ZW5ndGgsIGNvbnN0IFVSTCYgZGVmYXVsdFVSTCkgb3ZlcnJpZGU7CisgICAgYm9vbCBtZWRpYVBs
YXllcktleU5lZWRlZChNZWRpYVBsYXllciosIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgY29uc3QgdW5zaWduZWQgY2hhciogaW5pdERhdGEsIHVuc2ln
bmVkIGluaXREYXRhTGVuZ3RoKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKLSAgICB2aXJ0dWFsIFJlZlB0cjxBcnJheUJ1ZmZlcj4gbWVkaWFQbGF5
ZXJDYWNoZWRLZXlGb3JLZXlJZChjb25zdCBTdHJpbmcmIGtleUlkKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIqLCBVaW50
OEFycmF5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJNZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEFycmF5QnVm
ZmVyPiBtZWRpYVBsYXllckNhY2hlZEtleUZvcktleUlkKGNvbnN0IFN0cmluZyYga2V5SWQpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgbWVkaWFQbGF5ZXJLZXlOZWVkZWQoTWVkaWFQbGF5ZXIq
LCBVaW50OEFycmF5Kikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG1lZGlhUGxheWVyTWVkaWFLZXlz
U3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAjaWYgRU5B
QkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZChNZWRpYVBsYXllciopIG92
ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVs
ZXNzQ2hhbmdlZChNZWRpYVBsYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgZW5xdWV1ZVBsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5Q2hhbmdlZEV2ZW50KCk7CiAKICAgICB1c2luZyBFdmVudFRh
cmdldDo6ZGlzcGF0Y2hFdmVudDsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVu
dCYpIG92ZXJyaWRlOworICAgIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudCYpIG92ZXJyaWRlOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAgICB2b2lkIHNldFNlc3Npb25J
bnRlcm5hbChNZWRpYVNlc3Npb24mKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBTdHJpbmcgbWVk
aWFQbGF5ZXJSZWZlcnJlcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIG1l
ZGlhUGxheWVyVXNlckFnZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
bWVkaWFQbGF5ZXJOZWVkc1NpdGVTcGVjaWZpY0hhY2tzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBTdHJpbmcgbWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBjb25zdCBvdmVycmlkZTsK
LQotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckVudGVyRnVsbHNjcmVlbigpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNGdWxsc2NyZWVuKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVybWl0dGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG1lZGlhUGxheWVySXNWaWRlbygpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBtZWRpYVBsYXllckNvbnRlbnRC
b3hSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBtZWRpYVBsYXllckNv
bnRlbnRzU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFQbGF5
ZXJTZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWVk
aWFQbGF5ZXJQYXVzZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllclBs
YXkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJQbGF0Zm9ybVZvbHVt
ZUNvbmZpZ3VyYXRpb25SZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBtZWRpYVBsYXllcklzUGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IG1lZGlhUGxheWVySXNMb29waW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVk
aWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOworICAgIFN0cmluZyBtZWRp
YVBsYXllclJlZmVycmVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG1lZGlhUGxheWVy
VXNlckFnZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBib29sIG1lZGlhUGxheWVyTmVlZHNT
aXRlU3BlY2lmaWNIYWNrcygpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBtZWRpYVBsYXll
ckRvY3VtZW50SG9zdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBtZWRpYVBsYXllckVu
dGVyRnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZvaWQgbWVkaWFQbGF5ZXJFeGl0RnVsbHNj
cmVlbigpIG92ZXJyaWRlOworICAgIGJvb2wgbWVkaWFQbGF5ZXJJc0Z1bGxzY3JlZW4oKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIG1lZGlhUGxheWVySXNGdWxsc2NyZWVuUGVybWl0dGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBtZWRpYVBsYXllcklzVmlkZW8oKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRSZWN0IG1lZGlhUGxheWVyQ29udGVudEJveFJlY3QoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBmbG9hdCBtZWRpYVBsYXllckNvbnRlbnRzU2NhbGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIG1lZGlhUGxheWVyU2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBtZWRpYVBsYXllclBhdXNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRp
YVBsYXllclBsYXkoKSBvdmVycmlkZTsKKyAgICBib29sIG1lZGlhUGxheWVyUGxhdGZvcm1Wb2x1
bWVDb25maWd1cmF0aW9uUmVxdWlyZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG1lZGlh
UGxheWVySXNQYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG1lZGlhUGxheWVySXNM
b29waW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1lZGlh
UGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8UGxhdGZv
cm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVyKCkg
b3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVTRShBVkZPVU5EQVRJT04pCi0gICAg
dmlydHVhbCBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlhUGxheWVyR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NE
ZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRp
YVBsYXllciopIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgbWVk
aWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IG1lZGlhUGxheWVySGFuZGxlUGxheWJhY2tDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpS
ZW1vdGVDb250cm9sQ29tbWFuZFR5cGUgY29tbWFuZCkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZlUmVt
b3RlQ29udHJvbENvbW1hbmQoY29tbWFuZCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYVBs
YXllclNvdXJjZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgVmVjdG9yPFN0cmluZz4gbWVkaWFQbGF5ZXJQcmVmZXJyZWRBdWRpb0NoYXJhY3Rlcmlz
dGljcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9y
UmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVBsYXllckhhbmRsZVBsYXliYWNrQ29t
bWFuZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlIGNvbW1h
bmQpIG92ZXJyaWRlIHsgZGlkUmVjZWl2ZVJlbW90ZUNvbnRyb2xDb21tYW5kKGNvbW1hbmQpOyB9
CisgICAgU3RyaW5nIG1lZGlhUGxheWVyU291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gbWVkaWFQbGF5ZXJQcmVmZXJyZWRBdWRp
b0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJHZXRSYXdDb29raWVzKGNv
bnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG1l
ZGlhUGxheWVyTmV0d29ya0ludGVyZmFjZU5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IG1lZGlhUGxheWVyR2V0UmF3Q29va2llcyhjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNv
bnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJJc0lu
TWVkaWFEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBt
ZWRpYVBsYXllckVuZ2luZUZhaWxlZFRvTG9hZCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IGJvb2wgbWVkaWFQbGF5ZXJJc0luTWVkaWFEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OworICAgIHZvaWQgbWVkaWFQbGF5ZXJFbmdpbmVGYWlsZWRUb0xvYWQoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgZG91YmxlIG1lZGlhUGxheWVyUmVxdWVzdGVkUGxheWJh
Y2tSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG1lZGlhUGxheWVyRnVsbHNjcmVlbk1vZGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiBmdWxsc2NyZWVuTW9kZSgpOyB9CisgICAgZG91YmxlIG1lZGlhUGxheWVyUmVxdWVz
dGVkUGxheWJhY2tSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgVmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtZWRpYVBsYXllckZ1bGxzY3JlZW5Nb2RlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gZnVsbHNjcmVlbk1vZGUoKTsgfQogCiAjaWYgVVNFKEdTVFJFQU1FUikKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2lucyhjb25zdCBTdHJpbmcmIGRl
dGFpbHMsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIE1lZGlhUGxheWVyUmVxdWVzdEluc3Rh
bGxNaXNzaW5nUGx1Z2luc0NhbGxiYWNrJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCByZXF1
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zKGNvbnN0IFN0cmluZyYgZGV0YWlscywgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
Q2FsbGJhY2smKSBvdmVycmlkZSBmaW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBwZW5kaW5nQWN0
aW9uVGltZXJGaXJlZCgpOwpAQCAtNjY0LDcgKzY2NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFm
dGVyRGVsYXksCiAgICAgfTsKICAgICB2b2lkIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NB
c1VuY29uZmlndXJlZChSZWNvbmZpZ3VyZU1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBjYXB0aW9u
UHJlZmVyZW5jZXNDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjYXB0aW9uUHJlZmVyZW5j
ZXNDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIC8vIFRoZXNlICJpbnRlcm5hbCIg
ZnVuY3Rpb25zIGRvIG5vdCBjaGVjayB1c2VyIGdlc3R1cmUgcmVzdHJpY3Rpb25zLgpAQCAtNjk2
LDcgKzY5Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFBsYXliYWNrUmF0ZUludGVybmFs
KGRvdWJsZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWVkaWFDYW5TdGFydCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbWVkaWFDYW5TdGFydCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTaG91bGRE
ZWxheUxvYWRFdmVudChib29sKTsKICAgICB2b2lkIGludmFsaWRhdGVDYWNoZWRUaW1lKCkgY29u
c3Q7CkBAIC03MTYsMTQgKzcxNiwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTWVkaWFD
b250cm9sbGVyKCk7CiAgICAgYm9vbCBpc0Jsb2NrZWQoKSBjb25zdDsKICAgICBib29sIGlzQmxv
Y2tlZE9uTWVkaWFDb250cm9sbGVyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGhhc0N1cnJl
bnRTcmMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9jdXJyZW50U3JjLmlzRW1wdHkoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6TGl2ZVN0cmVhbTsgfQorICAg
IGJvb2wgaGFzQ3VycmVudFNyYygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2N1cnJlbnRT
cmMuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtb3ZpZUxvYWRUeXBlKCkgPT0gTWVkaWFQbGF5ZXJFbnVtczo6TGl2ZVN0cmVhbTsg
fQogCiAgICAgdm9pZCB1cGRhdGVTbGVlcERpc2FibGluZygpOwogICAgIGJvb2wgc2hvdWxkRGlz
YWJsZVNsZWVwKCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwogICAgIERPTVdyYXBwZXJXb3JsZCYgZW5zdXJlSXNvbGF0ZWRXb3JsZCgpOwog
ICAgIGJvb2wgZW5zdXJlTWVkaWFDb250cm9sc0luamVjdGVkU2NyaXB0KCk7CiAjZW5kaWYKQEAg
LTc0Miw3ICs3NDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVJlbW90ZUNvbnRy
b2xDb21tYW5kKFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpSZW1vdGVDb250cm9sQ29tbWFuZFR5cGUp
IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVCYWNrZ3JvdW5kUGxheWJhY2tSZXN0
cmljdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZU11dGVkU3RhdGVEaWRDaGFuZ2UoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGVmZmVjdGl2ZU11dGVkKCkgY29uc3Q7CiAKQEAgLTc1Miw4ICs3NTIsOCBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpOwogCiAjaWYgRU5BQkxFKFdJ
UkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWVG
cm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBwcmVwYXJl
Rm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCByZXN1bWVG
cm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBlbnVtIGNsYXNz
IFVwZGF0ZU1lZGlhU3RhdGUgewogICAgICAgICBBc3luY2hyb25vdXNseSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRhRWxlbWVudC5oCmluZGV4IDQwN2EzZWU3ZmY2NDliZTVlNTEwZDBmNjU4YzZj
ZGQzYzViYjM5NmMuLjcxOGQ1ODQ4YWE4Yjk0Zjg0N2YyYzRlODYzNjMzNDE5Y2NlOTRhYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGFFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0YUVsZW1lbnQuaApAQCAtMzgsOCArMzgsOCBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEhUTUxNZXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9u
UmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBwcm9jZXNzKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0
ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAppbmRl
eCBiODYzNmVjNDIwNGRkNzY0ODE1ODdiZmQ4OWQyNjFkYzZlNWE4MjIyLi41MmQyOGFlYjZhMmE0
N2MzMTAwZWQwNTc3MzAzMDZmNzBlMjg4NGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHZhbHVlUmF0
aW8oKSBjb25zdDsKICAgICBHYXVnZVJlZ2lvbiBnYXVnZVJlZ2lvbigpIGNvbnN0OwogCi0gICAg
dmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBIVE1MTWV0ZXJFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNjgsMTUgKzY4LDE1IEBA
IHByaXZhdGU6CiAKICAgICBSZW5kZXJNZXRlciogcmVuZGVyTWV0ZXIoKSBjb25zdDsKIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBi
b29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRFbGVtZW50U3RhdGVDaGFuZ2Uo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlkQWRk
VXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5I
YXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFJlZlB0cjxNZXRlclZhbHVlRWxlbWVudD4gbV92YWx1ZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNb2RFbGVtZW50LmgKaW5kZXggNmNkMjc4OGU5NmFlNTM5ZGRkZWVkOTkx
ZGJjMGMyM2FhYzI4MTIxNi4uOWI2OGQ0OTc4NDVlN2ZiMDViYzZjMmViZGI5ZTMyMWE4OTNlMDU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTW9kRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1vZEVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxNb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3Qg
QXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCmluZGV4IDdiYzg2NzY1MTU1M2FhYTgwN2U4MjM4
OWRlNjAzYzkxNTZmYjVhZWEuLjNkM2M5ODkxNjFiNWMzNzA1M2Y4ZmNhMjVlZDI1MGM0MTE3MmU1
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9MaXN0RWxlbWVudC5oCkBAIC01NCw5ICs1NCw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJlY2FsY3VsYXRlSXRlbUNvdW50KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92
ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAK
ICAgICBPcHRpb25hbDxpbnQ+IG1fc3RhcnQ7CiAgICAgdW5zaWduZWQgbV9pdGVtQ291bnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggZTZlNzQyMWU0MTY4NDEx
NGUzNWQ1YTI5ZDJhZmNlZjA1MzVmMWYyNy4uYTg3ODgxYjJmZjg5YzQ3ZmY1MTc2NGJlZjY5NDc4
YjUwMDhhN2IzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAt
MzksMTYgKzM5LDE2IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnRhaW5zSmF2YUFwcGxldCgpIGNv
bnN0OwogCiAgICAgYm9vbCBoYXNGYWxsYmFja0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgdXNlRmFsbGJhY2tDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VG
YWxsYmFja0NvbnRlbnQ7IH0KKyAgICBib29sIHVzZUZhbGxiYWNrQ29udGVudCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdXNlRmFsbGJhY2tDb250ZW50OyB9CiAgICAgdm9pZCByZW5kZXJG
YWxsYmFja0NvbnRlbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCB3aWxsVmFsaWRhdGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgd2lsbFZhbGlkYXRlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEltcGxlbWVudGF0aW9uIG9m
IGNvbnN0cmFpbnQgdmFsaWRhdGlvbiBBUEkuCiAgICAgLy8gTm90ZSB0aGF0IHRoZSBvYmplY3Qg
ZWxlbWVudHMgYXJlIGFsd2F5cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24uCiAg
ICAgc3RhdGljIGJvb2wgY2hlY2tWYWxpZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0g
ICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBTdHJpbmcoKTsgfQorICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGUgeyB9CisgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KIAogICAgIHVzaW5nIEhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnJlZjsKICAgICB1c2luZyBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkZXJlZjsKQEAg
LTU4LDI2ICs1OCwyNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxPYmplY3RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCosIGJvb2wg
Y3JlYXRlZEJ5UGFyc2VyKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBN
dXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHls
ZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKICAgICB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQqIG9sZERvY3VtZW50
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGRE
b2N1bWVudCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0
IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1
dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1
YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbikgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVEb2NOYW1lZEl0ZW0oKTsKIAogICAgIC8vIEZJWE1FOiBU
aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgZGVhbCB3aXRoIHVybCBvciBzZXJ2aWNlVHlwZQpAQCAt
ODgsMjAgKzg4LDIwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNWYWxpZENsYXNzSWQoKTsKICAg
ICB2b2lkIGNsZWFyVXNlRmFsbGJhY2tDb250ZW50KCkgeyBtX3VzZUZhbGxiYWNrQ29udGVudCA9
IGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRm9ybUFzc29jaWF0ZWRFbGVtZW50KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkZvcm1Bc3NvY2lhdGVk
RWxlbWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQotICAgIHZpcnR1YWwgSFRNTEZvcm1FbGVt
ZW50KiB2aXJ0dWFsRm9ybSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVmRm9ybUFzc29j
aWF0ZWRFbGVtZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZGb3JtQXNz
b2NpYXRlZEVsZW1lbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICBIVE1MRm9ybUVsZW1l
bnQqIHZpcnR1YWxGb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZvcm1OYW1l
ZEl0ZW0qIGFzRm9ybU5hbWVkSXRlbSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KLSAgICB2
aXJ0dWFsIEhUTUxPYmplY3RFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgb3ZlcnJpZGUgeyByZXR1
cm4gKnRoaXM7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IEhUTUxPYmplY3RFbGVtZW50JiBhc0hUTUxF
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKnRoaXM7IH0KKyAgICBGb3JtTmFtZWRJ
dGVtKiBhc0Zvcm1OYW1lZEl0ZW0oKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisgICAgSFRN
TE9iamVjdEVsZW1lbnQmIGFzSFRNTEVsZW1lbnQoKSBvdmVycmlkZSB7IHJldHVybiAqdGhpczsg
fQorICAgIGNvbnN0IEhUTUxPYmplY3RFbGVtZW50JiBhc0hUTUxFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gKnRoaXM7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0Zvcm1Db250cm9s
RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Zv
cm1Db250cm9sRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJv
b2wpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhcHBlbmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBi
b29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2lu
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbV9kb2NOYW1lZEl0ZW0gOiAxOwogICAgIGJvb2wg
bV91c2VGYWxsYmFja0NvbnRlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0R3JvdXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91
cEVsZW1lbnQuaAppbmRleCBlYThjZTE4NjI3MmVjYzczMTA1MDEyZTg1MzdjYTIyODExNzljNTMz
Li5lMzhkMTNkYTIxYzNlZDZiMGZhMTYyOWM4NGVmNmE5ZTA1MTc4MzBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBI
VE1MT3B0R3JvdXBFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPEhUTUxPcHRHcm91cEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIEhUTUxTZWxlY3RFbGVtZW50KiBvd25lclNlbGVjdEVsZW1l
bnQoKSBjb25zdDsKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgZ3JvdXBMYWJlbFRl
eHQoKSBjb25zdDsKQEAgLTQzLDEzICs0MywxMyBAQCBwcml2YXRlOgogICAgIEhUTUxPcHRHcm91
cEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c0ZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlY2FsY1NlbGVjdE9wdGlvbnMoKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmgKaW5kZXggMWQ5NjAxZWI0ODAxOWU1ZTM2NzNk
ZDUxYmUwZjVhZmU2YWFlNWI1ZC4uYWExYmNiNTljYTQ2ZjY1YWY0NjAyMTRhYmFjYmFjNGE1NGMz
MjJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaApAQCAtNjAsNyAr
NjAsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIG93bkVsZW1lbnREaXNhYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzYWJsZWQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0Rpc2FibGVkRm9ybUNv
bnRyb2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJvbCgp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHRleHRJbmRlbnRlZFRvUmVzcGVjdEdyb3Vw
TGFiZWwoKSBjb25zdDsKIApAQCAtNjksMTcgKzY5LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0ZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFj
Y2Vzc0tleUFjdGlvbihib29sKSBvdmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25S
ZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBh
Y2Nlc3NLZXlBY3Rpb24oYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJl
bkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUmVzZXRDb21wdXRlZFN0eWxlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsUmVzZXRD
b21wdXRlZFN0eWxlKCkgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgY29sbGVjdE9wdGlvbklubmVy
VGV4dCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRp
b25zQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rp
b24uaAppbmRleCBmYzZhYTI1MDdkNDkyMzZjZTcxMzUzMDAzNjFlODMzMThhM2I5NGFiLi40OGYz
NWVlY2VjOGM4YWRmOGViMmU2Y2MxZTNhZjdhMDYzZjU2MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgKQEAgLTQwLDggKzQwLDggQEAgcHVibGljOgog
ICAgIEhUTUxTZWxlY3RFbGVtZW50JiBzZWxlY3RFbGVtZW50KCkgeyByZXR1cm4gZG93bmNhc3Q8
SFRNTFNlbGVjdEVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQogICAgIGNvbnN0IEhUTUxTZWxlY3RF
bGVtZW50JiBzZWxlY3RFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SFRNTFNlbGVj
dEVsZW1lbnQ+KG93bmVyTm9kZSgpKTsgfQogCi0gICAgdmlydHVhbCBIVE1MT3B0aW9uRWxlbWVu
dCogaXRlbSh1bnNpZ25lZCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSFRN
TE9wdGlvbkVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
IG92ZXJyaWRlOworICAgIEhUTUxPcHRpb25FbGVtZW50KiBpdGVtKHVuc2lnbmVkIG9mZnNldCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgSFRNTE9wdGlvbkVsZW1lbnQqIG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGQoSFRNTEVs
ZW1lbnQqLCBIVE1MRWxlbWVudCogYmVmb3JlRWxlbWVudCwgRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgYWRkKEhUTUxFbGVtZW50KiwgaW50IGJlZm9yZUluZGV4LCBFeGNlcHRpb25Db2RlJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPdXRwdXRFbGVtZW50LmgKaW5kZXggYjRlZDU0OWRkY2Nl
YWRmY2E3ZjNkZmU0NDFiOTRmOWVhYzdhNTFmMi4uMjU0NmUxNWQ0NmVkOWRjZDlkMmU5MGM5NGQy
YTI0YWQ1ZGNhYTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3V0cHV0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE91dHB1dEVsZW1lbnQuaApA
QCAtNDYsMTkgKzQ2LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERlZmF1bHRWYWx1ZShjb25z
dCBTdHJpbmcmKTsKICAgICBET01Ub2tlbkxpc3QmIGh0bWxGb3IoKTsKICAgICAKLSAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiBwcml2YXRlOgogICAgIEhUTUxPdXRwdXRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIEhUTUxGb3JtRWxlbWVudCopOwogCi0g
ICAgdmlydHVhbCBib29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICBi
b29sIGNvbXB1dGVXaWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFRl
eHRDb250ZW50SW50ZXJuYWwoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBhcmFncmFwaEVsZW1lbnQuaAppbmRleCA3MDE1NGY2Nzc0YWU3YTNjOTVkNmJjYzIxMDNi
OGY3MDY4MjIyYTM0Li5iNmE3N2FmOGZhMjc0MWRjOGI1OWI0YjE5ZDVkMzA2MmUwOWZkYTJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBoRWxlbWVudC5oCkBAIC0zNSw4ICsz
NSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFBhcmFncmFwaEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRp
ZXMmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGFyYW1F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVsZW1lbnQuaAppbmRleCBk
MzgxYjM0MGVjZjczZmI3NzBhYjdjYzI1NTI5NDcyNWRhOWM2MjFlLi5hMTQ3MTdhZjM5ZWQ3MjBl
MjdkZjI0MmMzMjVmY2QzY2MxOGYzYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxQYXJhbUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVs
ZW1lbnQuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxQYXJh
bUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxV
Ukw+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRl
VVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKaW5kZXgg
NGQ0OTdlM2Q0YzU0N2U2NDIyNDEyZDBiNWUyMmQ0YjNhYzNjOWEyYy4uOWJkNmFiOWM2OGI5MDA4
YmI4NDkyMTg2NTkwZGJhNGQyNjljMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaApAQCAtNzgsMTQgKzc4LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2FwdHVy
aW5nTW91c2VFdmVudHMoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FwdHVyaW5nTW91c2VFdmVudHM7
IH0KICAgICB2b2lkIHNldElzQ2FwdHVyaW5nTW91c2VFdmVudHMoYm9vbCBjYXB0dXJpbmcpIHsg
bV9pc0NhcHR1cmluZ01vdXNlRXZlbnRzID0gY2FwdHVyaW5nOyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBjYW5Qcm9jZXNzRHJhZygpIGNvbnN0OwogCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3Zl
RXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCi0g
ICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCBib29sIGlzUGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIApAQCAtOTQsMTcgKzk0LDE3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBIVE1M
UGx1Z0luRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYs
IE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXRhY2hS
ZW5kZXJlcnMoKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBib29sIHVzZUZhbGxiYWNrQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCBib29sIHJlcXVlc3RPYmplY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcGFyYW1WYWx1ZXMpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRT
aGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKIAogICAgIC8vIFN1YmNsYXNzZXMgc2hv
dWxkIHVzZSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQgaW5zdGVhZCBvZiBjYWxsaW5n
IGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50IGRpcmVjdGx5LgogICAgIGJvb2wgZ3VhcmRlZERpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKQEAgLTExOCwxNSAr
MTE4LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCBkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25z
dCBTdHJpbmcmIHNvdXJjZVVSTCk7IC8vIE5vdCBpbXBsZW1lbnRlZCwgZ2VuZXJhdGVzIGEgY29t
cGlsZSBlcnJvciBpZiBzdWJjbGFzc2VzIGNhbGwgdGhpcyBieSBtaXN0YWtlLgogCiAgICAgLy8g
RklYTUU6IFNoYWRvdyBET00gc3BlYyBzYXlzIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBz
aGFkb3cgcm9vdCBvbiBhcHBsZXQsIGVtYmVkLCBhbmQgb2JqZWN0LgotICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gVGhpcyB3aWxsIGxvYWQg
dGhlIHBsdWdpbiBpZiBuZWNlc3NhcnkuCiAgICAgdmlydHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRl
cldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5
Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1BsdWdpbkVs
ZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNQbHVnaW5FbGVt
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBSZWZQdHI8SlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U+IG1faW5zdGFuY2U7CiAgICAgVGltZXIgbV9zd2FwUmVuZGVyZXJUaW1lcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggMGU3NGU1
ZGMwMThlZjBjMDBhMTEwY2YxN2E4ODAzNTE1ZTAzZGI1NC4uYzY4YTk0MzQ3MDhlMTA5YmRjM2Fh
YzdhZWNkYWU5NjIzN2IyYzcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyRW1i
ZWRkZWRPYmplY3QqIHJlbmRlckVtYmVkZGVkT2JqZWN0KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RGlzcGxheVN0YXRlKERpc3BsYXlTdGF0ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXREaXNwbGF5U3RhdGUoRGlzcGxheVN0YXRlKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pID0gMDsKIApAQCAtOTMsOCArOTMs
OCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xk
RG9jdW1lbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2JqZWN0KGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXF1ZXN0T2JqZWN0KGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1l
cywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBvdmVycmlkZSBmaW5hbDsKIAog
ICAgIGJvb2wgaXNJbWFnZVR5cGUoKTsKICAgICBIVE1MSW1hZ2VMb2FkZXIqIGltYWdlTG9hZGVy
KCkgeyByZXR1cm4gbV9pbWFnZUxvYWRlci5nZXQoKTsgfQpAQCAtMTA4LDI1ICsxMDgsMjUgQEAg
cHJvdGVjdGVkOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxIVE1MSW1hZ2VMb2FkZXI+IG1faW1hZ2VM
b2FkZXI7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUGx1Z0luSW1hZ2VFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1Jlc3RhcnRlZFBsdWdpbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faXNS
ZXN0YXJ0ZWRQbHVnaW47IH0KKyAgICBib29sIGlzUGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNSZXN0YXJ0ZWRQbHVn
aW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2lzUmVzdGFydGVkUGx1Z2luOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9v
dCopIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3Zl
cnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jv
b3QqKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERldGFjaFJlbmRlcmVycygpIG92ZXJyaWRlIGZpbmFsOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlIGZpbmFsOworICAgIHZv
aWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCB3aWxsRGV0
YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvckRvY3VtZW50U3VzcGVuc2lvbigpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCBwcmVwYXJlRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCByZXN1bWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKCkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdNb3VzZUNsaWNrKCkgb3ZlcnJpZGUgZmluYWw7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgdXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4pIG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgdm9pZCBzdGFydExvYWRpbmdJbWFnZSgpOwogICAgIHZvaWQg
dXBkYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFByZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByZUVsZW1lbnQu
aAppbmRleCA0NTg4MGY1OTlhN2ViYzQxOGNhNTg1NDk5NDVmNjdhMTIyMjgwNmNkLi45Y2IyODYw
ZGE3ZmUxNzY3MzI5M2QyM2UzYWE2NWU0NTM4YTQxNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQcmVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UHJlRWxlbWVudC5oCkBAIC0zNCw4ICszNCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRN
TFByZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11
dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
cm9ncmVzc0VsZW1lbnQuaAppbmRleCBmN2M2NGE5Y2ExMTQzNDYwZTU5NzQzYTZlYmEzYzEyYjM2
YTIxZWIxLi41OGYxYTgyNmNmYjk1Zjg5NzdmNzVhZDk3NTQxNjQ4NDViMGQ5NzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaApAQCAtNDMsMjYgKzQzLDI2IEBA
IHB1YmxpYzoKIAogICAgIGRvdWJsZSBwb3NpdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBi
b29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKICAgICBIVE1MUHJvZ3Jlc3NFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1YWwgfkhUTUxQcm9ncmVz
c0VsZW1lbnQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBcHBlYXJJbmRldGVybWluYXRl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRBcHBlYXJJbmRldGVy
bWluYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBib29sIGNoaWxk
U2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJl
bmRlclByb2dyZXNzKiByZW5kZXJQcm9ncmVzcygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRB
dHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hh
ZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5IYXZlVXNlckFnZW50
U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBi
b29sIGlzRGV0ZXJtaW5hdGUoKSBjb25zdDsKIAogICAgIFByb2dyZXNzVmFsdWVFbGVtZW50KiBt
X3ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaAppbmRleCA2N2UwMjk1
YThlNzBkZjk2MDg4ZmNjYjliN2Y1NmM1NzcxN2MzNjNjLi5hM2ZkNDRlNGZhNDFjMTkzYWExNmJl
NTE1OGMwZWI5ZWZmZjAwNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxR
dW90ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQu
aApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxRdW90ZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgdmlydHVhbCBi
b29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiB9
OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
Y3JpcHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgK
aW5kZXggYWNlYTRkOGUyNWZiOGU1ZDk2NGQwYzhhZjg3NWUxYmU5OGFiNzQyYi4uYWExYjY3ZWI4
ODRiMWI4MTExNGM0ZGMyOGUxY2Y2NzQ3Mzg5NTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNjcmlwdEVsZW1lbnQuaApAQCAtNDcsMjggKzQ3LDI4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgSFRNTFNjcmlwdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9v
bCB3YXNJbnNlcnRlZEJ5UGFyc2VyLCBib29sIGFscmVhZHlTdGFydGVkKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hlZEluc2VydGluZ1N1
YnRyZWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3Vi
cmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVWYWx1
ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHR5cGVBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlQXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBmb3JBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50QXR0cmli
dXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXN5bmNBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0dHJpYnV0
ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc1NvdXJjZUF0dHJp
YnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVWYWx1ZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBjaGFyc2V0QXR0cmlidXRlVmFsdWUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdHlwZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBTdHJpbmcgZm9yQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJp
bmcgZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXN5bmNB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZGVmZXJBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU291cmNlQXR0cmlidXRlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVu
KERvY3VtZW50Jikgb3ZlcnJpZGU7CisgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKIH07CiAKIH0gLy9u
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCAxMGFh
Zjk4YmY3ZWU0ZjY5NjMzMmJhMGE4ZWQ0NzM1MTk5YTI3YzZiLi5lYjZkNjE3Yzc5NmQ1MDkyNTNi
OTg2Yjc5MzAzMTE4MTJmYzhjNzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5oCkBAIC00Niw4ICs0Niw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwgYm9vbCBkaXNwYXRjaENoYW5nZUV2ZW50
LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CiAKICAgICAvLyBGb3IgVmFs
aWRpdHlTdGF0ZQotICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IG92ZXJyaWRl
OworICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgdmFsdWVNaXNzaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKIApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBjb25zdCBWZWN0b3I8SFRNTEVsZW1lbnQqPiYgbGlzdEl0ZW1zKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBhY2Nlc3NLZXlTZXRTZWxlY3RlZEluZGV4KGludCk7CiAKICAgICB2b2lk
IHNldE11bHRpcGxlKGJvb2wpOwpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBs
aXN0Qm94U2VsZWN0SXRlbShpbnQgbGlzdEluZGV4LCBib29sIGFsbG93TXVsdGlwbHlTZWxlY3Rp
b25zLCBib29sIHNoaWZ0LCBib29sIGZpcmVPbkNoYW5nZU5vdyA9IHRydWUpOwogCiAjaWYgUExB
VEZPUk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIG92ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBv
dmVycmlkZTsKICNlbmRpZgogCiAgICAgYm9vbCBjYW5TZWxlY3RBbGwoKSBjb25zdDsKQEAgLTEx
OCwzOCArMTE4LDM4IEBAIHByb3RlY3RlZDoKICAgICBIVE1MU2VsZWN0RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNLZXlib2FyZEZvY3VzYWJsZShL
ZXlib2FyZEV2ZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VG
b2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUo
S2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJs
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRm9jdXNFdmVu
dChSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEJsdXJFdmVudChSZWZQdHI8
RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBk
aXNwYXRjaEZvY3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZv
Y3VzRGlyZWN0aW9uKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoQmx1ckV2ZW50
KFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVtZW50KSBvdmVycmlkZSBmaW5hbDsKICAg
ICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdl
bnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJl
bHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VudW1lcmF0
YWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRM
YWJlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIEZv
cm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xT
dGF0ZSYpIG92ZXJyaWRlOworICAgIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKGNv
bnN0IEZvcm1Db250cm9sU3RhdGUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9y
bURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
JiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgYm9vbCBhcHBlbmRG
b3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZXNldCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc3Bh
dGNoQ2hhbmdlRXZlbnRGb3JNZW51TGlzdCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Fs
Y1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkUmVjYWxj
U3R5bGUoU3R5bGU6OkNoYW5nZSkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2b2lkIHJlY2FsY0xp
c3RJdGVtcyhib29sIHVwZGF0ZVNlbGVjdGVkU3RhdGVzID0gdHJ1ZSkgY29uc3Q7CiAKQEAgLTE1
NywxMCArMTU3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCB0eXBlQWhlYWRGaW5kKEtleWJvYXJk
RXZlbnQmKTsKICAgICB2b2lkIHNhdmVMYXN0U2VsZWN0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPcHRpb25hbEZv
cm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJv
bCgpOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNPcHRpb25hbEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpOyB9CisgICAgYm9vbCBpc1JlcXVpcmVk
Rm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzUGxhY2Vob2xkZXJM
YWJlbE9wdGlvbigpIGNvbnN0OwogCkBAIC0xOTIsMTIgKzE5MiwxMiBAQCBwcml2YXRlOgogICAg
IGludCBsYXN0U2VsZWN0YWJsZUxpc3RJbmRleCgpIGNvbnN0OwogICAgIGludCBuZXh0U2VsZWN0
YWJsZUxpc3RJbmRleFBhZ2VBd2F5KGludCBzdGFydEluZGV4LCBTa2lwRGlyZWN0aW9uKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IG92ZXJyaWRlOwogCiAgICAgLy8gVHlwZUFoZWFkRGF0YVNvdXJjZSBmdW5jdGlvbnMuCi0gICAg
dmlydHVhbCBpbnQgaW5kZXhPZlNlbGVjdGVkT3B0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBpbnQgb3B0aW9uQ291bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBvcHRpb25BdEluZGV4KGludCBpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGlu
ZGV4T2ZTZWxlY3RlZE9wdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBvcHRpb25Db3Vu
dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBvcHRpb25BdEluZGV4KGludCBpbmRleCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBtX2xpc3RJdGVtcyBjb250YWlucyBIVE1MT3B0aW9u
RWxlbWVudCwgSFRNTE9wdEdyb3VwRWxlbWVudCwgYW5kIEhUTUxIUkVsZW1lbnQgb2JqZWN0cy4K
ICAgICBtdXRhYmxlIFZlY3RvcjxIVE1MRWxlbWVudCo+IG1fbGlzdEl0ZW1zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNsb3RFbGVtZW50LmgKaW5kZXggMGFjYTZlY2VmYjM2ZTMxNWVlMzU0ZmNiOGNj
N2QyMmY4ZjA0ZmI4OC4uYWIxNjFmZmU4YjE4M2JhZDJhN2E2YTQ0OGU4MjQ2NmIyMGE3ZjQ2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2xvdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTbG90RWxlbWVudC5oCkBAIC00Miw5ICs0Miw5IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFNsb3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZp
Y2F0aW9uUmVhc29uKSBvdmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24pIG92
ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291
cmNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCmlu
ZGV4IGI5YmM2MjFjZmU1NmJmZjk0MDI4YjZjNjU5MWI1OTUzZWY0NWIwM2IuLjU0Y2Q3NzY1MWZi
YjY2NjlmNDA1MTc4N2Y4MjE3N2E1MDQyY2ZiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
b3VyY2VFbGVtZW50LmgKQEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MU291cmNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICAK
LSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29u
dGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShj
b25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0
dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEFjdGl2
ZURPTU9iamVjdC4KICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IDI4Njhk
YmQyZTlkZjBjOGI2YWZjYTE2NzQ4ZmU3M2QwNzc0NWY3YTYuLjc2MWM4YjI2NjNmYzU5OGEyZWM3
YzNhZDY3MGU2MmQ1YzM4ZDAxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVu
dC5oCkBAIC01MSwxOSArNTEsMTkgQEAgcHJpdmF0ZToKICAgICBIVE1MU3R5bGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAog
ICAgIC8vIG92ZXJsb2FkIGZyb20gSFRNTEVsZW1lbnQKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZElu
dG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwor
ICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRl
OworICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7CiAKICAgICBib29s
IGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldE93bmVyLmlzTG9hZGluZygp
OyB9Ci0gICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9z
dHlsZVNoZWV0T3duZXIuc2hlZXRMb2FkZWQoKnRoaXMpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeUxvYWRlZFNoZWV0QW5kQWxsQ3JpdGljYWxTdWJyZXNvdXJjZXMoYm9vbCBlcnJvck9jY3Vy
cmVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0
KCkgb3ZlcnJpZGUgeyBtX3N0eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdEeW5hbWljU2hlZXQo
KnRoaXMpOyB9CisgICAgYm9vbCBzaGVldExvYWRlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5
bGVTaGVldE93bmVyLnNoZWV0TG9hZGVkKCp0aGlzKTsgfQorICAgIHZvaWQgbm90aWZ5TG9hZGVk
U2hlZXRBbmRBbGxDcml0aWNhbFN1YnJlc291cmNlcyhib29sIGVycm9yT2NjdXJyZWQpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCkgb3ZlcnJpZGUgeyBtX3N0
eWxlU2hlZXRPd25lci5zdGFydExvYWRpbmdEeW5hbWljU2hlZXQoKnRoaXMpOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4m
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhM
aXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJbmxpbmVTdHlsZVNoZWV0
T3duZXIgbV9zdHlsZVNoZWV0T3duZXI7CiAgICAgYm9vbCBtX2ZpcmVkTG9hZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCmluZGV4IDAxMWUzMjRiZTMyNTMzMzIwMmNk
OTMxNjUyY2ZjNGZjOThmMThjMTEuLjhmNWIzYTU5MDE3ZDQxOTJhN2JkNDUwMWI3NTJkZmIwNDZj
YmFhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaApAQCAtMzIs
MjIgKzMyLDIyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxTdW1tYXJ5RWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgYm9vbCBpc0Fj
dGl2ZVN1bW1hcnkoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNr
RXZlbnRzKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSFRNTFN1bW1hcnlFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwg
Y29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBTaGFk
b3cgRE9NIHNwZWMgc2F5cyB3ZSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgc2hhZG93IHJvb3Qg
b24gdGhpcyBlbGVtZW50Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2Fu
SGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBIVE1MRGV0YWlsc0VsZW1lbnQqIGRldGFpbHNFbGVtZW50KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oCmluZGV4IDJkMThjNmMzNjBm
YjM0Yzk1OGJmNWYzMTM5OWUwYjA3YTBhOWQ0MTQuLjVhNjkyMDIzNWFjNTk4MjNmMTcwMmM0NWQz
ODgwMGY3YzVmY2I4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Q2FwdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNhcHRp
b25FbGVtZW50LmgKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1M
VGFibGVDYXB0aW9uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5oCmluZGV4IDBjMjYwMzE4ZGY4ZmE1ZDJmMjEwNmFhMzdmNTBjNzEw
NzQxNWEzZWYuLmNmMGUxOTdiNzhiZDhkYTZiODc5MTllODc3NmQzZDZjYjQ4MmZjYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmgKQEAgLTUyLDE0ICs1Miwx
NCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZv
clByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Y29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJy
aWRlOworICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbFByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJp
YnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmgKaW5kZXggMWNmNTg0NjRiZTMx
ZDFiNzU5OWZjODE1MmNlN2I4YWNmZTcwY2JlYy4uYzk1N2Q4N2IyZDFmNDA5ZmVkMTA1NTg0NDA0
YmJlYzViMDk5ODg3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVD
b2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50
LmgKQEAgLTQyLDEwICs0MiwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxUYWJsZUNv
bEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9u
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxQ
cmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CisgICAgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBh
ZGRpdGlvbmFsUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBvdmVycmlkZTsKIAogICAgIHVu
c2lnbmVkIG1fc3BhbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCmlu
ZGV4IDMwNzU4MzUyNDI4NGY4MDhmNTFmZTM4NTJhZjEwZWFiNTMwZTQxN2UuLmFlYjJhZTJhNDNl
OTQ2MmM1OTliYmIyMGE1ZmUyZmM2MTUzNjdlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlRWxlbWVudC5oCkBAIC03MiwxNSArNzIsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBI
VE1MVGFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25B
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmlidXRl
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ByZXNl
bnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBv
dmVycmlkZTsKKyAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgLy8gVXNlZCB0byBvYnRhaW4gZWl0aGVyIGEgc29saWQgb3Igb3V0
c2V0IGJvcmRlciBkZWNsIGFuZCB0byBkZWFsIHdpdGggdGhlIGZyYW1lIGFuZCBydWxlcyBhdHRy
aWJ1dGVzLgotICAgIHZpcnR1YWwgY29uc3QgU3R5bGVQcm9wZXJ0aWVzKiBhZGRpdGlvbmFsUHJl
c2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBvdmVycmlkZTsKKyAgICBjb25zdCBTdHlsZVByb3Bl
cnRpZXMqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0
ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZW51bSBUYWJs
ZVJ1bGVzIHsgVW5zZXRSdWxlcywgTm9uZVJ1bGVzLCBHcm91cHNSdWxlcywgUm93c1J1bGVzLCBD
b2xzUnVsZXMsIEFsbFJ1bGVzIH07CiAgICAgZW51bSBDZWxsQm9yZGVycyB7IE5vQm9yZGVycywg
U29saWRCb3JkZXJzLCBJbnNldEJvcmRlcnMsIFNvbGlkQm9yZGVyc0NvbHNPbmx5LCBTb2xpZEJv
cmRlcnNSb3dzT25seSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVQYXJ0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVQYXJ0RWxlbWVu
dC5oCmluZGV4IGVlMzZlZmZmNGQwMDgyYjMxZTk3MjU2M2UwYjY5Yjg2MmNmNTUyNDIuLmJkM2E0
M2IxOTlhNDRjMDRhMzlhODUwYjljMDYwYmZhM2UwNjk0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRhYmxlUGFydEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZVBhcnRFbGVtZW50LmgKQEAgLTM5LDggKzM5LDggQEAgcHJvdGVjdGVkOgog
ICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBj
b2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsK
KyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0
eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwogCiAgICAgSFRNTFRhYmxlRWxlbWVudCogZmluZFBh
cmVudFRhYmxlKCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGFibGVTZWN0aW9uRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVT
ZWN0aW9uRWxlbWVudC5oCmluZGV4IDBjMTQ0MDAxMTQwZGM5OGZjZmQ1MDlkM2JmNGMwM2Q3NmNh
NTBiMTcuLmIyMmNlMGJhZGUzNjFlZTdmMmQ2NDMzNjdmNzg5NjBlZWNjNGFlYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVGFibGVTZWN0aW9uRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBjb25z
dCBTdHlsZVByb3BlcnRpZXMqIGFkZGl0aW9uYWxQcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgp
IG92ZXJyaWRlOworICAgIGNvbnN0IFN0eWxlUHJvcGVydGllcyogYWRkaXRpb25hbFByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZW1wbGF0ZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRlRWxlbWVudC5oCmluZGV4IGQxZmE4
NjQwNjlkY2I3NTA5YzlmMTg3NzBkYWI1MmYxZTg1NmJkMTcuLmZmOTczNmYxZTZiYTExYjc1NDJl
Y2IwM2M5YzU1ZGMwMGFhMzE5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRlbXBsYXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRlbXBsYXRl
RWxlbWVudC5oCkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFRl
bXBsYXRlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZp
cnR1YWwgUmVmPE5vZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJh
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERv
Y3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgUmVmPE5vZGU+IGNsb25lTm9kZUlu
dGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogCiAg
ICAgbXV0YWJsZSBSZWZQdHI8VGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudD4gbV9jb250
ZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXgg
YjEyODBiNDcwMmI4MTYzNGI0NmI4ZjAwYTI0OTBlY2FlYmQ4MGU3NS4uYmQxZTg4NjdiMTUyMmQ0
NGQ3OGFiODViNTBlYmNkZjc1ODdlZmRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91
bGRXcmFwVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JhcCAhPSBOb1dyYXA7IH0KIAotICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgU3RyaW5nIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgZGVmYXVs
dFZhbHVlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXREZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJik7
CkBAIC00OCwyOCArNDgsMjggQEAgcHVibGljOgogICAgIGludCBtYXhMZW5ndGhGb3JCaW5kaW5n
cygpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TGVuZ3RoOyB9CiAgICAgaW50IGVmZmVjdGl2ZU1heExl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF4TGVuZ3RoOyB9CiAgICAgLy8gRm9yIFZhbGlkaXR5
U3RhdGUKLSAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB2YWxp
ZGF0aW9uTWVzc2FnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB0b29Mb25nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgCi0gICAgdmlydHVh
bCBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5uZXJUZXh0U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBS
ZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlbmRlcmVyV2lsbEJlRGVzdHJveWVkKCk7CiAK
ICAgICB2b2lkIHNldENvbHModW5zaWduZWQpOwogICAgIHZvaWQgc2V0Um93cyh1bnNpZ25lZCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVy
cmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgSFRNTFRleHRBcmVhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogICAgIGVudW0gV3JhcE1ldGhvZCB7
IE5vV3JhcCwgU29mdFdyYXAsIEhhcmRXcmFwIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRk
VXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dS
b290Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgbWF4TGVuZ3Ro
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKIApAQCAtNzks
NDQgKzc5LDQ0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXROb25EaXJ0eVZhbHVlKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc2V0VmFsdWVDb21tb24oY29uc3QgU3RyaW5nJik7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIEhUTUxFbGVtZW50KiBwbGFjZWhvbGRlckVsZW1lbnQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGxhY2Vob2xkZXJUZXh0KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHZhbHVlKCkuaXNFbXB0eSgpOyB9CisgICAgYm9vbCBzdXBwb3J0c1BsYWNlaG9s
ZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEhUTUxFbGVtZW50KiBw
bGFjZWhvbGRlckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVBsYWNl
aG9sZGVyVGV4dCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFbXB0eVZhbHVlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdmFsdWUoKS5pc0VtcHR5KCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBp
c09wdGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhaXNSZXF1aXJl
ZEZvcm1Db250cm9sKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXF1aXJlZEZvcm1Db250cm9s
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNSZXF1aXJlZCgpOyB9CisgICAgYm9vbCBpc09w
dGlvbmFsRm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhaXNSZXF1aXJlZEZv
cm1Db250cm9sKCk7IH0KKyAgICBib29sIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGlzUmVxdWlyZWQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhh
c0NoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0VudW1lcmF0YWJsZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRMYWJlbHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Rm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29udHJv
bFN0YXRlJikgb3ZlcnJpZGU7CisgICAgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xT
dGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlz
VGV4dEZvcm1Db250cm9sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgaXNUZXh0Rm9ybUNvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQ
cmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEo
Rm9ybURhdGFMaXN0JiwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNl
KFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSwgU2VsZWN0aW9uUmV2ZWFsTW9kZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHls
ZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBib29sIGFwcGVu
ZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQo
KSBvdmVycmlkZTsKKyAgICBib29sIGhhc0N1c3RvbUZvY3VzTG9naWMoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKFNlbGVjdGlvblJlc3RvcmF0aW9uTW9kZSwgU2Vs
ZWN0aW9uUmV2ZWFsTW9kZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5
QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKKyAgICB2b2lkIGFjY2Vzc0tl
eUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbWF0
Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91
bGRVc2VJbnB1dE1ldGhvZCgpIG92ZXJyaWRlOworICAgIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBz
ZXVkb0NsYXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIHZhbHVlTWlzc2luZyhjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdCB7IHJldHVybiBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSAm
JiAhaXNEaXNhYmxlZE9yUmVhZE9ubHkoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7IH0KICAgICBib29s
IHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRl
eCBiYTg3ZDdlOThhYTVjN2NjMDE0YTU4OGU3NjFlYzk3YmEyMzI5OGM0Li5lNzc1MGZiZTNmMGI2
Y2UxMDJkYmE2MzZmMzE3MmM3N2I5YjFkYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0TWF4TGVuZ3RoRm9yQmluZGluZ3MoaW50LCBFeGNlcHRpb25Db2RlJik7
CiAKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1
ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICAvLyBUaGUg
ZGVyaXZlZCBjbGFzcyBzaG91bGQgcmV0dXJuIHRydWUgaWYgcGxhY2Vob2xkZXIgcHJvY2Vzc2lu
ZyBpcyBuZWVkZWQuCiAgICAgYm9vbCBpc1BsYWNlaG9sZGVyVmlzaWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNQbGFjZWhvbGRlclZpc2libGU7IH0KQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIFBhc3NSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbigpIGNvbnN0OwogICAgIFN0cmluZyBzZWxl
Y3RlZFRleHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvcm1Db250cm9s
Q2hhbmdlRXZlbnQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpc3BhdGNoRm9ybUNvbnRy
b2xDaGFuZ2VFdmVudCgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBTdHJpbmcgdmFs
dWUoKSBjb25zdCA9IDA7CiAKQEAgLTEwMCwxMCArMTAwLDEwIEBAIHByb3RlY3RlZDoKICAgICBi
b29sIGlzUGxhY2Vob2xkZXJFbXB0eSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQ
bGFjZWhvbGRlclRleHQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc2FibGVkU3RhdGVDaGFuZ2Vk
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZWRTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlYWRPbmx5QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgdXBk
YXRlSW5uZXJUZXh0RWxlbWVudEVkaXRhYmlsaXR5KCk7CiAKICAgICB2b2lkIGNhY2hlU2VsZWN0
aW9uKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVj
dGlvbikKQEAgLTEzMSw5ICsxMzEsOSBAQCBwcml2YXRlOgogICAgIGludCBjb21wdXRlU2VsZWN0
aW9uRW5kKCkgY29uc3Q7CiAgICAgVGV4dEZpZWxkU2VsZWN0aW9uRGlyZWN0aW9uIGNvbXB1dGVT
ZWxlY3Rpb25EaXJlY3Rpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZv
Y3VzRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQsIEZvY3VzRGlyZWN0
aW9uKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQo
UmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1lbnQpIG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRm9jdXNFdmVudChSZWZQdHI8RWxlbWVudD4m
JiBvbGRGb2N1c2VkRWxlbWVudCwgRm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlIGZpbmFsOworICAg
IHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3Rm9jdXNlZEVsZW1l
bnQpIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihj
b25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBpbmRleEZvclBvc2l0
aW9uKGNvbnN0IFBvc2l0aW9uJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRpdGxlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVF
bGVtZW50LmgKaW5kZXggNmE5MjgzZjgxZjUwYzk1YTFlNDU2ZmRjNmJlOWIzNGEyODFhOTE1NC4u
MDE3N2E5MjIxZGM2YjUxYzEyNGY2YWIzNzM2M2Q4MThjYTI1OTAwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmgKQEAgLTM5LDkgKzM5LDkgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBIVE1MVGl0bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50
byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9t
KENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmdXaXRo
RGlyZWN0aW9uIGNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUcmFja0VsZW1lbnQuaAppbmRleCAwNTQ2YWRlYmEwNTA0ZjlhYTFkODNjNDI1ZDhiMzI3
YTA4MDNiY2RkLi42ZDE1MmI0ZTg5ZTA4ZTZmNGVlOTEzYjlhOTM4ZDhmYjJiYjRlY2RmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaApAQCAtNjgsMjQgKzY4LDI0IEBAIHBy
aXZhdGU6CiAgICAgSFRNTFRyYWNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKICAgICB2aXJ0dWFsIH5IVE1MVHJhY2tFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnNlcnRp
b25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29uc3QgQXR0cmli
dXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKIAog
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0OwogCiAgICAgLy8gVGV4
dFRyYWNrQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja01vZGVDaGFuZ2VkKFRleHRU
cmFjayopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tLaW5kQ2hhbmdlZChU
ZXh0VHJhY2sqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhU
ZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3Vl
TGlzdCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRy
YWNrKiwgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3Vl
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0VHJhY2sqKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopIG92ZXJy
aWRlOworICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJh
Y2tDdWVMaXN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWVzKFRleHRU
cmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRU
cmFja0FkZEN1ZShUZXh0VHJhY2sqLCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4pIG92ZXJyaWRl
OworICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFBhc3NSZWZQdHI8VGV4
dFRyYWNrQ3VlPikgb3ZlcnJpZGU7CiAKICAgICBMb2FkYWJsZVRleHRUcmFjayYgZW5zdXJlVHJh
Y2soKTsKICAgICBib29sIGNhbkxvYWRVUkwoY29uc3QgVVJMJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxVTGlzdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFVMaXN0RWxlbWVudC5oCmluZGV4IDU1OGYxNGJhMGVhODI4NzczM2IwMGNjZTk4YjQ4NGY0
OTE0OTdmODcuLjA2OTk1YTk1YWUwNWZlNWIzOTNhNGU0OTYxNWMyMDBlOWUyYTE1ZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFVMaXN0RWxlbWVudC5oCkBAIC0zNSw4ICszNSw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSFRNTFVMaXN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVbmtub3duRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVW5rbm93bkVsZW1lbnQuaAppbmRleCAzMWUxMTM4MGQwM2VjZjg3YTRjNGNk
ZDFmMGFjYjdmODlkMGRhZjZlLi5jNmRiMzkxNWU4YTdmZjllODU4ZmYwODc0NDViNDgzZmJhY2Nm
ZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVbmtub3duRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVua25vd25FbGVtZW50LmgKQEAgLTQ4LDEy
ICs0OCwxMiBAQCBwcml2YXRlOgogICAgIH0KIAogI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hh
ZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAjZWxzZQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIGxvY2FsTmFtZSgpID09ICJtZXRlciI7IH0KKyAgICBib29sIGNh
bkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
bG9jYWxOYW1lKCkgPT0gIm1ldGVyIjsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNI
VE1MVW5rbm93bkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc0hUTUxVbmtub3duRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5oCmluZGV4IDI5NjBkZGQ2MTQxMjFmMmViYTYwNzVmYTU5NWIxYTczOTAxYjYzYzUuLmFkOTQ4
Zjk0NGEzMDgxNmFhNTdiM2M4ZWVhNjAyNDg4MTI0NTY1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHdl
YmtpdFN1cHBvcnRzRnVsbHNjcmVlbigpOwogICAgIGJvb2wgd2Via2l0RGlzcGxheWluZ0Z1bGxz
Y3JlZW4oKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhbmNlc3RvcldpbGxFbnRlckZ1bGxzY3JlZW4o
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFuY2VzdG9yV2lsbEVudGVyRnVsbHNjcmVlbigpIG92ZXJy
aWRlOwogICAgIAogICAgIC8vIEZJWE1FOiBNYWludGFpbiAiRnVsbFNjcmVlbiIgY2FwaXRhbGl6
YXRpb24gc2NoZW1lIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzYwODEKQEAgLTc4LDE0ICs3OCwxNCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJl
dHVybiBkaXNwbGF5TW9kZSgpID09IFBvc3RlciB8fCBkaXNwbGF5TW9kZSgpID09IFBvc3Rlcldh
aXRpbmdGb3JWaWRlbzsgfQogCiAgICAgVVJMIHBvc3RlckltYWdlVVJMKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Cisg
ICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAjaWYg
RU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKQogICAgIGJvb2wgd2Via2l0U3VwcG9ydHNQ
cmVzZW50YXRpb25Nb2RlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgd2Via2l0U2V0
UHJlc2VudGF0aW9uTW9kZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgd2Via2l0UHJlc2Vu
dGF0aW9uTW9kZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RnVsbHNjcmVlbk1vZGUoVmlkZW9GdWxs
c2NyZWVuTW9kZSk7Ci0gICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChWaWRl
b0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZChWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKSAmJiBFTkFCTEUoVklERU9fUFJFU0VOVEFUSU9OX01PREUpCkBAIC05NSwyNSArOTUsMjUg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MVmlkZW9FbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYsIGJvb2wpOwogCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVz
aXplRXZlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVSZXNpemVFdmVu
dElmU2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05l
ZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRB
dHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXll
cigpLT5oYXNWaWRlbygpOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbihI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW1hZ2VTb3VyY2VV
UkwoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzaXplRXZlbnQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzaXplRXZlbnRJZlNpemVDaGFuZ2VkKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRh
dGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwg
TXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNWaWRlbygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcGxheWVyKCkgJiYgcGxheWVyKCktPmhhc1ZpZGVvKCk7IH0KKyAg
ICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbihIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNVUkxBdHRyaWJ1dGUoY29u
c3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBp
bWFnZVNvdXJjZVVSTCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBoYXNBdmFpbGFibGVW
aWRlb0ZyYW1lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlTdGF0ZSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXREaXNwbGF5TW9k
ZShEaXNwbGF5TW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVEaXNwbGF5U3RhdGUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1
bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREaXNwbGF5TW9kZShEaXNwbGF5TW9kZSkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJl
c2VudGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNz
aW9uOjpWaWRlbzsgfQorICAgIFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpNZWRpYVR5cGUgcHJlc2Vu
dGF0aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBsYXRmb3JtTWVkaWFTZXNzaW9u
OjpWaWRlbzsgfQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEhUTUxJbWFnZUxvYWRlcj4gbV9pbWFn
ZUxvYWRlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MV0JSRWxlbWVudC5oCmluZGV4IDcwNDc1MTZh
NzBiOWVhMjg5NDAyYmI2YzUwZmYwYTk5ZDNkMGE0MzcuLjZjY2YzYzg2MTE1MDVlOWE5NjMwMDc2
MzI2ZTNkY2YyNjllNzU3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFdC
UkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxXQlJFbGVtZW50LmgKQEAg
LTM3LDcgKzM3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MV0JSRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRUeXBlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hpZGRlbklucHV0VHlwZS5oCmluZGV4IGVlNmQzMTllMTY5MjM5
ZTJiZTY3NjBiYThlZjIzMTRjNjNiNjNiOTkuLmFlYzA3ZWIxNWJjYWI3MGI3NWE2OGY5NTQxY2E0
MDNmMWZlMzZhOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSGlkZGVuSW5wdXRU
eXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IaWRkZW5JbnB1dFR5cGUuaApAQCAtNDAs
MTkgKzQwLDE5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBIaWRkZW5JbnB1dFR5cGUoSFRNTElu
cHV0RWxlbWVudCYgZWxlbWVudCkgOiBJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xT
dGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlRm9ybUNvbnRy
b2xTdGF0ZShjb25zdCBGb3JtQ29udHJvbFN0YXRlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2Vu
ZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0
dHJpYnV0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0hpZGRlblR5cGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFJlc3BlY3RIZWln
aHRBbmRXaWR0aEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWUoY29uc3QgU3RyaW5nJiwgYm9vbCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNv
bnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRm9ybUNvbnRyb2xTdGF0ZSBzYXZlRm9ybUNvbnRyb2xTdGF0
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVzdG9yZUZvcm1Db250cm9sU3RhdGUoY29u
c3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNWYWxpZGF0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFj
Y2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdG9yZXNWYWx1ZVNlcGFyYXRl
RnJvbUF0dHJpYnV0ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNIaWRkZW5UeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0TGFiZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0
ZXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wsIFRl
eHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOworICAgIGJvb2wgYXBwZW5kRm9ybURhdGEo
Rm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAppbmRleCBmOTZlNGMw
ZGI4MWFlMjNkMjFlOGIzMWM4M2M2NmI4YmFiMjY0MzdjLi5iZjNjMTQ4MmQ5ZGZlODYxZGZkY2Y3
MmU0YjkyYjdlZTllNWM5Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdl
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAK
QEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBi
b29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVy
cmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRl
OworICAgIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kikg
b3ZlcnJpZGU7CiAKICAgICBJbWFnZURvY3VtZW50JiBtX2RvY3VtZW50OwogfTsKQEAgLTg2LDgg
Kzg2LDggQEAgcHJpdmF0ZToKIAogICAgIEltYWdlRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBj
aGFyKiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0IGNoYXIqLCBz
aXplX3QpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7CiB9OwogCiBjbGFz
cyBJbWFnZURvY3VtZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MSW1hZ2VFbGVtZW50IHsK
QEAgLTEwMiw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHZpcnR1YWwgfkltYWdl
RG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50
KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwogCiAgICAgSW1hZ2VEb2N1
bWVudCogbV9pbWFnZURvY3VtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW1hZ2VEb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmgK
aW5kZXggNWU3ZTRiZDViYzg2NjVkNmM0NTM2ZjhlOWJkY2U2ODc3ZTA4ZWVjYy4uNmVjNjgzNDYw
OTMyY2M1MDNkMGJmODQ3ZGQxN2RiNWRjMzdkYTU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURv
Y3VtZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbWFnZURv
Y3VtZW50KEZyYW1lJiwgY29uc3QgVVJMJik7CiAKLSAgICB2aXJ0dWFsIFJlZjxEb2N1bWVudFBh
cnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgUmVmPERvY3VtZW50UGFyc2VyPiBj
cmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUgaW1hZ2VTaXplKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW1hZ2VJbnB1dFR5cGUuaAppbmRleCA3MjM2ZDMxZmFhMDcwNDA3MWI1
Y2QzZjI5MzY0NDFlYmU1ZjQyMmY4Li43OWM2M2ZhNzEyMzMxZGMxNTRjZmMyZmRjYTYzM2ZmZTFl
ZDg4MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0ltYWdlSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZUlucHV0VHlwZS5oCkBAIC00MywyMiArNDMs
MjIgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEltYWdlSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1l
bnQmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNv
bnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRm9ybURhdGFB
cHBlbmRhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFwcGVuZEZvcm1E
YXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4m
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzcmNBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuQmVTdWNjZXNzZnVsU3VibWl0QnV0dG9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzSW1hZ2VCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbnVt
ZXJhdGFibGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVzcGVjdEhlaWdo
dEFuZFdpZHRoQXR0cmlidXRlcygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgaGVp
Z2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Zvcm1EYXRhQXBwZW5kYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURhdGFMaXN0JiwgYm9vbCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChF
dmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgYWx0QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc3JjQXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYXR0
YWNoKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRSZXNwZWN0QWxpZ25BdHRyaWJ1dGUoKSBv
dmVycmlkZTsKKyAgICBib29sIGNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpIG92ZXJyaWRl
OworICAgIGJvb2wgaXNJbWFnZUJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNF
bnVtZXJhdGFibGUoKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFJlc3BlY3RIZWlnaHRBbmRX
aWR0aEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBoZWlnaHQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB1bnNpZ25lZCB3aWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgSW50
UG9pbnQgbV9jbGlja0xvY2F0aW9uOyAvLyBWYWxpZCBvbmx5IGR1cmluZyBIVE1MRm9ybUVsZW1l
bnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKCkuCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9MYWJlbGFibGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJs
ZUVsZW1lbnQuaAppbmRleCBjMmE2MzFhMWU1MDY2Y2U5ODc4NGJhZjlkMDMxNWRlN2Q4NjFiNWQz
Li5kNmJiOTY5ZDk2Y2IyZmM1ZmM2Y2VjNzY3YzZiODVmMGQ4MDk2NWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0xhYmVsYWJsZUVsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgTGFiZWxhYmxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0xhYmVsYWJsZSgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzTGFiZWxhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9MYWJlbHNOb2RlTGlzdC5oCmluZGV4IGExMTlkM2IwYmY0
MDBmYWM3ODJkM2M0MDg1MzIwMzUyZmMwYjNlZWEuLjkxYjI4YTExNWEyZjUxYTRmOTBhOTM2OWY3
Njg1YWZjZTU2OWY1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTGFiZWxzTm9k
ZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0xhYmVsc05vZGVMaXN0LmgKQEAgLTM4
LDggKzM4LDggQEAgcHVibGljOgogICAgIH0KICAgICB+TGFiZWxzTm9kZUxpc3QoKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGVsZW1lbnRNYXRjaGVzKEVsZW1lbnQmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBMYWJlbHNOb2RlTGlzdChMYWJl
bGFibGVFbGVtZW50JiBmb3JOb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhQ29udHJvbGxlci5o
CmluZGV4IDQ1NjFmYWQyZWM2MThiNTYxYWNlOGExZDQxYmNjNzc4OTVlYjRmMDAuLjVlNGFhYjBh
ZDE1Y2Q3M2JmNTllZjllMGMxNDU0ZDRkOGIwYmJkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRp
YUNvbnRyb2xsZXIuaApAQCAtNTQsNjAgKzU0LDYwIEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0
cmluZyYgbWVkaWFHcm91cCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFHcm91cDsgfQogICAgIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBwbGF5ZWQoKSBv
dmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgUGFzc1JlZlB0cjxUaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gcGxheWVkKCkgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIGRvdWJsZSBkdXJhdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlKSBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgcGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYXVzZWQ7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgcGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9wYXVzZWQ7IH0KKyAgICB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhdXNlKCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCB1bnBhdXNlKCk7CiAgICAgCi0gICAgdmlydHVhbCBkb3VibGUg
ZGVmYXVsdFBsYXliYWNrUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVmYXVsdFBs
YXliYWNrUmF0ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXREZWZhdWx0UGxheWJhY2tSYXRlKGRv
dWJsZSkgb3ZlcnJpZGU7CisgICAgZG91YmxlIGRlZmF1bHRQbGF5YmFja1JhdGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2RlZmF1bHRQbGF5YmFja1JhdGU7IH0KKyAgICB2b2lkIHNldERl
ZmF1bHRQbGF5YmFja1JhdGUoZG91YmxlKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGRv
dWJsZSBwbGF5YmFja1JhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGxheWJhY2tSYXRlKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgZG91YmxlIHBsYXliYWNrUmF0ZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGxheWJhY2tSYXRlKGRvdWJsZSkgb3ZlcnJp
ZGU7CiAgICAgCi0gICAgdmlydHVhbCBkb3VibGUgdm9sdW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV92b2x1bWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhj
ZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIGRvdWJsZSB2b2x1bWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3ZvbHVtZTsgfQorICAgIHZvaWQgc2V0Vm9sdW1lKGRvdWJsZSwgRXhjZXB0
aW9uQ29kZSYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBtdXRlZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbXV0ZWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TXV0ZWQo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBtdXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fbXV0ZWQ7IH0KKyAgICB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9yZWFkeVN0YXRlOyB9CisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CiAKICAgICBlbnVtIFBsYXliYWNrU3RhdGUgeyBX
QUlUSU5HLCBQTEFZSU5HLCBFTkRFRCB9OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGxheWJh
Y2tTdGF0ZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbihI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNj
cmVlbigpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZSB7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBoYXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNDbG9z
ZWRDYXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNsb3NlZENh
cHRpb25zVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2xvc2VkQ2FwdGlvbnNW
aXNpYmxlOyB9CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0Nsb3NlZENhcHRpb25zKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBjbG9zZWRDYXB0aW9uc1Zpc2libGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZTsgfQogICAgIAotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGJlZ2lu
U2NydWJiaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFNjcnViYmluZygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNjYW5uaW5nKFNjYW5EaXJlY3Rpb24pIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOworICAgIHZv
aWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZFNjcnViYmluZygpIG92
ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZyhTY2FuRGlyZWN0aW9uKSBvdmVycmlkZTsK
KyAgICB2b2lkIGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29s
IGNhblBsYXkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblBsYXkoKSBjb25zdCBvdmVy
cmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXZlU3RyZWFtKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0xpdmVTdHJlYW0oKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzQ3VycmVudFNyYygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFz
Q3VycmVudFNyYygpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCByZXR1
cm5Ub1JlYWx0aW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXR1cm5Ub1JlYWx0aW1lKCkgb3Zl
cnJpZGU7CiAKICAgICBib29sIGlzQmxvY2tlZCgpIGNvbnN0OwogCkBAIC0xMzAsMTAgKzEzMCwx
MCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRUaW1ldXBkYXRlVGltZXIoKTsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
eyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
eyBkZXJlZigpOyB9Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdl
dEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhQ29udHJvbGxlckV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH07CisgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRl
cmVmKCk7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhQ29udHJvbGxlckV2ZW50VGFyZ2V0SW50ZXJm
YWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9OwogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAgICAgZnJpZW5kIGNs
YXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYURv
Y3VtZW50LmNwcAppbmRleCBlNjljNTNlZGM0OWRmMDA2N2YxYmE0OTk3MWY0NzM3YzY1ZjY0ODNi
Li44YmIxNjI4YmE4N2Y5ZTZkODEyOTA3YmRkYTA2MDAxMjUyZjQ1NTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFEb2N1bWVudC5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9vdXRnb2luZ1JlZmVycmVyID0gZG9jdW1lbnQub3V0Z29pbmdSZWZlcnJlcigpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRCeXRlcyhEb2N1bWVudFdyaXRlciYsIGNvbnN0
IGNoYXIqLCBzaXplX3QpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRX
cml0ZXImLCBjb25zdCBjaGFyKiwgc2l6ZV90KSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRl
RG9jdW1lbnRTdHJ1Y3R1cmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9N
ZWRpYURvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1lbnQuaAppbmRl
eCBiYTY5MTg3M2EwOWJhNThlMmI1NWNkZDVlZDIyMTU4NDZjMzQzYTY5Li5jNmQ3ZGUxNGU1NDY3
MmRlNDhjYTY0YjRiNDQ2YTgwMzEzYjA5ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRG9jdW1l
bnQuaApAQCAtNDcsOSArNDcsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lZGlhRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgUmVmPERvY3VtZW50UGFyc2Vy
PiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKKyAgICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0
ZVBhcnNlcigpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVwbGFjZU1lZGlhRWxlbWVudFRpbWVyRmlyZWQoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uaAppbmRleCA1NmU0ZjJl
Yzg4OGM1ZjhlZGVjY2QyMTRhYWE3Zjc4Nzk0MDk5MTgxLi4yOGNlNGI0MzdjOTcyZTZhZWFiMTAy
OWU0NmY4MDhjMTUwMzhjYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlh
RWxlbWVudFNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNl
c3Npb24uaApAQCAtNjIsOCArNjIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhc1BsYXli
YWNrVGFyZ2V0QXZhaWxhYmlsaXR5TGlzdGVuZXJzKGNvbnN0IEhUTUxNZWRpYUVsZW1lbnQmLCBi
b29sKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5QbGF5VG9XaXJlbGVzc1BsYXliYWNrVGFyZ2V0
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQ
bGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUGxheVRvV2lyZWxl
c3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNQbGF5aW5nVG9X
aXJlbGVzc1BsYXliYWNrVGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1lZGlh
U3RhdGVEaWRDaGFuZ2UoY29uc3QgSFRNTE1lZGlhRWxlbWVudCYsIE1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncyk7CiAjZW5kaWYKQEAgLTExMCwxMCArMTEwLDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB0YXJnZXRBdmFpbGFiaWxpdHlDaGFuZ2VkVGltZXJGaXJlZCgpOwogCiAgICAgLy8g
TWVkaWFQbGF5YmFja1RhcmdldENsaWVudAotICAgIHZpcnR1YWwgdm9pZCBzZXRQbGF5YmFja1Rh
cmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tUGxheWJhY2tBY3Rpb25TZWxlY3RlZCgp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tU
YXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5
YmFja1RhcmdldChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1c3RvbVBsYXliYWNrQWN0aW9u
U2VsZWN0ZWQoKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKICAgICBib29s
IHJlcXVpcmVzUGxheWJhY2tUYXJnZXRSb3V0ZU1vbml0b3JpbmcoKSBjb25zdCBvdmVycmlkZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFLZXlFdmVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmgKaW5kZXggMzdhNTY3MjczNDgxZTcxYzUxN2Rk
ZGY2MmM0Yzk4Yjg5ZmQ4NzFkZi4uYjE2NDMzZjQzMmE1Nzg3YTI0NjQ4NjcxZDQ3ZjA2OWFkNWY4
M2NkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUtleUV2ZW50LmgKQEAgLTU3LDcgKzU3LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUtleUV2ZW50KHR5cGUs
IGluaXRpYWxpemVyKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcga2V5U3lzdGVtKCkgY29uc3Qg
eyByZXR1cm4gbV9rZXlTeXN0ZW07IH0KICAgICBTdHJpbmcgc2Vzc2lvbklkKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXNzaW9uSWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9u
dGhJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuaAppbmRl
eCBhNGUyNWFjZDFmOWJmYmUyYzY2Njk3MDg3MWE5MDY3ODU5MGU3YmJhLi4wYjgxYTFiNmRhNzQ0
N2RkNTE3NmRmMmQwY2FlYjBmZjRjZGNlOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01vbnRoSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Nb250aElucHV0
VHlwZS5oCkBAIC00MSwxNiArNDEsMTYgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE1vbnRoSW5w
dXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZUNob29zZXJPbmx5RGF0ZUFu
ZFRpbWVJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25z
dCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RyaW5nIHNlcmlhbGl6ZVdpdGhNaWxsaXNlY29uZHMoZG91YmxlKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBjb25z
dCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBEZWNpbWFsIGRlZmF1bHRW
YWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RlcFJhbmdlIGNy
ZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25zdCBVQ2hhciosIHVuc2ln
bmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb250aEZpZWxkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBEYXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGRvdWJsZSB2YWx1ZUFzRGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFN0cmluZyBzZXJpYWxpemVXaXRoTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgRGVjaW1hbCBwYXJzZVRvTnVtYmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IERlY2ltYWwm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRs
aW5nKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVy
bmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJs
ZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTW9udGhGaWVs
ZCgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTnVtYmVySW5wdXRUeXBlLmgKaW5kZXggOWRlOWZiNWFhZGEzNzlkNjE0NTExNTI1
MDUyOThkZmNiNTk5YTU2OC4uZDljNDk1MDVhOWZiODFiOTY5YTE4Y2UwMTY5NDFmODlmNWVhNTc5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9OdW1iZXJJbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL051bWJlcklucHV0VHlwZS5oCkBAIC00MCwzMCArNDAsMzAg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IE51bWJlcklucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50
JiBlbGVtZW50KSA6IFRleHRGaWVsZElucHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wg
dmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGRvdWJsZSB2YWx1ZUFzRG91YmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZhbHVlQXNEb3VibGUoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNl
cHRpb25Db2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNE
ZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25D
b2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihj
b25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21h
dGNoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNpemVTaG91bGRJbmNsdWRl
RGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBkZWNvcmF0aW9uV2lkdGgoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdGVwcGFibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZl
bnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBT
dHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBsb2NhbGl6ZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgU3RyaW5nIHZpc2libGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RyaW5nIGNvbnZlcnRGcm9tVmlzaWJsZVZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc0JhZElucHV0KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgYmFkSW5wdXRUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXJGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBtaW5Pck1heEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VmFsdWUoY29uc3QgU3RyaW5nJiwgYm9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IpIG92ZXJyaWRlOworICAgIGRvdWJsZSB2YWx1ZUFzRG91YmxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRWYWx1ZUFzRG91YmxlKGRvdWJsZSwgVGV4dEZpZWxkRXZlbnRCZWhh
dmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWVB
c0RlY2ltYWwoY29uc3QgRGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0
U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBkZWNv
cmF0aW9uV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU3RlcHBhYmxlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxp
bmcpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJk
RXZlbnQqKSBvdmVycmlkZTsKKyAgICBEZWNpbWFsIHBhcnNlVG9OdW1iZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzZXJpYWxpemUo
Y29uc3QgRGVjaW1hbCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBsb2NhbGl6ZVZhbHVl
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB2aXNpYmxlVmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgY29udmVydEZyb21WaXNpYmxlVmFsdWUoY29u
c3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNhbml0aXplVmFsdWUoY29u
c3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNCYWRJbnB1dCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBiYWRJbnB1dFRleHQoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
TnVtYmVyRmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1pbk9yTWF4QXR0cmlidXRl
Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3RlcEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVy
cmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvUGFzc3dvcmRJbnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGFz
c3dvcmRJbnB1dFR5cGUuaAppbmRleCBmODA0NmRiMWRlYThiYjUyNGYwYjE3OWI3Mjg4MWI2MmIx
MjIzZWMwLi40OGY2NzM2MjQwMmU2ODRhNDgwZWU5ZWZhY2EzNzZmNGRlMWU5ZDdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Bhc3N3b3JkSW5wdXRUeXBlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9QYXNzd29yZElucHV0VHlwZS5oCkBAIC00MCwxNCArNDAsMTQgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IFBhc3N3b3JkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVs
ZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUoZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEZvcm1Db250cm9sU3RhdGUgc2F2ZUZv
cm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9y
ZUZvcm1Db250cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZXNldE9uRG9jdW1lbnRBY3RpdmF0aW9uKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFJlc3BlY3RMaXN0QXR0cmlidXRlKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBGb3JtQ29udHJvbFN0YXRlIHNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZShjb25zdCBGb3JtQ29u
dHJvbFN0YXRlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkUmVzZXRPbkRvY3VtZW50QWN0aXZhdGlvbigp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzUGFzc3dvcmRGaWVsZCgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVn
aW5Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcApp
bmRleCBlNzgzYTlkM2Y5ZGEyYmQ4MjlkMDg5ZDRjYzY4N2Q2Y2VhMDMyYzQ1Li4xODA3ZDllZDhk
YTEyN2UxOGVlZjM3NzgyZGJlOWQ4OGIwNDg1OTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1BsdWdpbkRvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdp
bkRvY3VtZW50LmNwcApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQnl0ZXMoRG9jdW1lbnRXcml0ZXImLCBjb25zdCBjaGFy
Kiwgc2l6ZV90KSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGVuZEJ5dGVzKERvY3VtZW50V3JpdGVy
JiwgY29uc3QgY2hhciosIHNpemVfdCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNyZWF0ZURvY3Vt
ZW50U3RydWN0dXJlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2lu
RG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAppbmRleCBh
ZTIzNzlkNWQ4YmZkZTk3NjA5NGQzMWRkM2UzZmI0NzlhZjQ5ZDdhLi5iZWY2Zjk3NTY1Y2IxMjc4
ZmJkMTAzYmQ1MGRiOWY3ZmUwYTQxZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L1BsdWdpbkRvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9QbHVnaW5Eb2N1bWVu
dC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUGx1Z2luRG9jdW1l
bnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKIAotICAgIHZpcnR1YWwgUmVmPERvY3VtZW50UGFyc2Vy
PiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKKyAgICBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0
ZVBhcnNlcigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRTaG91bGRMb2FkUGx1Z2luTWFudWFs
bHkoYm9vbCBsb2FkTWFudWFsbHkpIHsgbV9zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkgPSBsb2Fk
TWFudWFsbHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SYWRpb0lucHV0VHlwZS5oCmluZGV4IDc5NmEy
ZjA4ODI1ODg3NDZkNDk4YWU4N2YxNDZlZGM0YWFhODc3NjQuLmJlM2Y3YzEwYmZjZmU3YWNiYmZl
MzdlZjBiOTViMGNlYmM5YjQyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFk
aW9JbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvSW5wdXRUeXBlLmgK
QEAgLTQwLDE4ICs0MCwxOCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmFkaW9JbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlKGVsZW1l
bnQpIHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3Jt
Q29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNz
aW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHZh
bHVlTWlzc2luZ1RleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
Q2xpY2tFdmVudChNb3VzZUV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUtleWRvd25FdmVudChLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZUtleXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2VuZENoYW5nZUV2ZW50QWZ0ZXJDaGVja2VkQ2hhbmdl
ZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGlzcGF0Y2hDbGljayhJbnB1dEVs
ZW1lbnRDbGlja1N0YXRlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BhdGNo
Q2xpY2soRXZlbnQqLCBjb25zdCBJbnB1dEVsZW1lbnRDbGlja1N0YXRlJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzUmFkaW9CdXR0b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNJbmRldGVybWluYXRlQXBwZWFyYW5jZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxl
S2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUtl
eXVwRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOworICAgIGJvb2wgaXNLZXlib2FyZEZv
Y3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRT
ZW5kQ2hhbmdlRXZlbnRBZnRlckNoZWNrZWRDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3
aWxsRGlzcGF0Y2hDbGljayhJbnB1dEVsZW1lbnRDbGlja1N0YXRlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWREaXNwYXRjaENsaWNrKEV2ZW50KiwgY29uc3QgSW5wdXRFbGVtZW50Q2xpY2tTdGF0
ZSYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNSYWRpb0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNJbmRldGVybWluYXRlQXBwZWFyYW5jZSgpIGNvbnN0IG92ZXJyaWRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9SYWRpb05vZGVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhZGlvTm9kZUxp
c3QuaAppbmRleCBlOTA3MGYwMTBlNTgwZmQ4MWMxOTk0YzAzZjBkZWU5M2FlOTVlMjJmLi40N2E1
MDdhMTZiMmMzYWNlYzhlMWM4NTE1MTZlYmEzMmU3NmM2YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhZGlvTm9kZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jh
ZGlvTm9kZUxpc3QuaApAQCAtNDgsOCArNDgsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHZhbHVl
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGlzUm9vdGVkQXREb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNSb290ZWRBdERvY3VtZW50OyB9CisgICAgYm9vbCBlbGVtZW50TWF0Y2hlcyhFbGVtZW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Jvb3RlZEF0RG9jdW1lbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2lzUm9vdGVkQXREb2N1bWVudDsgfQogCiBwcml2YXRlOgogICAgIFJh
ZGlvTm9kZUxpc3QoQ29udGFpbmVyTm9kZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1JhbmdlSW5wdXRUeXBlLmgKaW5kZXggZDAzYzcxOThhZWJhZGFlNjk2ZWFk
ZmMxZDEwMTQ4ODJjYmQzZmRhYy4uZGExOGQxZmUyMmVhZmZkOTEzYzY4MDUzZjYxZjc3YWRlNTUy
NzJlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9SYW5nZUlucHV0VHlwZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmFuZ2VJbnB1dFR5cGUuaApAQCAtNDIsNTAgKzQyLDUw
IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBSYW5nZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50
Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmFuZ2VDb250cm9sKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZG91YmxlIHZhbHVlQXNEb3VibGUoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc0RlY2ltYWwoY29uc3Qg
RGVjaW1hbCYsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0cmluZyYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1JlcXVpcmVkKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3RlcFJhbmdlKEFueVN0
ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU3RlcHBhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JhbmdlQ29udHJvbCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgZG91YmxlIHZhbHVlQXNEb3VibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFZhbHVlQXNEZWNpbWFsKGNvbnN0IERlY2ltYWwmLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB0eXBlTWlzbWF0
Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1Jl
cXVpcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTdGVwcGFibGUoKSBj
b25zdCBvdmVycmlkZTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBoYW5k
bGVNb3VzZURvd25FdmVudChNb3VzZUV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVN
b3VzZURvd25FdmVudChNb3VzZUV2ZW50Kikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1
YnRyZWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25z
dCBTdHJpbmcmLCBjb25zdCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBT
dHJpbmcgc2VyaWFsaXplKGNvbnN0IERlY2ltYWwmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWNjZXNzS2V5QWN0aW9uKGJvb2wgc2VuZE1vdXNlRXZlbnRzKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2Vk
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBm
YWxsYmFja1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2FuaXRp
emVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgSFRNTEVsZW1lbnQqIHNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50KEtleWJvYXJkRXZlbnQqKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlU2hhZG93U3VidHJl
ZSgpIG92ZXJyaWRlOworICAgIERlY2ltYWwgcGFyc2VUb051bWJlcihjb25zdCBTdHJpbmcmLCBj
b25zdCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNlcmlhbGl6ZShjb25z
dCBEZWNpbWFsJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9v
bCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOworICAgIHZvaWQgbWluT3JNYXhBdHRyaWJ1dGVD
aGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWYWx1ZShjb25zdCBTdHJpbmcmLCBib29s
IHZhbHVlQ2hhbmdlZCwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvcikgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIGZhbGxiYWNrVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2FuaXRpemVW
YWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBvdmVycmlkZTsKKyAgICBIVE1MRWxlbWVu
dCogc2xpZGVyVGh1bWJFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSFRNTEVsZW1lbnQq
IHNsaWRlclRyYWNrRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU2xpZGVyVGh1bWJF
bGVtZW50JiB0eXBlZFNsaWRlclRodW1iRWxlbWVudCgpIGNvbnN0OwogCiAjaWYgRU5BQkxFKERB
VEFMSVNUX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2b2lkIGxpc3RBdHRyaWJ1dGVUYXJnZXRDaGFu
Z2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsaXN0QXR0cmlidXRlVGFyZ2V0Q2hhbmdlZCgpIG92
ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlVGlja01hcmtWYWx1ZXMoKTsKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPERlY2ltYWw+IGZpbmRDbG9zZXN0VGlja01hcmtWYWx1ZShjb25zdCBEZWNpbWFsJikg
b3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8RGVjaW1hbD4gZmluZENsb3Nlc3RUaWNrTWFya1ZhbHVl
KGNvbnN0IERlY2ltYWwmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgbV90aWNrTWFya1ZhbHVlc0Rp
cnR5OwogICAgIFZlY3RvcjxEZWNpbWFsPiBtX3RpY2tNYXJrVmFsdWVzOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVUb3VjaEV2ZW50
KFRvdWNoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZVRvdWNoRXZlbnQoVG91Y2hF
dmVudCopIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2FibGVkQXR0
cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwogI2Vsc2UKICNpZiBFTkFCTEUoVE9VQ0hfU0xJREVS
KQotICAgIHZpcnR1YWwgYm9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaGFzVG91Y2hFdmVudEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRp
ZgogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKICNlbmRpZiAvLyBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9SZXNldElucHV0VHlwZS5oCmluZGV4IDA1ZTM1Mzk1ZThiZmM4MmI5
NjVlNjZjZWE2YmIzODg4YzcwYmQxZmUuLmViMDFmNWI2NmU4NGE1MTk2NjFmYzBlYjEwYTQ3ZjVk
NzE3MmJlZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUmVzZXRJbnB1dFR5cGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Jlc2V0SW5wdXRUeXBlLmgKQEAgLTQwLDExICs0
MCwxMSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgUmVzZXRJbnB1dFR5cGUoSFRNTElucHV0RWxl
bWVudCYgZWxlbWVudCkgOiBCYXNlQnV0dG9uSW5wdXRUeXBlKGVsZW1lbnQpIHsgfQogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZURPTUFjdGl2YXRlRXZlbnQoRXZl
bnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBkZWZhdWx0VmFsdWUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0QnV0dG9uKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgaGFuZGxlRE9NQWN0aXZhdGVFdmVudChFdmVudCopIG92ZXJyaWRlOworICAgIFN0cmluZyBk
ZWZhdWx0VmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVGV4dEJ1dHRvbigpIGNv
bnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9S
dWJ5RWxlbWVudC5oCmluZGV4IGQ1YjAyZWQ2MjA1NDQ2ZTlhZjQ3NGM4MjJhMDYzOTgzNTEyMzhj
OTAuLjM3MTRmNGNmOTU5N2E1YWEzNDY4NWMxOWQ5NjYzN2NhMTAwZjcwNjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvUnVieUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1J1YnlFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIFJ1YnlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIHZp
cnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1J1YnlUZXh0RWxlbWVudC5oCmluZGV4IGJmYjZiYzVlNTg1ZjRhOTM0
ZGRjMjQxOTJmODMzYzVhNGRmYWM4ZTcuLjEyMGE0MGJiMzhhYjIxNjI4NDM2ZTZmM2EzMjQwZDIz
MzdmZDNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvUnVieVRleHRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9SdWJ5VGV4dEVsZW1lbnQuaApAQCAtMzYsNyAr
MzYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUnVieVRleHRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1NlYXJjaElu
cHV0VHlwZS5oCmluZGV4IDlkYTA3OWQ1ZmVjNWQ5ZmFkNzJmMTA1ZmM3NjI4OGYyZDU4NmI2ZGIu
LjZmZjhjOWU1MWNkOGJlMTYyMjMyZmE2ZTgxZmMwYzIyYzliMDcwNDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvU2VhcmNoSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9TZWFyY2hJbnB1dFR5cGUuaApAQCAtNDYsMjAgKzQ2LDIwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0b3BTZWFyY2hFdmVudFRpbWVyKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IGFkZFNlYXJjaFJlc3VsdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYXhSZXN1bHRz
QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUlucHV0UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU2VhcmNoRmllbGQoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250YWluZXIoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
SFRNTEVsZW1lbnQqIHJlc3VsdHNCdXR0b25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBIVE1MRWxlbWVudCogY2FuY2VsQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZXRWYWx1ZUJ5VXNlckVkaXQoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZh
dWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGZsb2F0IGRlY29yYXRpb25XaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWRkU2Vh
cmNoUmVzdWx0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXhSZXN1bHRzQXR0cmlidXRlQ2hhbmdl
ZCgpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJikgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2VhcmNo
RmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVTaGFkb3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZXN0cm95U2hhZG93U3VidHJlZSgpIG92ZXJyaWRlOworICAgIEhUTUxFbGVtZW50KiBy
ZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEhUTUxFbGVtZW50KiBj
YW5jZWxCdXR0b25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVLZXlk
b3duRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2V0VmFsdWVC
eVVzZXJFZGl0KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRp
b24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGZsb2F0IGRlY29yYXRpb25XaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZWFyY2hFdmVudFRpbWVyRmlyZWQoKTsKICAgICBib29sIHNlYXJjaEV2ZW50c1Nob3VsZEJlRGlz
cGF0Y2hlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9TdWJtaXRJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvU3VibWl0SW5wdXRUeXBlLmgKaW5kZXgg
NjhmNzhiNjYzNmU3MzM3M2IzYTkzZjI0ZjJjZWM1YTkwNDhiMGVlOC4uZmE1Zjk0OWRiYjNmYWI2
ZjRhNGU5MjBkMzU2N2Q4Nzk1ZmQzY2NkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9TdWJtaXRJbnB1dFR5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1N1Ym1pdElucHV0
VHlwZS5oCkBAIC00MCwxNCArNDAsMTQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFN1Ym1pdElu
cHV0VHlwZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VCdXR0b25JbnB1dFR5cGUo
ZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhcHBl
bmRGb3JtRGF0YShGb3JtRGF0YUxpc3QmLCBib29sKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGNhbkJlU3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RyaW5nIGRlZmF1bHRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc1N1Ym1pdEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Rl
eHRCdXR0b24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9y
bURhdGFMaXN0JiwgYm9vbCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1JlcXVp
cmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2
ZW50Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5CZVN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24oKSBv
dmVycmlkZTsKKyAgICBTdHJpbmcgZGVmYXVsdFZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1N1Ym1pdEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUZXh0QnV0
dG9uKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlucHV0VHlwZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9UZWxlcGhvbmVJbnB1dFR5cGUuaAppbmRleCBjNTY0NjcxNDYxODdjOGI0
MzQ0MWQzODEyNTQ4MGVlZmExYmI2N2VjLi5kN2IyNDc4YWFkMjdhMmY0ZDNmOGU5ODMzNTY3M2I0
ZmViYjQ5YzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RlbGVwaG9uZUlucHV0
VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGVsZXBob25lSW5wdXRUeXBlLmgKQEAg
LTQwLDggKzQwLDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRlbGVwaG9uZUlucHV0VHlwZShI
VE1MSW5wdXRFbGVtZW50JiBlbGVtZW50KSA6IEJhc2VUZXh0SW5wdXRUeXBlKGVsZW1lbnQpIHsg
fQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJv
bFR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUZWxlcGhvbmVGaWVs
ZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xU
eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RlbGVwaG9uZUZpZWxkKCkgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
RG9jdW1lbnQuaAppbmRleCBkOTQ3ZDc1NTRhZWYyY2I1YTgzNmQyNTdhYjgzYzg4YTNjNjMzZWZk
Li5jZDFjY2IzODA2YjYzNjJkYjRhYWY5NzJkODhlODNhMzNkMzFkMDA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHREb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dERvY3VtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBUZXh0RG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwmKTsKICAgICAKLSAgICB2aXJ0dWFsIFJl
ZjxEb2N1bWVudFBhcnNlcj4gY3JlYXRlUGFyc2VyKCkgb3ZlcnJpZGU7CisgICAgUmVmPERvY3Vt
ZW50UGFyc2VyPiBjcmVhdGVQYXJzZXIoKSBvdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5oCmluZGV4IDY4NzM3ODM4NDViMTA1NjBjNDkwYzNm
OGUzOTJiOGFkMjk3MDgwOTIuLjJkODI2N2ZiNjRkNzFlYWY0MGFlYzZmOTVhMDdkMzQ4NWNhM2Qy
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuaApAQCAtNDYsNjEg
KzQ2LDYxIEBAIGNsYXNzIFRleHRGaWVsZElucHV0VHlwZSA6IHB1YmxpYyBJbnB1dFR5cGUsIHBy
b3RlY3RlZCBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgVGV4dEZpZWxkSW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmKTsKICAgICB2aXJ0dWFsIH5U
ZXh0RmllbGRJbnB1dFR5cGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5ZG93bkV2ZW50
KEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUtleWRvd25FdmVudChL
ZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBoYW5kbGVLZXlkb3duRXZlbnRGb3JT
cGluQnV0dG9uKEtleWJvYXJkRXZlbnQqKTsKIAotICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGNv
bnRhaW5lckVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIEhUTUxF
bGVtZW50KiBpbm5lckJsb2NrRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBIVE1MRWxlbWVudCogaW5uZXJTcGluQnV0
dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgSFRNTEVsZW1l
bnQqIGNhcHNMb2NrSW5kaWNhdG9yRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgSFRNTEVsZW1lbnQqIGF1dG9GaWxsQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIEhUTUxFbGVtZW50KiBjb250YWluZXJFbGVtZW50KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CisgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBpbm5lclRl
eHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgSFRNTEVsZW1lbnQqIGlubmVy
U3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBIVE1MRWxlbWVu
dCogY2Fwc0xvY2tJbmRpY2F0b3JFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
SFRNTEVsZW1lbnQqIGF1dG9GaWxsQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG5lZWRzQ29udGFpbmVyKCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVhZG9ubHlBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2
b2lkIGNyZWF0ZVNoYWRvd1N1YnRyZWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lTaGFk
b3dTdWJ0cmVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCBkaXNhYmxlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIHJlYWRvbmx5QXR0cmlidXRlQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFs
OworICAgIGJvb2wgc3VwcG9ydHNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogICAg
IHZvaWQgaGFuZGxlRm9jdXNFdmVudChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgRm9jdXNEaXJlY3Rp
b24pIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoY29uc3QgU3RyaW5nJiwg
Ym9vbCB2YWx1ZUNoYW5nZWQsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVJbm5lclRleHRWYWx1ZSgpIG92ZXJyaWRlIGZpbmFsOwotICAg
IHZpcnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBoYW5kbGVCbHVyRXZlbnQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYsIGJvb2wgdmFsdWVDaGFuZ2VkLCBUZXh0RmllbGRFdmVu
dEJlaGF2aW9yKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUlubmVyVGV4dFZhbHVlKCkgb3Zl
cnJpZGUgZmluYWw7CisgICAgU3RyaW5nIHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFN0cmluZyBjb252ZXJ0RnJvbVZpc2libGVWYWx1
ZShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0VmFsdWVCeVVz
ZXJFZGl0KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9v
bCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBi
b29sIGlzVGV4dEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29s
IGlzRW1wdHlWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCB2
YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGhhbmRsZUJlZm9yZVRleHRJbnNlcnRlZEV2ZW50KEJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50Kikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGZvcndhcmRFdmVudChF
dmVudCopIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdWJtaXRJbXBs
aWNpdGx5KEV2ZW50Kikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlSW5wdXRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRSZXNwZWN0TGlzdEF0dHJpYnV0ZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIHBsYWNlaG9sZGVyRWxlbWVudCgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQo
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kRm9ybURhdGEoRm9ybURh
dGFMaXN0JiwgYm9vbCBtdWx0aXBhcnQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgdm9pZCBzdWJ0cmVlSGFzQ2hhbmdlZCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwg
dm9pZCBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQXV0b0ZpbGxCdXR0b24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICBi
b29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0IG92ZXJyaWRlIGZp
bmFsOworICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwor
ICAgIGJvb2wgaXNUZXh0RmllbGQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGlz
RW1wdHlWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgdmFsdWVNaXNzaW5n
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgaGFuZGxlQmVm
b3JlVGV4dEluc2VydGVkRXZlbnQoQmVmb3JlVGV4dEluc2VydGVkRXZlbnQqKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIGZvcndhcmRFdmVudChFdmVudCopIG92ZXJyaWRlIGZpbmFsOworICAg
IGJvb2wgc2hvdWxkU3VibWl0SW1wbGljaXRseShFdmVudCopIG92ZXJyaWRlIGZpbmFsOworICAg
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVJbnB1dFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRVc2VJbnB1dE1ldGhvZCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkUmVzcGVjdExpc3RBdHRyaWJ1dGUoKSBvdmVycmlk
ZTsKKyAgICBIVE1MRWxlbWVudCogcGxhY2Vob2xkZXJFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdm9pZCB1cGRhdGVQbGFjZWhvbGRlclRleHQoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICBib29sIGFwcGVuZEZvcm1EYXRhKEZvcm1EYXRhTGlzdCYsIGJvb2wgbXVsdGlwYXJ0KSBj
b25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCkgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCBjYXBzTG9ja1N0YXRlTWF5SGF2ZUNoYW5nZWQoKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUF1dG9GaWxsQnV0dG9uKCkgb3ZlcnJpZGUgZmluYWw7
CiAKICAgICAvLyBTcGluQnV0dG9uRWxlbWVudDo6U3BpbkJ1dHRvbk93bmVyIGZ1bmN0aW9ucy4K
LSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNBbmRTZWxlY3RTcGluQnV0dG9uT3duZXIoKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3BpbkJ1dHRvblJlc3BvbmRUb01vdXNl
RXZlbnRzKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNwaW5CdXR0
b25SZXNwb25kVG9XaGVlbEV2ZW50cygpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9p
ZCBzcGluQnV0dG9uU3RlcERvd24oKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQg
c3BpbkJ1dHRvblN0ZXBVcCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZm9jdXNBbmRTZWxl
Y3RTcGluQnV0dG9uT3duZXIoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHNob3VsZFNwaW5C
dXR0b25SZXNwb25kVG9Nb3VzZUV2ZW50cygpIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgc2hv
dWxkU3BpbkJ1dHRvblJlc3BvbmRUb1doZWVsRXZlbnRzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBzcGluQnV0dG9uU3RlcERvd24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHNwaW5C
dXR0b25TdGVwVXAoKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIC8vIEF1dG9GaWxsQnV0dG9uRWxl
bWVudDo6QXV0b0ZpbGxCdXR0b25Pd25lcgotICAgIHZpcnR1YWwgdm9pZCBhdXRvRmlsbEJ1dHRv
bkVsZW1lbnRXYXNDbGlja2VkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBhdXRvRmlsbEJ1
dHRvbkVsZW1lbnRXYXNDbGlja2VkKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBib29sIHNob3Vs
ZEhhdmVTcGluQnV0dG9uKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRp
Y2F0b3IoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dElucHV0
VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmgKaW5kZXggYWJjNWY0
OGE4MzU2NzhmYmI4MWY4NTRmZmNmYTk0MmFkZDIxOTU4NS4uZTY5MTliMTI1NzQ2MGQwYTlhMWFm
OWM1NTMwNTFhZmViNmNmOWQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0
SW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0SW5wdXRUeXBlLmgKQEAg
LTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFRleHRJbnB1dFR5cGUoSFRNTElu
cHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlVGV4dElucHV0VHlwZShlbGVtZW50KSB7IH0KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgKaW5kZXggMWYxNDYyYWY5NDdhYTI4MGE0OGY1ZDFiNDM1
ZGUyZTZjODMxM2JkYi4uMWEzNzI2YzRiODYyOWM1YzEzOTg0MDU2MjM4NWI0ODE0MzUxMDcyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmgKQEAgLTQxLDEzICs0MSwxMyBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgVGltZUlucHV0VHlwZShIVE1MSW5wdXRFbGVtZW50Jik7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5
cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIERlY2ltYWwgZGVmYXVsdFZhbHVlRm9y
U3RlcFVwKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdGVwUmFuZ2UgY3JlYXRlU3Rl
cFJhbmdlKEFueVN0ZXBIYW5kbGluZykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVu
Z3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBz
ZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBvbmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1RpbWVGaWVsZCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgRGF0ZUNvbXBvbmVudHM6OlR5cGUgZGF0ZVR5cGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBEZWNpbWFsIGRlZmF1bHRWYWx1ZUZvclN0ZXBVcCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFN0ZXBSYW5nZSBjcmVhdGVTdGVwUmFuZ2UoQW55U3RlcEhhbmRsaW5nKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHBhcnNlVG9EYXRlQ29tcG9uZW50c0ludGVybmFsKGNvbnN0IFVDaGFy
KiwgdW5zaWduZWQgbGVuZ3RoLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJsZSwgRGF0ZUNvbXBvbmVu
dHMqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVGltZUZpZWxkKCkgY29uc3Qgb3ZlcnJp
ZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1VSTElucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxJbnB1dFR5
cGUuaAppbmRleCBiZGM5NmEyZmY2NjFiM2IxZWMzNjAwOGU0NWE0NDMwNjM1YzE4ZWNkLi44Y2E3
MWY2MmIxN2IyYTBmYWU3YTU2OTllMjVlY2FlZGJiYmZiMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1VSTElucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJM
SW5wdXRUeXBlLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgVVJM
SW5wdXRUeXBlKEhUTUxJbnB1dEVsZW1lbnQmIGVsZW1lbnQpIDogQmFzZVRleHRJbnB1dFR5cGUo
ZWxlbWVudCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IGZvcm1Db250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB0eXBl
TWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHR5
cGVNaXNtYXRjaFRleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNVUkxG
aWVsZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNhbml0aXplVmFsdWUo
Y29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBm
b3JtQ29udHJvbFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHR5cGVNaXNtYXRjaEZv
cihjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHR5cGVNaXNtYXRjaCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1VSTEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IHNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1dlZWtJ
bnB1dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5oCmluZGV4IDRl
YTZjNTZjYjBmMWQxNjE0MzVmYTI1NjY0YmQyMTMyMDJhOGRlNWIuLjcwZWI0OTBjMThiNTlhOTg1
MTI0ZDg0NWUyOTFkNmIyOTI4ZjU4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
V2Vla0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvV2Vla0lucHV0VHlwZS5o
CkBAIC00MSwxMiArNDEsMTIgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlZWtJbnB1dFR5cGUo
SFRNTElucHV0RWxlbWVudCYgZWxlbWVudCkgOiBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlu
cHV0VHlwZShlbGVtZW50KSB7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21p
Y1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBE
YXRlQ29tcG9uZW50czo6VHlwZSBkYXRlVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShBbnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVRvRGF0ZUNvbXBvbmVudHNJbnRlcm5hbChjb25z
dCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0TWlsbGlzZWNvbmRUb0RhdGVDb21wb25lbnRzKGRvdWJs
ZSwgRGF0ZUNvbXBvbmVudHMqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNX
ZWVrRmllbGQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1D
b250cm9sVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIERhdGVDb21wb25lbnRzOjpUeXBlIGRh
dGVUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RlcFJhbmdlIGNyZWF0ZVN0ZXBSYW5nZShB
bnlTdGVwSGFuZGxpbmcpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2VUb0RhdGVDb21w
b25lbnRzSW50ZXJuYWwoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgsIERhdGVDb21wb25l
bnRzKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRNaWxsaXNlY29uZFRvRGF0ZUNvbXBv
bmVudHMoZG91YmxlLCBEYXRlQ29tcG9uZW50cyopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNXZWVrRmllbGQoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCmluZGV4IDhiNzZkZGY2NThiZjdlYTBjZjcxYjZjOWZmZDBiMWYyMDMx
NDI2MzguLmVmZGFjMDYyNTk1YTUzMmE0ZjFkZWUwNTc5Y2JmYmQyYzZkZjkyZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogYykgb3ZlcnJpZGUKKyAg
ICB2b2lkIHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogYykgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGMtPnNldFN0cm9rZVRoaWNrbmVzcyhtX2NhbnZhc0NvbnRleHQtPmxpbmVXaWR0aCgp
KTsKICAgICAgICAgYy0+c2V0TGluZUNhcChtX2NhbnZhc0NvbnRleHQtPmdldExpbmVDYXAoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRC5oCmluZGV4IGEzMzQ4NzNkYzNhMzI5NzFiZmUwNWUxODIxMGExYzdmMjZjNWNhY2Uu
LjM0ZjYyMjMxZGExM2NjMGEyMmRiMjU5OGIwYWZjNGVjODhhYTJlZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBA
IC0yNjksNyArMjY5LDcgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
dXBkYXRlKEZvbnRTZWxlY3RvciYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZm9udHNOZWVkVXBk
YXRlKEZvbnRTZWxlY3RvciYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGZvbnRzTmVlZFVwZGF0
ZShGb250U2VsZWN0b3ImKSBvdmVycmlkZTsKIAogICAgICAgICBGb250Q2FzY2FkZSBtX2ZvbnQ7
CiAgICAgfTsKQEAgLTM4NCwxNCArMzg0LDE0IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEltYWdl
RGF0YT4gZ2V0SW1hZ2VEYXRhKEltYWdlQnVmZmVyOjpDb29yZGluYXRlU3lzdGVtLCBmbG9hdCBz
eCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIHZvaWQgcHV0SW1hZ2VEYXRhKEltYWdlRGF0YSosIEltYWdlQnVmZmVyOjpDb29yZGluYXRl
U3lzdGVtLCBmbG9hdCBkeCwgZmxvYXQgZHksIGZsb2F0IGRpcnR5WCwgZmxvYXQgZGlydHlZLCBm
bG9hdCBkaXJ0eVdpZHRoLCBmbG9hdCBkaXJ0eUhlaWdodCwgRXhjZXB0aW9uQ29kZSYpOwogCi0g
ICAgdmlydHVhbCBib29sIGlzMmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzMmQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0FjY2Vs
ZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzSW52ZXJ0aWJs
ZVRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRlKCkuaGFzSW52ZXJ0aWJs
ZVRyYW5zZm9ybTsgfQorICAgIGJvb2wgaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHN0YXRlKCkuaGFzSW52ZXJ0aWJsZVRyYW5zZm9ybTsgfQogICAgIFRl
eHREaXJlY3Rpb24gdG9UZXh0RGlyZWN0aW9uKERpcmVjdGlvbiwgUmVuZGVyU3R5bGUqKiBjb21w
dXRlZFN0eWxlID0gbnVsbHB0cikgY29uc3Q7CiAKICNpZiBFTkFCTEUoQUNDRUxFUkFURURfMkRf
Q0FOVkFTKQotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IG92ZXJyaWRlOworICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgVmVjdG9yPFN0YXRlLCAxPiBtX3N0YXRlU3RhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRCbGVuZE1pbk1heC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUQmxlbmRNaW5NYXguaAppbmRleCA4YmQ4YzkzM2Q3
ZWJkMDA3Y2I3YzU4YTA1ZGFiNzQxZjY3MjEyZWQxLi44NDZjYjQ3NzFlNzBkOTdiMTQ4Y2Y1NGMz
ZmUzYWIyZDYwYzJhZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9F
WFRCbGVuZE1pbk1heC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVEJsZW5k
TWluTWF4LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEVYVEJsZW5k
TWluTWF4KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5FWFRCbGVu
ZE1pbk1heCgpOwogCi0gICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0VYVEZyYWdEZXB0aC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhU
RnJhZ0RlcHRoLmgKaW5kZXggMGEzNzM1NTI2Yzc5YWVjOGQxMWE1Y2E3Y2M1OGQwNjFmMzJjYmY4
Yi4uZTdhZDYwOThjMTZhM2VlMDdmYjZmZWFmZjFmYWI2YTQzNDY0MDQwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvRVhURnJhZ0RlcHRoLmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGlj
OgogICAgIGV4cGxpY2l0IEVYVEZyYWdEZXB0aChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7
CiAgICAgdmlydHVhbCB+RVhURnJhZ0RlcHRoKCk7CiAKLSAgICB2aXJ0dWFsIEV4dGVuc2lvbk5h
bWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgp
IGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUU2hhZGVyVGV4dHVyZUxPRC5oCmluZGV4IDMwYmIy
MzhiZmM3MzFiNTVkY2JjNzVkZDFhYWVkNWEzYmNjM2E3Y2EuLjJjZDU1NGIyMDkzZDdkYjI0NjE5
YjJiMTg2OTA1YzBhY2RlZWYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0VYVFNoYWRlclRleHR1cmVMT0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9FWFRTaGFkZXJUZXh0dXJlTE9ELmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IEVYVFNoYWRlclRleHR1cmVMT0QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwog
ICAgIHZpcnR1YWwgfkVYVFNoYWRlclRleHR1cmVMT0QoKTsKIAotICAgIHZpcnR1YWwgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXRO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRUZXh0dXJlRmlsdGVyQW5pc290
cm9waWMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlz
b3Ryb3BpYy5oCmluZGV4IGNlNjE1Zjk5ZmRmOWMwY2U1OTc5ZmMyNWVhYzNjMDgwYzBkMmViNGUu
LjAxMTE1OWUyMzJlYjJjYjU0ZTg2MjlkODhlYzRiY2RkYzE1YTZhNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3Bp
Yy5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBFWFRUZXh0dXJlRmls
dGVyQW5pc290cm9waWMoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1YWwg
fkVYVFRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYygpOwogCi0gICAgdmlydHVhbCBFeHRlbnNpb25O
YW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0VYVHNSR0IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0VYVHNSR0IuaAppbmRleCAwNzAxNGIzZDVjNDBiMWNkMjhlZTI5YTAwMjM3
NDFlMWFlZDlmOTNhLi44NDdmOWUxNmEwMTBhZTdlYTkxNTNiM2I2MzU3ZmI5MDQ0YjgyODkwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9FWFRzUkdCLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvRVhUc1JHQi5oCkBAIC0zNSw3ICszNSw3IEBAIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBFWFRzUkdCKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAg
ICB2aXJ0dWFsIH5FWFRzUkdCKCk7CiAKLSAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTRWxlbWVudEluZGV4VWludC5oCmluZGV4IGI0Y2Y4YTRhZDJlYjcx
Y2E1NTcxODNiNTBiMDk2ZTczNzZlODNkNmUuLjQzZGNmMjhhNWNhMzkxZmE2Njg3OTM1M2Y1OTA4
NzJjZDdlN2E4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU0Vs
ZW1lbnRJbmRleFVpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNFbGVt
ZW50SW5kZXhVaW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IE9F
U0VsZW1lbnRJbmRleFVpbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogICAgIHZpcnR1
YWwgfk9FU0VsZW1lbnRJbmRleFVpbnQoKTsKIAotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmgKaW5kZXggZmYx
ZDRhYjVkZjBiYWFiM2Q4NzJjYmU0ZjhhNWQ0MzI0ZGUyZGM1Mi4uYzE1ODQyN2M0ZmJmZjM1NmZl
OTYwMTQ0NjFlZTczMTYxMzNiNTRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1N0YW5kYXJkRGVyaXZhdGl2ZXMuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgT0VTU3RhbmRhcmREZXJpdmF0aXZlcyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKik7CiAgICAgdmlydHVhbCB+T0VTU3RhbmRhcmREZXJpdmF0aXZlcygpOwogCi0gICAg
dmlydHVhbCBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFeHRl
bnNpb25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1
cmVGbG9hdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgK
aW5kZXggMjRhMDgxOTJiZmE3NDA0ZDRhNzhmODAxNDg0NTdjY2NkMmM0NThkOS4uZjc4Zjc0MDg4
NDIzOWMxYjFkOTM0OTQ0YjM5ZGU2ZmVlZjA4OTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogICAg
IE9FU1RleHR1cmVGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmlydHVh
bCB+T0VTVGV4dHVyZUZsb2F0KCk7CiAKLSAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUZsb2F0TGluZWFyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlRmxvYXRMaW5lYXIuaAppbmRleCAwODhhZmM4YTA0
NzcxZDI5NzM1MDlhN2Y0MjVhYWYyNzNkMjI3MTQ5Li41YWIzN2U3YWY2Y2Q2Y2I0NzRjYjcyMTUz
ZmI2YjNlNGMzNjU2YWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXRMaW5lYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
RVNUZXh0dXJlRmxvYXRMaW5lYXIuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgT0VTVGV4dHVyZUZsb2F0TGluZWFyKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsK
ICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlRmxvYXRMaW5lYXIoKTsKIAotICAgIHZpcnR1YWwgRXh0
ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0LmgKaW5k
ZXggY2U3ZWU1MmRlYmM0MDk5NGQ4MDM1MGYyNDM3OGM3ZDAyNGJjMTUzMC4uNDcxOThmYTliYmZl
NjZiMzM3ODMzZTM1OGY1NGY3NjZhYzNkYmJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXQuaApAQCAtMzUsNyArMzUsNyBAQCBwdWJsaWM6
CiAgICAgT0VTVGV4dHVyZUhhbGZGbG9hdChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAg
ICAgdmlydHVhbCB+T0VTVGV4dHVyZUhhbGZGbG9hdCgpOwogCi0gICAgdmlydHVhbCBFeHRlbnNp
b25OYW1lIGdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFeHRlbnNpb25OYW1lIGdldE5h
bWUoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1RleHR1cmVIYWxmRmxvYXRMaW5l
YXIuaAppbmRleCBlNDY5NDQ4MDZkMGE4ODI3ZThiNjEzZGRjN2FkMWM3MzQ4MTRjYTliLi4zMTNl
ZDBkNDM3ZTVhMmQ5ZTBlYTdlZTUxOTU0ZWI4MmY3NzlmYmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9PRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVGV4dHVyZUhhbGZGbG9hdExpbmVhci5oCkBAIC0z
NSw3ICszNSw3IEBAIHB1YmxpYzoKICAgICBPRVNUZXh0dXJlSGFsZkZsb2F0TGluZWFyKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAgICB2aXJ0dWFsIH5PRVNUZXh0dXJlSGFsZkZsb2F0
TGluZWFyKCk7CiAKLSAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmgKaW5kZXggNTFlOGEwNmExZmMyZWQzMzZkNGYzYjBl
Y2JiYTI1MWMzNGM0Mjk2Yy4uNzRlYTdmM2QzYTllNmRhNWZiOTBlMWEwMzA5Nzc3NThmYzdjZmY2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4QXJyYXlP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9i
amVjdC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBPRVNWZXJ0ZXhBcnJheU9iamVj
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmlydHVhbCB+T0VTVmVydGV4QXJy
YXlPYmplY3QoKTsKIAotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgUGFzc1JlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTPiBjcmVhdGVWZXJ0
ZXhBcnJheU9FUygpOwogICAgIHZvaWQgZGVsZXRlVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDlkOTBlOTVlZTM4YWVkOWU4NjU4ODMyZmM1NjY4
NDg3NzkyNDJhN2QuLmNlZjc0NzRlMjQyOTc1OGJkMDZjYjQ0MWU1NGJlM2RhYmQ3OTk5NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmgKQEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCBmaW5h
bCA6IHB1YmxpYyBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlIHsKIHB1YmxpYzoKICAgICBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0KEhUTUxDYW52YXNFbGVtZW50KiwgR3JhcGhpY3NDb250ZXh0M0Q6
OkF0dHJpYnV0ZXMpOwogICAgIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQoSFRNTENhbnZhc0VsZW1l
bnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdMMigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViR0wyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgLyogQnVmZmVyIG9iamVjdHMgKi8KICAgICB2b2lkIGNvcHlCdWZm
ZXJTdWJEYXRhKEdDM0RlbnVtIHJlYWRUYXJnZXQsIEdDM0RlbnVtIHdyaXRlVGFyZ2V0LCBHQzNE
aW50NjQgcmVhZE9mZnNldCwgR0MzRGludDY0IHdyaXRlT2Zmc2V0LCBHQzNEaW50NjQgc2l6ZSk7
CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGdldEJ1ZmZlclN1YkRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50NjQgb2Zmc2V0LCBBcnJheUJ1ZmZlciogcmV0dXJuZWREYXRh
KTsKICAgICAKICAgICAvKiBGcmFtZWJ1ZmZlciBvYmplY3RzICovCi0gICAgdmlydHVhbCBXZWJH
TEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKKyAgICBXZWJHTEdldEluZm8gZ2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1l
dGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcG5hbWUs
IEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICAgICB2b2lkIGJsaXRGcmFtZWJ1ZmZlcihHQzNE
aW50IHNyY1gwLCBHQzNEaW50IHNyY1kwLCBHQzNEaW50IHNyY1gxLCBHQzNEaW50IHNyY1kxLCBH
QzNEaW50IGRzdFgwLCBHQzNEaW50IGRzdFkwLCBHQzNEaW50IGRzdFgxLCBHQzNEaW50IGRzdFkx
LCBHQzNEYml0ZmllbGQgbWFzaywgR0MzRGVudW0gZmlsdGVyKTsKICAgICB2b2lkIGZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0Mz
RHVpbnQgdGV4dHVyZSwgR0MzRGludCBsZXZlbCwgR0MzRGludCBsYXllcik7CiAgICAgV2ViR0xH
ZXRJbmZvIGdldEludGVybmFsZm9ybWF0UGFyYW1ldGVyKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVu
dW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIHBuYW1lKTsKQEAgLTk5LDcgKzk5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdmVydGV4QXR0cmliSVBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0Rp
bnQgc2l6ZSwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludDY0IG9mZnNl
dCk7CiAgICAgCiAgICAgLyogV3JpdGluZyB0byB0aGUgZHJhd2luZyBidWZmZXIgKi8KLSAgICB2
aXJ0dWFsIHZvaWQgY2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spIG92ZXJyaWRlOworICAgIHZvaWQg
Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spIG92ZXJyaWRlOwogICAgIHZvaWQgdmVydGV4QXR0cmli
RGl2aXNvcihHQzNEdWludCBpbmRleCwgR0MzRHVpbnQgZGl2aXNvcik7CiAgICAgdm9pZCBkcmF3
QXJyYXlzSW5zdGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBj
b3VudCwgR0MzRHNpemVpIGluc3RhbmNlQ291bnQpOwogICAgIHZvaWQgZHJhd0VsZW1lbnRzSW5z
dGFuY2VkKEdDM0RlbnVtIG1vZGUsIEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0Mz
RGludDY0IG9mZnNldCwgR0MzRHNpemVpIGluc3RhbmNlQ291bnQpOwpAQCAtMTY4LDQ5ICsxNjgs
NDkgQEAgcHVibGljOgogICAgIHZvaWQgYmluZFZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlP
YmplY3QqIHZlcnRleEFycmF5KTsKICAgICAKICAgICAvKiBFeHRlbnNpb25zICovCi0gICAgdmly
dHVhbCBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViR0xHZXRJbmZvIGdldFBhcmFtZXRlcihHQzNEZW51bSBw
bmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAgIFdlYkdMRXh0ZW5zaW9uKiBnZXRF
eHRlbnNpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gZ2V0
U3VwcG9ydGVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlOworICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJh
bWV0ZXIoR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpbnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2Rl
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleEltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRGludCB4LCBH
QzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3Jk
ZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEQmFzZShHQzNEZW51
bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGludGVybmFsZm9y
bWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscywg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJE
SW1wbChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0Mz
RGludCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlKiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJjZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVt
dWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhv
ZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgR0MzRHNpemVpIHdpZHRoLCBH
QzNEc2l6ZWkgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICB2b2lkIGhpbnQoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBtb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0Rl
bnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0Rp
bnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rp
bnQgYm9yZGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleFN1YkltYWdlMkRCYXNlKEdDM0RlbnVt
IHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQs
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBF
eGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJESW1wbChHQzNE
ZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zm
c2V0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEltYWdlKiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJjZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFs
cGhhLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlv
ZmZzZXQsCiAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKICAgICAg
ICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqLCBFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9m
ZnNldCwKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKICAgICAgICAgR0MzRGVudW0g
Zm9ybWF0LCBHQzNEZW51bSB0eXBlLCBJbWFnZURhdGEqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
aW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICB2b2lkIHRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwKICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0
eXBlLCBIVE1MSW1hZ2VFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsCiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSFRNTENh
bnZhc0VsZW1lbnQqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVP
KQotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCisgICAgdm9pZCB0ZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgSFRNTFZpZGVvRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICNlbmRpZgog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVWZXJ0ZXhBcnJheU9iamVj
dHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEdDM0RpbnQgZ2V0TWF4RHJhd0J1ZmZlcnMoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEdDM0RpbnQgZ2V0TWF4Q29sb3JBdHRhY2htZW50cygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUo
R0MzRGVudW0gdHlwZSwgdW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rp
b25OYW1lLCBHQzNEZW51bSBtb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdmFsaWRh
dGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVt
IGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnQg
bGV2ZWwpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZVRleEZ1bmNQYXJhbWV0
ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKKyAgICB2b2lkIGluaXRpYWxpemVWZXJ0ZXhB
cnJheU9iamVjdHMoKSBvdmVycmlkZTsKKyAgICBHQzNEaW50IGdldE1heERyYXdCdWZmZXJzKCkg
b3ZlcnJpZGU7CisgICAgR0MzRGludCBnZXRNYXhDb2xvckF0dGFjaG1lbnRzKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVudW0gdHlwZSwg
dW5zaWduZWQmIG51bUVsZW1lbnRzUmVxdWlyZWQpIG92ZXJyaWRlOworICAgIGJvb2wgdmFsaWRh
dGVCbGVuZEVxdWF0aW9uKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gbW9kZSkg
b3ZlcnJpZGU7CisgICAgYm9vbCB2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0IGNo
YXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1h
dCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCBsZXZlbCkgb3ZlcnJpZGU7CisgICAgYm9vbCB2YWxp
ZGF0ZVRleEZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwKICAgICAgICAg
VGV4RnVuY1ZhbGlkYXRpb25GdW5jdGlvblR5cGUsCiAgICAgICAgIEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwKICAgICAgICAgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsCiAgICAgICAg
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGludCBib3JkZXIsCiAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNE
aW50IGxldmVsLAorICAgIGJvb2wgdmFsaWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIEdDM0RpbnQgbGV2ZWwsCiAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwKICAgICAgICAgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwKICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsCiAg
ICAgICAgIE51bGxEaXNwb3NpdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbGlk
YXRlQ2FwYWJpbGl0eShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGNhcCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbGlkYXRlRnJhbWVidWZmZXJGdW5jUGFyYW1ldGVy
cyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gYXR0
YWNobWVudCkgb3ZlcnJpZGU7CisgICAgYm9vbCB2YWxpZGF0ZUNhcGFiaWxpdHkoY29uc3QgY2hh
ciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBjYXApIG92ZXJyaWRlOworICAgIGJvb2wgdmFsaWRh
dGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKICAgICAKIHByaXZh
dGU6CiAgICAgR0MzRGVudW0gYmFzZUludGVybmFsRm9ybWF0RnJvbUludGVybmFsRm9ybWF0KEdD
M0RlbnVtIGludGVybmFsZm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEJ1
ZmZlci5oCmluZGV4IDgwNzViNGExNmVjZWQ5OThjMzY4YTcwYjAyNmQ0YmI2ODY4MWM5YzguLmEx
NWZiNDU5YWEyMDFlZTA4ZmZhYjEwMDE5OTE5ZjExYjgzZGFkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xCdWZmZXIuaApAQCAtNjgsMTAgKzY4LDEwIEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBXZWJHTEJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBs
YXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFw
aGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgYm9vbCBpc0J1ZmZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzQnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgR0MzRGVudW0gbV90YXJnZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaAppbmRleCAwZDk4MThjM2NkNTZi
ZmM1MDJhYTQ1ZTg1NTVmMjJiYThmMjY4NDhlLi5hZDBiNzU0ODFmMWY2Yjc4ODJlZWRmNTM1OTQx
MDA1MmMxZDFmMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbXByZXNzZWRUZXh0dXJlQVRDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBib29sIHN1cHBvcnRlZChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAK
LSAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTENvbXByZXNzZWRUZXh0dXJlUFZSVEMuaAppbmRleCAzNjFmMDllYmY1ZDU4Y2U0ZjZjMGZl
MDRhNzIyMjI5YjlkMGExNGM1Li5lN2Y4MDZjODAwOTE4MjM2ZGI1MGY1NDE0ZjQzYmY4NWQ2N2Yz
ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNz
ZWRUZXh0dXJlUFZSVEMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENv
bXByZXNzZWRUZXh0dXJlUFZSVEMuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB+V2ViR0xDb21wcmVzc2VkVGV4dHVyZVBWUlRDKCk7CiAKICAgICBzdGF0aWMgYm9vbCBz
dXBwb3J0ZWQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwotICAgIHZpcnR1YWwgRXh0ZW5z
aW9uTmFtZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXRO
YW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJl
UzNUQy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb21wcmVzc2VkVGV4dHVy
ZVMzVEMuaAppbmRleCA1NTkwZWY2N2RjODFmZGRiMzQ4OGZkNGE4YTI0ZjcwMmY5OWM4NTk3Li4z
MGUyZDY4NTczMjE1ZDFlZWY1ZWYyZGE1MDdkZTdkZmE1ZmI0YjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbXByZXNzZWRUZXh0dXJlUzNUQy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDLmgK
QEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVkKFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKIAotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFtZSBn
ZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRFdmVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0RXZlbnQuaAppbmRleCAyYmI1NDMzZTFlZjlh
YmVmN2U0ZWMzYjgxNTMxOThiZjk2NzFjY2UzLi4xZjYxODYzMDFkOGFhODI0MTYwNTA2MTAxNTYz
ZTg1ZWU3ODE0NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TENvbnRleHRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEV2ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgU3RyaW5n
JiBzdGF0dXNNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0dXNNZXNzYWdlOyB9CiAKLSAg
ICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBXZWJHTENvbnRleHRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFN0cmluZyYgc3RhdHVzTWVz
c2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRl
eHRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVj
dC5oCmluZGV4IDQzZjAyZWRkNzk3ZTE0MWY5OTI5ZjQwOGY2ZGNiODZiYjA0YmZiNTAuLmIyYjA5
MTA5ZjQ2N2NhMTU4Y2JjNGMxYTI2ZmY0YmRiOWMzZDFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dE9iamVjdC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRleHQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZShjb25zdCBX
ZWJHTENvbnRleHRHcm91cCosIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRl
eHQpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBXZWJHTENvbnRleHRH
cm91cCosIGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqIGNvbnRleHQpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gY29udGV4dCA9PSBtX2NvbnRleHQ7CiAgICAg
fQpAQCAtNTEsMTIgKzUxLDEyIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWJHTENvbnRl
eHRPYmplY3QoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogCi0gICAgdmlydHVhbCBib29s
IGhhc0dyb3VwT3JDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGhhc0dyb3VwT3JD
b250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvbnRleHQ7
CiAgICAgfQogCi0gICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQzRCogZ2V0QUdyYXBoaWNzQ29u
dGV4dDNEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NDb250ZXh0M0QqIGdldEFHcmFw
aGljc0NvbnRleHQzRCgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UqIG1fY29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRGVidWdSZW5kZXJlckluZm8uaAppbmRleCAwN2I4ZjcyOTNiMjJjZjVi
MGY0NThlNmI4ZDBiMDgzYmIzMWJkNjkzLi5lYWQ2MjNhM2JmZjQ2NzMwZGI4ZTY0MzAyY2VkNzU5
MmE3MmI1MGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERl
YnVnUmVuZGVyZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xE
ZWJ1Z1JlbmRlcmVySW5mby5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNp
dCBXZWJHTERlYnVnUmVuZGVyZXJJbmZvKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKICAg
ICB2aXJ0dWFsIH5XZWJHTERlYnVnUmVuZGVyZXJJbmZvKCk7CiAKLSAgICB2aXJ0dWFsIEV4dGVu
c2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV4dGVuc2lvbk5hbWUgZ2V0
TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVidWdTaGFkZXJzLmgKaW5kZXggNWE5
ZTM4YjRjNGU3NzcyMjQ3OGViMzMxYzYzZDJhYWM2ZjI0YzEwZS4uZWZjZGIyMTI0MDg1NDQ4Zjll
ZWUyZjQ3ZWQwNDI1MWYyMzBjZTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xEZWJ1Z1NoYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTERlYnVnU2hhZGVycy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBXZWJHTERlYnVnU2hhZGVycyhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAg
dmlydHVhbCB+V2ViR0xEZWJ1Z1NoYWRlcnMoKTsKIAotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFt
ZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZShX
ZWJHTFNoYWRlciosIEV4Y2VwdGlvbkNvZGUmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xEZXB0aFRleHR1cmUuaAppbmRleCAxMzBkMGM5OGE0MjIzYWYwZjk0MDZh
NTczNjAwZDI0MGM3MTIyZThjLi4xZDNlOTI1NjI5ZmYzMGNlNGY3Y2Y2OWIxZjg4YzJlMDNkNjJj
NzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERlcHRoVGV4
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRGVwdGhUZXh0dXJl
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KEdyYXBoaWNzQ29udGV4dDNEKik7CiAKLSAgICB2aXJ0dWFsIEV4dGVuc2lvbk5hbWUgZ2V0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV4dGVuc2lvbk5hbWUgZ2V0TmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xEcmF3QnVmZmVycy5oCmluZGV4IGEzNmYyOTM3MjFhYThjMzk4YjQy
NTQ1NWI5YzIyMGU1MjFmNWU2ZDIuLmZkZTBmMTVhMzU1NjAwMjM0OTFkN2Q1ZDg2OGM1MTc4OTc0
M2IxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRHJhd0J1
ZmZlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTERyYXdCdWZmZXJz
LmgKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydGVk
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKIAotICAgIHZpcnR1YWwgRXh0ZW5zaW9uTmFt
ZSBnZXROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXh0ZW5zaW9uTmFtZSBnZXROYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXdCdWZmZXJzV0VCR0woY29uc3QgVmVjdG9y
PEdDM0RlbnVtPiYgYnVmZmVycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggNzMxN2VkMjBmODYwYTJmNmJiNjRlNjNkNWUyOGZh
ODg5ZDEzNzFkNi4uOTYxZmJhZTgxYmZkNGJiZTYxNDFjYzU0ZjE1YmM2ODczZWMwYzg4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAg
LTQ5LDE3ICs0OSwxNyBAQCBuYW1lc3BhY2UgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2Vi
R0xSZW5kZXJidWZmZXJBdHRhY2htZW50KFdlYkdMUmVuZGVyYnVmZmVyKik7Ci0gICAgICAgIHZp
cnR1YWwgR0MzRHNpemVpIGdldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1
YWwgR0MzRHNpemVpIGdldEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IEdDM0RlbnVtIGdldEZvcm1hdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIFdl
YkdMU2hhcmVkT2JqZWN0KiBnZXRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmly
dHVhbCBib29sIGlzU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0KikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0luaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzZXRJbml0aWFsaXplZCgpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgb25EZXRhY2hlZChHcmFwaGljc0NvbnRleHQzRCopIG92ZXJyaWRlOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoKEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gYXR0YWNobWVu
dCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1bmF0dGFjaChHcmFwaGljc0NvbnRl
eHQzRCosIEdDM0RlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOworICAgICAgICBHQzNEc2l6ZWkg
Z2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgR0MzRHNpemVpIGdldEhlaWdodCgp
IGNvbnN0IG92ZXJyaWRlOworICAgICAgICBHQzNEZW51bSBnZXRGb3JtYXQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICAgICAgV2ViR0xTaGFyZWRPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0IG92ZXJy
aWRlOworICAgICAgICBib29sIGlzU2hhcmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0KikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOworICAg
ICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBz
ZXRJbml0aWFsaXplZCgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIG9uRGV0YWNoZWQoR3JhcGhp
Y3NDb250ZXh0M0QqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250
ZXh0M0QqLCBHQzNEZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCB1bmF0
dGFjaChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwog
CiAgICAgICAgIFdlYkdMUmVuZGVyYnVmZmVyQXR0YWNobWVudCgpIHsgfTsKIApAQCAtMTQzLDE3
ICsxNDMsMTcgQEAgbmFtZXNwYWNlIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYkdMVGV4
dHVyZUF0dGFjaG1lbnQoV2ViR0xUZXh0dXJlKiwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsKTsKLSAgICAgICAgdmlydHVhbCBHQzNEc2l6ZWkgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICAgICAgdmlydHVhbCBHQzNEc2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgR0MzRGVudW0gZ2V0Rm9ybWF0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgICAgIHZpcnR1YWwgV2ViR0xTaGFyZWRPYmplY3QqIGdldE9iamVjdCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFyZWRPYmplY3QoV2ViR0xTaGFyZWRPYmpl
Y3QqKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvbkRldGFjaGVkKEdyYXBoaWNzQ29udGV4dDNEKikgb3Zl
cnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goR3JhcGhpY3NDb250ZXh0M0QqLCBH
QzNEZW51bSBhdHRhY2htZW50KSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHVuYXR0
YWNoKEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7Cisg
ICAgICAgIEdDM0RzaXplaSBnZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBHQzNE
c2l6ZWkgZ2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIEdDM0RlbnVtIGdldEZv
cm1hdCgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBXZWJHTFNoYXJlZE9iamVjdCogZ2V0T2Jq
ZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNTaGFyZWRPYmplY3QoV2ViR0xT
aGFyZWRPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRl
OworICAgICAgICB2b2lkIHNldEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
b25EZXRhY2hlZChHcmFwaGljc0NvbnRleHQzRCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGF0
dGFjaChHcmFwaGljc0NvbnRleHQzRCosIEdDM0RlbnVtIGF0dGFjaG1lbnQpIG92ZXJyaWRlOwor
ICAgICAgICB2b2lkIHVuYXR0YWNoKEdyYXBoaWNzQ29udGV4dDNEKiwgR0MzRGVudW0gYXR0YWNo
bWVudCkgb3ZlcnJpZGU7CiAKICAgICAgICAgV2ViR0xUZXh0dXJlQXR0YWNobWVudCgpIHsgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCmluZGV4
IGUwOTIwZDdkYzE3Y2E3NjBiNDJkZmY4NzIyYTlhZjA5MzA5NGE5ZDAuLjkzNWE1OGQzYjcxNjFk
NjM0ZGEzOTY0NTUwYzRjYjMyNjY5NzczZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgV2ViR0xGcmFtZWJ1ZmZlcihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCos
IFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChH
cmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIFdlYkdMQXR0YWNobWVudCogZ2V0QXR0YWNobWVudChHQzNEZW51bSkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTExvc2VDb250ZXh0LmgKaW5kZXggZTZj
ZTE1NzExZDVjMGNkMDAzMzAyYmI3OTA4ZDFhMjM4NGFlZGMyNS4uMTc1YjlmM2Q3MjE4YzkyYWU2
ZTJiN2QwOTM1NGQzYjIxZjFlN2UzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xMb3NlQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMTG9zZUNvbnRleHQuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViR0xMb3NlQ29udGV4dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAgICAgdmly
dHVhbCB+V2ViR0xMb3NlQ29udGV4dCgpOwogCi0gICAgdmlydHVhbCBFeHRlbnNpb25OYW1lIGdl
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFeHRlbnNpb25OYW1lIGdldE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9zZUNvbnRleHQoKTsKICAgICB2b2lkIHJlc3RvcmVD
b250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFBy
b2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCmluZGV4
IDFkOGJiYTEwMTY2ZGEzMGI5Y2NmNWY3OTllNDIwZGUyYTk4NWE3Y2YuLmU4NWRkNDQ2NmU0ZjZi
NDcwZGU3ZjRiMWVkZGE4ZmZmN2I2OGRhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUHJvZ3JhbS5oCkBAIC02MywxMCArNjMsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIFdlYkdMUHJvZ3JhbShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RP
YmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRl
eHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgYm9vbCBpc1Byb2dyYW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc1Byb2dyYW0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2
b2lkIGNhY2hlQWN0aXZlQXR0cmliTG9jYXRpb25zKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAg
dm9pZCBjYWNoZUluZm9JZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xR
dWVyeS5oCmluZGV4IDEwN2FjZTljOWJlYWQ1ZWViNWQ5YWYyYjc5NjU3MGJlMGRhNzQyNzIuLjdj
NWZlYjY2MGZlMTIyNWU4NTBlMzFhYWNmNDE4MTQyODA0YTYxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFF1ZXJ5LmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgV2ViR0xRdWVyeShXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRm
b3JtM0RPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGlj
c0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBpc1F1ZXJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgaXNRdWVyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmJ1ZmZlci5oCmluZGV4IDhiNjc3OTFlYzIwOGQ4Mjk5MjU3ZWJmMjZmNTBjYWYw
YzNmZDI3NjIuLmMxZmM1ZmNiNDliMjE4NzAyY2ZjYWY3ZGI2OGEzYzNlYzEzMzk0YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyYnVmZmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJidWZmZXIuaApAQCAtNjYs
MTAgKzY2LDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWJHTFJlbmRlcmJ1ZmZlcihX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2Jq
ZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RP
YmplY3QpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmJ1
ZmZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzUmVuZGVy
YnVmZmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgR0MzRGVudW0g
bV9pbnRlcm5hbEZvcm1hdDsKICAgICBib29sIG1faW5pdGlhbGl6ZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IDIwNDc4
OGRlMjI2ZjJmMjNhODZlZjMwMjNiZjhkMjNlZGQ5MzE1ZDguLmEyN2M2MDNjOWM0MDZjYjUwMWY0
MTY2NzU1ODlkM2JhZmVkOGFkODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC0zNCw1MyArMzQsNTMgQEAgY2xhc3MgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2UgewogcHVibGljOgogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dChIVE1MQ2FudmFzRWxlbWVu
dCosIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzKTsKICAgICBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQoSFRNTENhbnZhc0VsZW1lbnQqLCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMpOwotICAgIHZpcnR1YWwgYm9vbCBpc1dlYkdM
MSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViR0wxKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgV2ViR0xF
eHRlbnNpb24qIGdldEV4dGVuc2lvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIoR0MzRGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNv
ZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGdldFN1cHBvcnRlZEV4
dGVuc2lvbnMoKSBvdmVycmlkZTsKKyAgICBXZWJHTEV4dGVuc2lvbiogZ2V0RXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFdlYkdMR2V0SW5mbyBnZXRQYXJhbWV0ZXIoR0Mz
RGVudW0gcG5hbWUsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8U3RyaW5n
PiBnZXRTdXBwb3J0ZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkdM
R2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVp
IGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbGlkYXRlRnJhbWVidWZmZXJG
dW5jUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIHRhcmdldCwg
R0MzRGVudW0gYXR0YWNobWVudCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpbnQoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXIoR0MzRGJpdGZpZWxkIG1hc2spIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtIGludGVy
bmFsZm9ybWF0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6
ZWkgaGVpZ2h0LCBHQzNEaW50IGJvcmRlcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eFN1YkltYWdlMkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4
b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdo
dCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlw
ZSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHRleFN1YkltYWdlMkRJbXBsKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgSW1hZ2UqLCBHcmFwaGljc0NvbnRleHQzRDo6SW1hZ2VIdG1sRG9tU291cmNl
LCBib29sIGZsaXBZLCBib29sIHByZW11bHRpcGx5QWxwaGEsIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdD
M0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LAorICAgIFdlYkdM
R2V0SW5mbyBnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXIoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSBwbmFtZSwgRXhjZXB0aW9uQ29kZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdD
M0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQp
IG92ZXJyaWRlOworICAgIGJvb2wgdmFsaWRhdGVGcmFtZWJ1ZmZlckZ1bmNQYXJhbWV0ZXJzKGNv
bnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRhY2ht
ZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGhpbnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBt
b2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyKEdDM0RiaXRmaWVsZCBtYXNrKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvcHlUZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZl
bCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6
ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RpbnQgYm9yZGVyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHRleFN1YkltYWdlMkRCYXNlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwg
R0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0Mz
RGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJESW1wbChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2
ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIEltYWdlKiwgR3JhcGhpY3NDb250ZXh0M0Q6OkltYWdlSHRtbERvbVNvdXJj
ZSwgYm9vbCBmbGlwWSwgYm9vbCBwcmVtdWx0aXBseUFscGhhLCBFeGNlcHRpb25Db2RlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBs
ZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAgIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBBcnJheUJ1ZmZlclZpZXcqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxl
dmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICB2b2lkIHRleFN1Yklt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdD
M0RpbnQgeW9mZnNldCwKICAgICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBJ
bWFnZURhdGEqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZz
ZXQsIEdDM0RpbnQgeW9mZnNldCwKKyAgICB2b2lkIHRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwKICAg
ICAgICAgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBIVE1MSW1hZ2VFbGVtZW50Kiwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXhTdWJJbWFnZTJE
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50
IHlvZmZzZXQsCisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGlu
dCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCiAgICAgICAgIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSFRNTENhbnZhc0VsZW1lbnQqLCBFeGNlcHRpb25D
b2RlJikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwgdm9pZCB0ZXhT
dWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0
LCBHQzNEaW50IHlvZmZzZXQsCisgICAgdm9pZCB0ZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsCiAgICAg
ICAgIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgSFRNTFZpZGVvRWxlbWVudCosIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCBHQzNEaW50IGdldE1heERyYXdCdWZmZXJzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBHQzNE
aW50IGdldE1heENvbG9yQXR0YWNobWVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCB2YWxpZGF0ZUluZGV4QXJyYXlDb25zZXJ2YXRpdmUoR0MzRGVudW0gdHlwZSwgdW5zaWduZWQm
IG51bUVsZW1lbnRzUmVxdWlyZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0
ZUJsZW5kRXF1YXRpb24oY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBtb2RlKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycyhjb25z
dCBjaGFyKiBmdW5jdGlvbk5hbWUsCisgICAgR0MzRGludCBnZXRNYXhEcmF3QnVmZmVycygpIG92
ZXJyaWRlOworICAgIEdDM0RpbnQgZ2V0TWF4Q29sb3JBdHRhY2htZW50cygpIG92ZXJyaWRlOwor
ICAgIHZvaWQgaW5pdGlhbGl6ZVZlcnRleEFycmF5T2JqZWN0cygpIG92ZXJyaWRlOworICAgIGJv
b2wgdmFsaWRhdGVJbmRleEFycmF5Q29uc2VydmF0aXZlKEdDM0RlbnVtIHR5cGUsIHVuc2lnbmVk
JiBudW1FbGVtZW50c1JlcXVpcmVkKSBvdmVycmlkZTsKKyAgICBib29sIHZhbGlkYXRlQmxlbmRF
cXVhdGlvbihjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIG1vZGUpIG92ZXJyaWRl
OworICAgIGJvb2wgdmFsaWRhdGVUZXhGdW5jUGFyYW1ldGVycyhjb25zdCBjaGFyKiBmdW5jdGlv
bk5hbWUsCiAgICAgICAgIFRleEZ1bmNWYWxpZGF0aW9uRnVuY3Rpb25UeXBlLAogICAgICAgICBH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsCiAgICAgICAgIEdDM0RlbnVtIGludGVybmFs
Zm9ybWF0LAogICAgICAgICBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rp
bnQgYm9yZGVyLAogICAgICAgICBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCB2YWxpZGF0ZVRleEZ1bmNGb3JtYXRBbmRUeXBlKGNvbnN0
IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZv
cm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRGludCBsZXZlbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHZhbGlkYXRlVGV4RnVuY0RhdGEoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNE
aW50IGxldmVsLAorICAgIGJvb2wgdmFsaWRhdGVUZXhGdW5jRm9ybWF0QW5kVHlwZShjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGludGVybmFsZm9ybWF0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RpbnQgbGV2ZWwpIG92ZXJyaWRlOworICAgIGJvb2wgdmFs
aWRhdGVUZXhGdW5jRGF0YShjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIEdDM0RpbnQgbGV2ZWws
CiAgICAgICAgIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwKICAgICAgICAgR0Mz
RGVudW0gaW50ZXJuYWxmb3JtYXQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwKICAg
ICAgICAgQXJyYXlCdWZmZXJWaWV3KiBwaXhlbHMsCiAgICAgICAgIE51bGxEaXNwb3NpdGlvbikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHZhbGlkYXRlQ2FwYWJpbGl0eShjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDM0RlbnVtIGNhcCkgb3ZlcnJpZGU7CisgICAgYm9vbCB2YWxpZGF0
ZUNhcGFiaWxpdHkoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQzNEZW51bSBjYXApIG92ZXJy
aWRlOwogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5k
ZXggMzdjYTc1NDNjZmM0MDBkOTU3YzVlNzgyZjdkZGEzMWJhYmY0YzgwMy4uODljOTlhOTMyZDk2
YTBkNjk4MmM3MDljMDI1Mjg0NGE1ZjBkN2MzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTMyNiw3
ICszMjYsNyBAQCBjbGFzcyBXZWJHTFJlbmRlcmluZ0NvbnRleHRMb3N0Q2FsbGJhY2sgOiBwdWJs
aWMgR3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0QwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkdMUmVuZGVyaW5nQ29udGV4dExvc3RD
YWxsYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKiBjYikgOiBtX2NvbnRleHQoY2IpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkgb3ZlcnJpZGUgeyBtX2NvbnRleHQt
PmZvcmNlTG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpSZWFsTG9zdENvbnRleHQp
OyB9CisgICAgdm9pZCBvbkNvbnRleHRMb3N0KCkgb3ZlcnJpZGUgeyBtX2NvbnRleHQtPmZvcmNl
TG9zdENvbnRleHQoV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpSZWFsTG9zdENvbnRleHQpOyB9CiAg
ICAgdmlydHVhbCB+V2ViR0xSZW5kZXJpbmdDb250ZXh0TG9zdENhbGxiYWNrKCkge30KIHByaXZh
dGU6CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogbV9jb250ZXh0OwpAQCAtMzM2LDcg
KzMzNiw3IEBAIGNsYXNzIFdlYkdMUmVuZGVyaW5nQ29udGV4dEVycm9yTWVzc2FnZUNhbGxiYWNr
IDogcHVibGljIEdyYXBoaWNzQ29udGV4dDNEOjpFcnJvCiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgV2ViR0xSZW5kZXJpbmdDb250ZXh0RXJyb3JN
ZXNzYWdlQ2FsbGJhY2soV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSogY2IpIDogbV9jb250ZXh0
KGNiKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25FcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBHQzNEaW50KSBvdmVycmlkZQorICAgIHZvaWQgb25FcnJvck1lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBHQzNEaW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1f
Y29udGV4dC0+bV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZSkKICAgICAgICAgICAgIG1fY29u
dGV4dC0+cHJpbnRHTEVycm9yVG9Db25zb2xlKG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oCmluZGV4IGVm
OGQ3OTU1ODkyYTUwYzdiMzEwYzY5NTcyNGQ4OTU2MzEyZTg5YWUuLjQzYWI4NGNjMzY2MTVmMTc2
MzlkOTEyOTgyN2VhNWZlNThmMzY5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgKQEAgLTExNyw5ICsxMTcsOSBA
QCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBh
Y2NlbGVyYXRlZCAzZCBjYW52YXMgb24gV2luZG93cy4KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
bGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0Fj
Y2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbHNlCi0gICAg
dmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogI2VuZGlmCiAKICAgICBpbnQgZHJhd2luZ0J1ZmZlcldpZHRoKCkgY29uc3Q7CkBAIC0z
NDEsMTIgKzM0MSwxMiBAQCBwdWJsaWM6CiAKICAgICBHcmFwaGljc0NvbnRleHQzRCogZ3JhcGhp
Y3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KICAgICBXZWJH
TENvbnRleHRHcm91cCogY29udGV4dEdyb3VwKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0R3Jv
dXAuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKIAog
ICAgIHZvaWQgbWFya0xheWVyQ29tcG9zaXRlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0NhbnZhcygpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoKSBvdmVycmlkZTsKICAgICBQYXNzUmVmUHRyPEltYWdlRGF0YT4g
cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKTsKIAogICAgIHZvaWQgcmVtb3ZlU2hh
cmVkT2JqZWN0KFdlYkdMU2hhcmVkT2JqZWN0Kik7CkBAIC0zODEsOSArMzgxLDkgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgc2V0dXBGbGFncygpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0g
ICAgdmlydHVhbCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQZW5kaW5n
QWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGFkZFNoYXJlZE9iamVjdChXZWJHTFNoYXJlZE9iamVjdCopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTYW1wbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaAppbmRleCBjMjcxOWIyMWVhNjlmOTk5Mzc3
ZjI4MWFhZWRmZTAyZjFhNGM3MDM1Li4yN2MyZGYyMmZhMzM2YmZlOWE3MGVjZTM1M2ZjOTg2Mzgy
MjdkM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNhbXBsZXIuaApAQCAt
NDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWJHTFNhbXBsZXIoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZU9iamVj
dEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlbGV0ZU9iamVjdEltcGwoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2Jq
ZWN0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTYW1wbGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTYW1wbGVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xTaGFkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhZGVyLmgKaW5kZXggNDkzMTIyNmE2
ODk2MmRhZGE2M2I5NGE4YjcxODE4ZTlmNjQ0MGVmMy4uY2M0MzgxYjRkMzk2NmZkYTVlZjA0ZDZk
MmZjYmEyOTg2NmNkZjFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xTaGFkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYWRl
ci5oCkBAIC00Nyw5ICs0Nyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xTaGFkZXIo
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSosIEdDM0RlbnVtKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwg
UGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1NoYWRlcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEdDM0RlbnVtIG1fdHlwZTsKICAg
ICBTdHJpbmcgbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFNoYXJlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xT
aGFyZWRPYmplY3QuaAppbmRleCA4MGU1NjI4OWUzYmE1NDJjOTZjYjQ1NjE4Y2ZhMWYzY2IwYjlm
ODNlLi4xMDU2NDJkOTBmYTA5MzVlZDY4ZGJhN2FkOTU1N2RjMjJlNDlkMjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFNoYXJlZE9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU2hhcmVkT2JqZWN0LmgKQEAgLTUzLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zZm9ybUZlZWRiYWNrKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNWZXJ0ZXhBcnJheU9iamVj
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdmFsaWRhdGUo
Y29uc3QgV2ViR0xDb250ZXh0R3JvdXAqIGNvbnRleHRHcm91cCwgY29uc3QgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZSopIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCB2YWxpZGF0ZShjb25zdCBX
ZWJHTENvbnRleHRHcm91cCogY29udGV4dEdyb3VwLCBjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlKikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBjb250ZXh0R3Jv
dXAgPT0gbV9jb250ZXh0R3JvdXA7CiAgICAgfQpAQCAtNjMsMTIgKzYzLDEyIEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBXZWJHTFNoYXJlZE9iamVjdChXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzR3JvdXBPckNvbnRleHQoKSBjb25zdCBvdmVy
cmlkZQorICAgIGJvb2wgaGFzR3JvdXBPckNvbnRleHQoKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG1fY29udGV4dEdyb3VwOwogICAgIH0KIAotICAgIHZpcnR1YWwgR3Jh
cGhpY3NDb250ZXh0M0QqIGdldEFHcmFwaGljc0NvbnRleHQzRCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBnZXRBR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJHTENvbnRleHRHcm91cCogbV9jb250ZXh0R3JvdXA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFN5bmMuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCmluZGV4IDlkODQxOWM5YWQ4ODcy
MjA1MjRjMjA0MzM5ODdlOTk3MGIxOGEyNzcuLjNiYjY0YWM2OTUzNjI4MDcxZTBiZDJjMjE4Njgy
MmY3MzllOTRjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
U3luYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMU3luYy5oCkBAIC00
MSwxMCArNDEsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFdlYkdMU3luYyhXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1w
bChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOworICAgIHZv
aWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3Qp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1N5bmMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1N5bmMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRleHR1cmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCmluZGV4IDEzMzYyMmQ1MmUxZjI5NDBj
ZDIxMmFiNzdlOTBmNjkwYmJhMTAxMjIuLjVmNGFlYWYzNzZhMGRjYjI0M2JhY2U2ZWY5YzY2ZTdh
NzUxODdmNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4
dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVGV4dHVyZS5oCkBA
IC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xUZXh0dXJlKFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVj
dCkgb3ZlcnJpZGU7CiAKICAgICBjbGFzcyBMZXZlbEluZm8gewogICAgIHB1YmxpYzoKQEAgLTEx
Miw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBHQzNEZW51bSB0eXBlOwogICAgIH07CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNUZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgdm9pZCB1cGRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oCmluZGV4IGQyOWJiMzY0ZmQ2OTI0MTdjMzU2
ZTc4ZDc3ZGY3MTBkMThlZjhlOGMuLjk3MDViYjdlYTE2ODAxODE1NWMzMDg4YTgyNzM3ODM2YTlk
ODkyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVHJhbnNm
b3JtRmVlZGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlKik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBs
YXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChHcmFw
aGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zZm9ybUZlZWRiYWNrKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNUcmFuc2Zvcm1GZWVkYmFjaygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaApp
bmRleCA0NTgwM2RhZjA4MWZmYTA0MGExNWUxNjUwMzkxYjE0MTkyOGM1MzcyLi45NjYwNjA3OTM2
ZTM0MWI1YjE1YjU1ZjhlNzBlMmNjOGRmOGQxZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdChXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlKiwgVkFPVHlwZSk7CiAgICAgYm9vbCBpc1RyYW5zZm9ybUZlZWRiYWNr
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVPYmplY3RJ
bXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVjdCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkZWxldGVPYmplY3RJbXBsKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVj
dCkgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmgKaW5k
ZXggM2E0ZWYyODExNTcwMzNmYzUyMzczZDI3ZWEwMTBmYjQxNWMzY2M4OS4uNzY1YzQxNmNlMmFl
NTNkNzM0MWZiODM1MzQ2MGRiNzY1ZmM2OTM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaApAQCAtMzgsNyArMzgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUygpOwog
cHJpdmF0ZToKICAgICBXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UqLCBWQU9UeXBlKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0SW1wbChH
cmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVsZXRlT2JqZWN0SW1wbChHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QpIG92
ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBhZDhjMDc4YjBlYTJhNDM5
OWNjZDY1ODY1ZDYwZDFhZjYxN2M5ZTVmLi5jZmE1NDliMmVjNTI2NjNhNjMyYzYzYjZjNTU5OTVl
ZDI4MDJkNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1l
bnRQYXJzZXIuaApAQCAtNjAsMTQgKzYwLDE0IEBAIHB1YmxpYzoKIAogICAgIC8vIEZvciBIVE1M
VHJlZUJ1aWxkZXIuCiAgICAgSFRNTFRva2VuaXplciYgdG9rZW5pemVyKCk7Ci0gICAgdmlydHVh
bCBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
VGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBp
bnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBh
cHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoKCkg
b3ZlcnJpZGU7CiAKICAgICBIVE1MVHJlZUJ1aWxkZXImIHRyZWVCdWlsZGVyKCk7CiAKQEAgLTc2
LDI4ICs3NiwyOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBSZWY8SFRNTERvY3VtZW50UGFyc2Vy
PiBjcmVhdGUoRG9jdW1lbnRGcmFnbWVudCYsIEVsZW1lbnQmIGNvbnRleHRFbGVtZW50LCBQYXJz
ZXJDb250ZW50UG9saWN5KTsKIAogICAgIC8vIERvY3VtZW50UGFyc2VyCi0gICAgdmlydHVhbCB2
b2lkIGRldGFjaCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBoYXNJbnNlcnRp
b25Qb2ludCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzaW5nRGF0
YSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9TdG9w
UGFyc2luZygpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wUGFyc2luZygp
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBpc1dhaXRpbmdGb3JTY3JpcHRzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTY3JpcHRzV2FpdGlu
Z0ZvclN0eWxlc2hlZXRzKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHN1c3Bl
bmRTY2hlZHVsZWRUYXNrcygpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCByZXN1
bWVTY2hlZHVsZWRUYXNrcygpIG92ZXJyaWRlIGZpbmFsOwotCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZEFzc29jaWF0ZUNvbnNvbGVNZXNzYWdlc1dpdGhUZXh0UG9zaXRpb24oKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaCgpIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wg
aGFzSW5zZXJ0aW9uUG9pbnQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHByb2Nlc3NpbmdE
YXRhKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBwcmVwYXJlVG9TdG9wUGFyc2lu
ZygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc3RvcFBhcnNpbmcoKSBvdmVycmlkZSBmaW5h
bDsKKyAgICBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzRXhlY3V0aW5nU2NyaXB0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBl
eGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZvaWQgc3VzcGVuZFNjaGVkdWxlZFRhc2tzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBy
ZXN1bWVTY2hlZHVsZWRUYXNrcygpIG92ZXJyaWRlIGZpbmFsOworCisgICAgYm9vbCBzaG91bGRB
c3NvY2lhdGVDb25zb2xlTWVzc2FnZXNXaXRoVGV4dFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICAvLyBIVE1MU2NyaXB0UnVubmVySG9zdAotICAgIHZpcnR1YWwgdm9pZCB3
YXRjaEZvckxvYWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RvcFdhdGNoaW5nRm9yTG9hZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgSFRNTElucHV0U3RyZWFtJiBpbnB1dFN0cmVhbSgpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgYm9vbCBoYXNQcmVsb2FkU2Nhbm5lcigpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDdXJyZW50SW5wdXRTdHJlYW1Ub1ByZWxv
YWRTY2FubmVyQW5kU2NhbigpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgd2F0Y2hGb3JMb2Fk
KENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBzdG9wV2F0Y2hpbmdG
b3JMb2FkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGUgZmluYWw7CisgICAgSFRNTElucHV0U3Ry
ZWFtJiBpbnB1dFN0cmVhbSgpIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgaGFzUHJlbG9hZFNj
YW5uZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGFwcGVuZEN1cnJlbnRJbnB1
dFN0cmVhbVRvUHJlbG9hZFNjYW5uZXJBbmRTY2FuKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICAv
LyBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChD
YWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQo
Q2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIERvY3VtZW50KiBjb250ZXh0
Rm9yUGFyc2luZ1Nlc3Npb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvVGV4dERvY3VtZW50UGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9U
ZXh0RG9jdW1lbnRQYXJzZXIuaAppbmRleCBkM2RlYzNmNGMzNzZiNGE2NDgwMDYwZWUzMmYxN2Y4
YWQzODFhMGZjLi43NGExZDIxNGE3MzU1ZjIwMDRkNzY1Y2JmNzVlM2U1MWVjMTcyMzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9UZXh0RG9jdW1lbnRQYXJzZXIuaApAQCAt
MzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFRleHREb2N1bWVu
dFBhcnNlcihIVE1MRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoUmVmUHRy
PFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kKFJlZlB0cjxTdHJpbmdJ
bXBsPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW5zZXJ0RmFrZVByZUVsZW1lbnQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQXV0b0ZpbGxCdXR0b25FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9BdXRvRmlsbEJ1dHRvbkVsZW1lbnQu
aAppbmRleCBmNDE2ODUzYThjMTI4MTY1MTMwY2ZiNWUxMzZjNzZlYzRkYTg2YjhjLi5mYzQ3M2Rj
YmMwN2MyZWQwM2RmNzBhYjA3MTlkNTFlMDRlZWRkMDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9BdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9BdXRvRmlsbEJ1dHRvbkVsZW1lbnQuaApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEF1dG9GaWxsQnV0dG9uRWxlbWVudChE
b2N1bWVudCYsIEF1dG9GaWxsQnV0dG9uT3duZXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICBBdXRvRmlsbEJ1dHRvbk93bmVyJiBtX293
bmVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNN
YXJrZXJDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2Vy
Q29udHJvbC5oCmluZGV4IDM5NzE3YWI2NjZkMjY5ODgxNTA5Njg5NjZmZjYxMThjZWVlYWNhNjMu
LjMwMTUzMGQ3Y2I1MzZkYmNhOWE4MTQwZDRkODE4NmY1OTc4YjZiZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaApAQCAtNDMsOCAr
NDMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERldGFpbHNNYXJrZXJDb250cm9sKERvY3Vt
ZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBvdmVycmlkZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0ltYWdlQ29udHJvbHNSb290RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50LmgKaW5kZXggMTRjMTE1NzliOTRjNzNmMjZj
MTdiMmM0NjJhNTc3MzM1NTUzOGRhZC4uOGNhMjk2MTg1ODE1MzRlOTkwM2ZjMmRiZWU4ZGE3OGY0
NGY3NjcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VDb250
cm9sc1Jvb3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW1hZ2VD
b250cm9sc1Jvb3RFbGVtZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IEltYWdlQ29udHJvbHNSb290RWxlbWVudChEb2N1bWVudCYpOwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlQ29udHJvbHNSb290RWxlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzSW1hZ2VDb250cm9sc1Jvb3RF
bGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuaAppbmRleCAwMGYwNGEzN2VlMzcxOTE4ODBjNWE4
YjVlN2Q3MGU1YzcxM2E1YmE3Li43NmVhNDlkNTI0ODYyZmJlMWY2YjFiOWY1MzZjZTZjMjNhY2Zh
NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50VHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xFbGVtZW50VHlwZXMuaApAQCAtMTEyLDcgKzExMiw3IEBAIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBNZWRpYUNvbnRyb2xEaXZFbGVtZW50KERvY3VtZW50JiwgTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBNZWRpYUNvbnRyb2xFbGVtZW50Ojpp
c01lZGlhQ29udHJvbEVsZW1lbnQoKTsgfQorICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gTWVkaWFDb250cm9sRWxlbWVudDo6aXNN
ZWRpYUNvbnRyb2xFbGVtZW50KCk7IH0KIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KQEAgLTEyMiw3ICsxMjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50KERvY3VtZW50JiwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUpOwog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1lbnQoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBNZWRpYUNvbnRyb2xFbGVtZW50Ojppc01lZGlhQ29u
dHJvbEVsZW1lbnQoKTsgfQorICAgIGJvb2wgaXNNZWRpYUNvbnRyb2xFbGVtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gTWVkaWFDb250cm9sRWxlbWVudDo6aXNNZWRpYUNvbnRy
b2xFbGVtZW50KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSB7IH0K
IH07CiAKQEAgLTE0Niw0NiArMTQ2LDQ2IEBAIGNsYXNzIE1lZGlhQ29udHJvbE11dGVCdXR0b25F
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6CiAgICAg
dm9pZCBjaGFuZ2VkTXV0ZSgpOwogCi0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgd2lsbFJl
c3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChEb2N1
bWVudCYsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZURpc3BsYXlUeXBlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgp
IG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFz
cyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHdpbGxSZXNw
b25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQoRG9jdW1l
bnQmLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFu
ZGxlcihFdmVudCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc0ZvcndhcmRCdXR0b24o
KSBjb25zdCA9IDA7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29s
IC8qZmxhZyovID0gdHJ1ZSwgYm9vbCAvKnBhdXNlKi8gPSBmYWxzZSkgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCAvKmZsYWcqLyA9IHRydWUsIGJvb2wgLypwYXVzZSov
ID0gZmFsc2UpIG92ZXJyaWRlIGZpbmFsOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRWb2x1bWUoZG91Ymxl
KTsKICAgICB2b2lkIHNldENsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbihib29sKTsKIAogcHJv
dGVjdGVkOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoRG9j
dW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgYm9vbCBtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCmlu
ZGV4IDg2ZDk3MDI5MDUzMDdjNjIyMmY5ODI3M2FiZmZkOGIxZmMyMTJlNWYuLjUwMmE5ODg0NWQ0
NGZhMzc1OTk2NWZlMzg0MWJlYzA3NGIwNjc3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtNTAsMTQgKzUwLDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIG1ha2VUcmFuc3BhcmVudCgpOwogCiAjaWYgIVBMQVRGT1JNKElPUykK
LSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xQYW5lbEVsZW1l
bnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2Nh
dGlvbik7CiAgICAgdm9pZCBjb250aW51ZURyYWcoY29uc3QgTGF5b3V0UG9pbnQmIGV2ZW50TG9j
YXRpb24pOwpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
KyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiB9Owog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMjAsMTUgKzEyMCwxNSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVk
aWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE1MywxMyArMTUzLDEzIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShE
b2N1bWVudCYsIE1lZGlhQ29udHJvbHMqKTsKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgdmly
dHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChEb2N1bWVudCYsIE1lZGlhQ29udHJvbHMq
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAg
ICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOwogfTsKQEAgLTE4MiwxNSArMTgyLDE1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBjcmVh
dGUoRG9jdW1lbnQmKTsKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBib29sIHdp
bGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIH07
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5OSwxMiArMTk5LDEyIEBA
IGNsYXNzIE1lZGlhQ29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNv
bnRyb2xPdmVybGF5UGxheUJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRh
dGVEaXNwbGF5VHlwZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlh
Q29udHJvbE92ZXJsYXlQbGF5QnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudChEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1l
ZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBpc0ZvcndhcmRCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjM4LDEzICsy
MzgsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sUmV3aW5kQnV0dG9u
RWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZp
cnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI1NCwxMyArMjU0LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBjcmVhdGUo
RG9jdW1lbnQmKTsKIAogI2lmICFQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNZWRpYUNvbnRyb2xSZXR1
cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KQEAgLTI3MCwxNSArMjcwLDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gY3JlYXRlKERv
Y3VtZW50JiwgTWVkaWFDb250cm9scyopOwogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICB2aXJ0
dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURp
c3BsYXlUeXBlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVEaXNwbGF5VHlwZSgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudChEb2N1bWVudCYsIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShD
T0NPQSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShHVEspCiAgICAgTWVkaWFDb250cm9s
cyogbV9jb250cm9sczsKQEAgLTI5Miw3ICsyOTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNyZWF0ZShEb2N1
bWVudCYpOwogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3Bv
bmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMzA2LDcgKzMwNiw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVmPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50JiwgTWVkaWFDb250cm9scyopOwogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAgdm9pZCB1cGRhdGVEaXNw
bGF5KCk7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVidWlsZFRy
YWNrTGlzdE1lbnUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3Zl
cnJpZGU7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4+IFRyYWNrTWVudUl0
ZW1zOwogICAgIFRyYWNrTWVudUl0ZW1zIG1fbWVudUl0ZW1zOwpAQCAtMzM0LDcgKzMzNCw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gY3Jl
YXRlKERvY3VtZW50JiwgTWVkaWFDb250cm9scyopOwogCiAjaWYgIVBMQVRGT1JNKElPUykKLSAg
ICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsK
KyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogICAgIHZvaWQgc2V0UG9zaXRpb24oZG91YmxlKTsKQEAgLTM0Myw3ICszNDMsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVu
dChEb2N1bWVudCYsIE1lZGlhQ29udHJvbHMqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAKICAgICBNZWRpYUNvbnRyb2xzKiBtX2NvbnRyb2xzOwog
fTsKQEAgLTM1NSw3ICszNTUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gY3JlYXRlKERvY3VtZW50Jik7CiAKICNpZiAhUExB
VEZPUk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50
cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKICAgICB2
b2lkIHNldElzRnVsbHNjcmVlbihib29sKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
KERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIG92ZXJyaWRlOworICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJy
aWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzkyLDEyICsz
OTIsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8TWVkaWFDb250cm9sRnVsbHNjcmVlblZv
bHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCiAjaWYgIVBMQVRGT1JN
KElPUykKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlj
a0V2ZW50cygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50
KERvY3VtZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlk
ZTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQwNywxMyArNDA3
LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQmKTsKIAogI2lmICFQTEFURk9STShJ
T1MpCi0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChE
b2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlk
ZTsKIH07CiAKIApAQCAtNDU2LDEwICs0NTYsMTAgQEAgcHJpdmF0ZToKIAogICAgIGV4cGxpY2l0
IE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAg
IHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgUmVmUHRyPEltYWdlPiBjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdl
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRUcmFja1JlcHJlc2VudGF0aW9uQm91
bmRzQ2hhbmdlZChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEltYWdlPiBj
cmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkJvdW5kc0NoYW5nZWQoY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKICAgICB2b2lk
IGNsZWFyVGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKICAgICB2b2lkIHVwZGF0ZVN0eWxlRm9y
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuaAppbmRleCA0MWFlZTUzODdiOTk3ODhmNjQ4MWQ5ZDMyY2EzZGRlMWI2NWYz
MDgyLi4yZWYzN2E5YTJjMGJiYWRiNGUxYTRmZGIxMjMyZmUzOTY4YTU1OGU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCkBAIC05NCw3ICs5NCw3IEBAIGNs
YXNzIE1lZGlhQ29udHJvbHMgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogICAgIHZpcnR1YWwg
dm9pZCBleGl0ZWRGdWxsc2NyZWVuKCk7CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1
YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGhpZGVGdWxsc2Ny
ZWVuQ29udHJvbHNUaW1lckZpcmVkKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgY2xhc3MgTWVkaWFD
b250cm9scyA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgTWVkaWFDb250cm9scyhEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBjb250YWluc1JlbGF0ZWRU
YXJnZXQoRXZlbnQqKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHByb3RlY3RlZDoKICAgICBib29s
IG1faXNNb3VzZU92ZXJDb250cm9sczsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNN
ZWRpYUNvbnRyb2xzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgaXNNZWRpYUNvbnRyb2xzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogfTsKIAogaW5saW5lIE1lZGlhQ29udHJvbHMqIHRvTWVkaWFDb250cm9scyhOb2RlKiBu
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
c0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUu
aAppbmRleCAyZjg0NzU5ZWM5NTMzODU2OGI2ZDgwYmJlZDgyMzI2NTYyZmIxMzg2Li4xZmZjZmYw
N2FhM2IyMjdlNTcwNDYyNzUwZmE3ZmMzYjVlNDc5MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICA6IDA7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgTWVkaWFDb250cm9sc0FwcGxlRXZlbnRMaXN0ZW5lcihNZWRpYUNvbnRyb2xzQXBwbGUqIG1l
ZGlhQ29udHJvbHMpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZl
bnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFdmVudCopIG92ZXJyaWRlOwogCiAgICAgTWVkaWFDb250cm9sc0FwcGxlKiBtX21lZGlh
Q29udHJvbHM7CiB9OwpAQCAtNjQsMjkgKzY0LDI5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xzQXBwbGU+IGNyZWF0ZUNvbnRyb2xzKERvY3VtZW50Jik7CiAK
ICAgICAvLyBNZWRpYUNvbnRyb2xzIGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBz
ZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRNZWRpYUNvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVySW50ZXJmYWNlKikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBtYWtlVHJhbnNwYXJlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIG1ha2VUcmFuc3BhcmVudCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGNoYW5nZWRNdXRlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNo
YW5nZWRWb2x1bWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoYW5nZWRNdXRlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjaGFuZ2VkVm9sdW1lKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZW50ZXJlZEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdGVkRnVs
bHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZvaWQgZW50ZXJlZEZ1bGxzY3JlZW4oKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGV4aXRlZEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRlZEVycm9yKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRlZE1l
dGFkYXRhKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXBvcnRlZEVycm9yKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBsb2FkZWRNZXRhZGF0YSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNo
b3dWb2x1bWVTbGlkZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ3VycmVu
dFRpbWVEaXNwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0YXR1c0Rp
c3BsYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dWb2x1bWVTbGlkZXIoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlU3RhdHVzRGlzcGxheSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNoYW5n
ZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxpdHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
dG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2hhbmdl
ZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xlQ2xv
c2VkQ2FwdGlvblRyYWNrTGlzdCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VkQ2FwdGlvblRy
YWNrc0NoYW5nZWQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkQ2xvc2VkQ2FwdGlvbnND
b250YWluZXJQcmV2ZW50UGFnZVNjcm9sbGluZyhpbnQgd2hlZWxEZWx0YVkpOwogICAgIHZvaWQg
aGFuZGxlQ2xpY2tFdmVudChFdmVudCopOwpAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIE1lZGlhQ29udHJvbHNBcHBsZShEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2
b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKICAgICBQYXNzUmVmUHRyPE1lZGlhQ29u
dHJvbHNBcHBsZUV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIoKTsKIAogICAgIHZvaWQgc2hv
d0Nsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgKaW5kZXggNzcwNmIxZGY2MjQ1ZGJlY2NlNDU4YzJmYzI1
ZWEwN2RkODYzMGMwNS4uODZkZGI5MzExYjQ0NTkwZDc4OGExZWYxZDAzNWM5M2M4NGI1ZGZiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmgK
QEAgLTQ5LDcgKzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgIE1ldGVyU2hhZG93RWxlbWVudChEb2N1
bWVudCYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBNZXRlcklubmVyRWxlbWVu
dCBmaW5hbCA6IHB1YmxpYyBNZXRlclNoYWRvd0VsZW1lbnQgewpAQCAtNTksOCArNTksOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIE1ldGVySW5uZXJFbGVtZW50KERvY3VtZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIH07CiAKIGlubGluZSBSZWY8TWV0ZXJJbm5lckVsZW1lbnQ+IE1ldGVySW5uZXJFbGVtZW50
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvUHJvZ3Jlc3NTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9Qcm9ncmVzc1NoYWRvd0VsZW1lbnQuaAppbmRleCA5N2Y4MjRmZGZlNWQ5Y2YxZWQ3
NmZjZmVkM2UxZGZhN2ZmNjYwYWVjLi5mM2Y4NzlkZGI5YTExMzNjMDYwMzdiMDYxZDUxYzI4YzEx
NTU1MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Qcm9ncmVzc1No
YWRvd0VsZW1lbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUHJvZ3Jlc3NT
aGFkb3dFbGVtZW50KERvY3VtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKKyAgICBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIH07CiAKIGNsYXNz
IFByb2dyZXNzSW5uZXJFbGVtZW50IGZpbmFsIDogcHVibGljIFByb2dyZXNzU2hhZG93RWxlbWVu
dCB7CkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUHJvZ3Jlc3NJbm5l
ckVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogfTsKIAogaW5saW5lIFJlZjxQcm9ncmVzc0lu
bmVyRWxlbWVudD4gUHJvZ3Jlc3NJbm5lckVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1l
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAppbmRleCAwNDE4ZmRmYWM0N2Q1OGI0NjIzMmU3MWFiZjg1Yjk4NmRlZWE0NmFiLi5jNzM0
ZDFkNWI4YWNhMWRhODE5YTdkM2M4YmFmZjc3MmZjMWQ4MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTExNywxMCArMTE3
LDEwIEBAIHB1YmxpYzoKICAgICB9CiAKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92
ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogICAgIGJvb2wgaXNGbGV4aWJsZUJveEltcGwo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5oCmluZGV4IDFlYzkyZjBhZTMwMGM4
YTJhY2ZmYjY3ODgwMmRjY2NiMTZkZmIwZjMuLjVjZTgwYzNmMWI2YzIxNDRlNjUzODgwM2I3Y2Jj
YjZhMWFjOWQ3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRl
clRodW1iRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRo
dW1iRWxlbWVudC5oCkBAIC02MSwyNSArNjEsMjUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBT
bGlkZXJUaHVtYkVsZW1lbnQoRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVmPEVsZW1lbnQ+
IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEaXNhYmxlZEZvcm1Db250cm9sKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRWxlbWVudCogZm9jdXNEZWxlZ2F0ZSgpIG92ZXJy
aWRlOworICAgIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENo
aWxkcmVuKERvY3VtZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRy
b2woKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFz
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIEVsZW1lbnQqIGZvY3VzRGVsZWdhdGUoKSBvdmVycmlk
ZTsKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHdpbGxSZXNwb25kVG9Nb3Vz
ZU1vdmVFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01v
dXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqKSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMo
KSBvdmVycmlkZTsKKyAgICBib29sIHdpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3Zl
cnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1
YWwgdm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEF0dGFj
aFJlbmRlcmVycygpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXRh
Y2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZv
clJlbmRlcmVyKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5
bGUmLCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RhcnREcmFnZ2luZygp
OwogICAgIHZvaWQgc3RvcERyYWdnaW5nKCk7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlQXBwZWFyYW5jZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc1NsaWRlclRodW1iKCkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTM0LDkgKzEzNCw5IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBTbGlkZXJDb250YWluZXJFbGVtZW50KERvY3VtZW50Jik7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVu
ZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSop
IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIEF0b21pY1N0cmluZyBtX3NoYWRvd1BzZXVkb0lkOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5oCmluZGV4IDcy
OTk1ZjYwNWQ2ZjU5ZDI4N2FmMTI1ODE2MGYzYTUzNzNjMDlmYzMuLjM2ZDRmNmFiN2JkYTk3YWQw
OTY0YzMxNWU4Mjc2YjkzNzY1ZWE4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU3BpbkJ1dHRvbkVsZW1lbnQuaApAQCAtNjEsMjcgKzYxLDI3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc3RlcChpbnQgYW1vdW50KTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3Bv
bmRUb01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlc3BvbmRU
b01vdXNlTW92ZUV2ZW50cygpIG92ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNl
Q2xpY2tFdmVudHMoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZm9yd2FyZEV2ZW50KEV2ZW50Kik7
CiAKIHByaXZhdGU6CiAgICAgU3BpbkJ1dHRvbkVsZW1lbnQoRG9jdW1lbnQmLCBTcGluQnV0dG9u
T3duZXImKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGV0YWNoUmVuZGVyZXJzKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRGlzYWJsZWRGb3JtQ29udHJv
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNoYWRvd0hvc3QoKSAmJiBzaGFkb3dIb3N0KCkt
PmlzRGlzYWJsZWRGb3JtQ29udHJvbCgpOyB9Ci0gICAgdmlydHVhbCBib29sIG1hdGNoZXNSZWFk
V3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxP
cGVuUG9wdXAoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBzaGFkb3dIb3N0KCkgJiYgc2hhZG93SG9zdCgpLT5pc0Rpc2FibGVkRm9y
bUNvbnRyb2woKTsgfQorICAgIGJvb2wgbWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsT3BlblBvcHVwKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkb1N0ZXBB
Y3Rpb24oaW50KTsKICAgICB2b2lkIHN0YXJ0UmVwZWF0aW5nVGltZXIoKTsKICAgICB2b2lkIHN0
b3BSZXBlYXRpbmdUaW1lcigpOwogICAgIHZvaWQgcmVwZWF0aW5nVGltZXJGaXJlZCgpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkKGJvb2wgPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldEhvdmVyZWQoYm9vbCA9IHRydWUpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUmVzcG9u
ZFRvTW91c2VFdmVudHMoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIFNwaW5CdXR0b25Pd25l
ciogbV9zcGluQnV0dG9uT3duZXI7CiAgICAgYm9vbCBtX2NhcHR1cmluZzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKaW5k
ZXggZTVjODA5ZTczODJjZjdhYWQ1NmYyNGZjNWRhOWJkNjQzYjRhNjgzNC4uMzNkMTIwYzgwODkz
NWNhOTE1NjBlMjdkNzdiMDZmY2Q5MGEwZGU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcj4gY3Jl
YXRlKERvY3VtZW50Jik7CiBwcm90ZWN0ZWQ6CiAgICAgVGV4dENvbnRyb2xJbm5lckNvbnRhaW5l
cihEb2N1bWVudCYpOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVt
ZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIFRleHRDb250cm9sSW5uZXJFbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxEaXZFbGVtZW50IHsKQEAgLTQ4LDU0ICs0OCw1NCBAQCBwdWJsaWM6CiAKIHBy
b3RlY3RlZDoKICAgICBUZXh0Q29udHJvbElubmVyRWxlbWVudChEb2N1bWVudCYpOwotICAgIHZp
cnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiBjbGFzcyBUZXh0Q29udHJvbElu
bmVyVGV4dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8VGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50PiBjcmVhdGUoRG9jdW1l
bnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7CiAK
ICAgICBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIHJlbmRlcmVyKCkgY29uc3Q7CiAKIHBy
aXZhdGU6CiAgICAgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KERvY3VtZW50Jik7Ci0gICAg
dmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVu
ZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBSZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2xJbm5lclRl
eHRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8UmVuZGVy
U3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBS
ZW5kZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKKyAgICBib29sIGlzTW91c2VG
b2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiB9OwogCiBjbGFzcyBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25FbGVtZW50IGZpbmFsIDog
cHVibGljIEhUTUxEaXZFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNlYXJjaEZp
ZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKICNpZiAhUExBVEZPUk0oSU9TKQot
ICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRl
OworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBvdmVycmlkZTsKICNl
bmRpZgogCiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbkVsZW1lbnQoRG9j
dW1lbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIFNlYXJjaEZpZWxkQ2FuY2Vs
QnV0dG9uRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShEb2N1
bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsK
ICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VD
bGlja0V2ZW50cygpIG92ZXJyaWRlOworICAgIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIFNlYXJjaEZpZWxkQ2Fu
Y2VsQnV0dG9uRWxlbWVudChEb2N1bWVudCYpOwotICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9j
dXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTW91
c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYy5jcHAKaW5kZXgg
M2NkMWZmNTRmZDNhNGEzMjRkMTI5ZmU0ZDJjNzkwNDdiZTA1MDNmMy4uMmMwNjQ2NzAwMWNmZWNi
Y2M5NTA2YTQzNTBlYTgyODFhOGEyNDQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNCdXR0b25FbGVtZW50TWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMu
Y3BwCkBAIC00OCwxMSArNDgsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlckltYWdl
Q29udHJvbHNCdXR0b24oKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9n
aWNhbFdpZHRoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVp
Z2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dp
Y2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQo
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxF
eHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25z
dCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckltYWdl
Q29udHJvbHNCdXR0b24iOyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVS
ZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklt
YWdlQ29udHJvbHNCdXR0b24iOyB9CisgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxj
UHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBSZW5k
ZXJJbWFnZUNvbnRyb2xzQnV0dG9uOjpSZW5kZXJJbWFnZUNvbnRyb2xzQnV0dG9uKEhUTUxFbGVt
ZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnRNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxl
bWVudE1hYy5oCmluZGV4IDEzNGZjMjA4YzdkYjE0Y2UyNTMzZWI5NDQ3NDNiMDdkOGQ2MTk0Njku
Ljc0NzVlZjY3MDFlMzFlOWJiOWYxY2UwNWVkNzM1YWFkNDQ2ODIxNDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1h
Yy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzQnV0
dG9uRWxlbWVudE1hYy5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBJbWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudE1hYyhEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRl
clN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZUNvbnRyb2xzQnV0dG9uRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzSW1hZ2VDb250cm9sc0J1dHRvbkVsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVt
ZW50TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xz
Um9vdEVsZW1lbnRNYWMuY3BwCmluZGV4IDA2YmZjNWQwMTFhMGY5ZWMxOTg1NGM3YmM3YTA4MDdl
Mjc2ODdhODUuLjFjMjA0MTI4YjJjZTBmYzgzNzIzNzJiMzZlOGU3YjIxNzcwMWNiOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnRNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnRNYWMuY3BwCkBAIC00MiwxMSArNDIsMTEgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgflJlbmRlckltYWdlQ29udHJvbHMoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBs
b2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0
ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlckltYWdlQ29udHJvbHMiOyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzRm9y
Y2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlckltYWdlQ29udHJvbHMiOyB9CisgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVj
YWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiBS
ZW5kZXJJbWFnZUNvbnRyb2xzOjpSZW5kZXJJbWFnZUNvbnRyb2xzKEhUTUxFbGVtZW50JiBlbGVt
ZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9tYWMvSW1hZ2VDb250cm9sc1Jvb3RFbGVtZW50TWFjLmgKaW5k
ZXggZTIzZjRlMWZkOTNiM2Y5OGMyZGU5ZjM3YTYwMjE2ZWMyMDlmNjY4NS4uNzkzZmE3NmM0YTk5
Mzg3Yjg4ZTgxZTcxMWQ0NzUzMTlmZDkxMzliYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvbWFjL0ltYWdlQ29udHJvbHNSb290RWxlbWVudE1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L21hYy9JbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEltYWdlQ29udHJvbHNSb290
RWxlbWVudE1hYyhEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaAppbmRleCBiZmY2MDcxNTU5OTAzMWQ2MmE0
ODJlNTlhMmU2ODA1ZTg1OWQ0MDc4Li4wOGVhZWJmZWFlYTRmZTVkOGQ4ZGY5ZGZlZjlhOTJjM2M1
NDU1ZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1ZGlvVHJhY2suaApAQCAtNjEsMTIg
KzYxLDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBtYWluRGVz
Y0tleXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiB0cmFuc2xhdGlvbktl
eXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29y
ZCgpOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5
QXRvbTsgfQogCi0gICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2VuYWJsZWQ7IH0KICAgICB2b2lkIHNldEVuYWJsZWQoY29uc3QgYm9vbCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1fY2xpZW50ID0gbnVsbHB0
cjsgfQorICAgIHZvaWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1fY2xpZW50ID0gbnVsbHB0
cjsgfQogICAgIEF1ZGlvVHJhY2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAKICAgICBzaXplX3QgaW5iYW5kVHJhY2tJbmRleCgpOwpAQCAtNzcsNyArNzcsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgQXVkaW9UcmFjayhBdWRpb1RyYWNrQ2xpZW50KiwgUGFzc1JlZlB0
cjxBdWRpb1RyYWNrUHJpdmF0ZT4pOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
VmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8g
QXVkaW9UcmFja1ByaXZhdGVDbGllbnQKICAgICB2b2lkIGVuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJh
Y2tQcml2YXRlKiwgYm9vbCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0F1ZGlvVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0F1
ZGlvVHJhY2tMaXN0LmgKaW5kZXggNzNmYzA0YTk3OTUyOGVmMGQ1NTRjYTU5ZjlhODUxYWI0ODk0
NWU2YS4uNTgzYmZmN2E0MmNlMjAwMGIzZjYxM2JmOGZhODJiYzYzMDliMjRhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9BdWRpb1RyYWNrTGlzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svQXVkaW9UcmFja0xpc3QuaApAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxBdWRpb1RyYWNrPik7CiAKICAgICAv
LyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJn
ZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIEF1
ZGlvVHJhY2tMaXN0KEhUTUxNZWRpYUVsZW1lbnQqLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCmluZGV4IGVmNTJlNzMwOTA5MWVhMDk2ZmM0
OWFkYmJiZDk0ZWE4Y2Y5NDg2M2IuLjIwMDc5NGRiNWI4ZTQ2ZDJkZjI5MDQwZDQ0MGRlMTM2OThl
ZjMzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCkBAIC03Myw3ICs3Myw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCB+RGF0YUN1ZSgpOwotICAgIHZpcnR1YWwg
Q3VlVHlwZSBjdWVUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRGF0YTsgfQorICAgIEN1
ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIERhdGE7IH0KIAogICAgIFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdDsKICAgICB2b2lkIHNldERhdGEoQXJy
YXlCdWZmZXIqLCBFeGNlcHRpb25Db2RlJik7CkBAIC04OCw5ICs4OCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KICNl
bmRpZgogCi0gICAgdmlydHVhbCBib29sIGlzRXF1YWwoY29uc3QgVGV4dFRyYWNrQ3VlJiwgQ3Vl
TWF0Y2hSdWxlcykgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGN1ZUNvbnRlbnRz
TWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRleHRUcmFja0N1ZSYsIEN1ZU1hdGNoUnVsZXMpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgY3VlQ29udGVudHNNYXRjaChjb25zdCBUZXh0VHJhY2tDdWUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGRvZXNFeHRlbmRDdWUoY29uc3QgVGV4dFRyYWNr
Q3VlJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBEYXRhQ3VlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgQXJyYXlCdWZmZXIqLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCmluZGV4IGU5
NWU3NmMwZjVmYjZjMjRiYmM4MWQ0OTJkMWZiMWFmNjQ4MjZhNzkuLjhiZTEwZWEzMDhmMzZlZDBk
ZGQzMDc3M2U4MzY2OGMwNjg3OTE0MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kRGF0YVRleHRUcmFjay5oCkBAIC01MCwxMyArNTAsMTMgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBJbmJhbmREYXRhVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBU
ZXh0VHJhY2tDbGllbnQqLCBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCosIHVu
c2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZERhdGFDdWUoSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZSosIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25z
dCB2b2lkKiwgdW5zaWduZWQpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUp
Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNv
bnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRyPFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSos
IGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRy
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlbW92ZURhdGFDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZUN1ZShUZXh0VHJhY2tDdWUqLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGREYXRhQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0
LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUGFzc1JlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbj4sIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRGF0
YUN1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24+KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZURhdGFDdWUoSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBQ
YXNzUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRl
OwogCiAgICAgSGFzaE1hcDxSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
LCBSZWZQdHI8RGF0YUN1ZT4+IG1faW5jb21wbGV0ZUN1ZU1hcDsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAppbmRleCA5
MGEwZGU4ODE3NDZkMzA2Nzk5OTI4MDU3ZmM2OGIyZGRhY2VhMTljLi43MmIwNWZkOTUzMDQzNjZj
NmZmOGU5ZDZlOWJjMmE4ZTU3ZjEwZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZEdlbmVyaWNUZXh0VHJhY2suaApAQCAtNjgsMjEgKzY4LDIxIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgSW5iYW5kR2VuZXJpY1RleHRUcmFjayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVGV4dFRyYWNrQ2xpZW50KiwgUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2
YXRlPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlKiwgUGFzc1JlZlB0cjxHZW5lcmljQ3VlRGF0YT4pIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVHZW5lcmljQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmlj
Q3VlRGF0YSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVHZW5lcmljQ3VlKElu
YmFuZFRleHRUcmFja1ByaXZhdGUqLCBHZW5lcmljQ3VlRGF0YSopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgUGFz
c1JlZlB0cjxHZW5lcmljQ3VlRGF0YT4pIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlR2VuZXJp
Y0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2VuZXJpY0N1ZURhdGEqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIEdlbmVy
aWNDdWVEYXRhKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiwg
RXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiAgICAgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVH
ZW5lcmljPiBjcmVhdGVDdWUoUGFzc1JlZlB0cjxHZW5lcmljQ3VlRGF0YT4pOwogICAgIHZvaWQg
dXBkYXRlQ3VlRnJvbUN1ZURhdGEoVGV4dFRyYWNrQ3VlR2VuZXJpYyosIEdlbmVyaWNDdWVEYXRh
Kik7CiAKICAgICBXZWJWVFRQYXJzZXImIHBhcnNlcigpOwotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZVdlYlZUVEN1ZURhdGEoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IElTT1dlYlZUVEN1
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZVdlYlZUVEZpbGVIZWFkZXIoSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZSosIFN0cmluZykgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZVdl
YlZUVEN1ZURhdGEoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IElTT1dlYlZUVEN1ZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VXZWJWVFRGaWxlSGVhZGVyKEluYmFuZFRleHRUcmFj
a1ByaXZhdGUqLCBTdHJpbmcpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNQ
YXJzZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbmV3UmVnaW9uc1BhcnNlZCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaWxlRmFpbGVkVG9QYXJzZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgbmV3UmVnaW9uc1Bh
cnNlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsZUZhaWxlZFRvUGFyc2UoKSBvdmVycmlkZTsK
IAogICAgIEdlbmVyaWNUZXh0VHJhY2tDdWVNYXAgbV9jdWVNYXA7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYlZUVFBhcnNlcj4gbV93ZWJWVFRQYXJzZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCBmZDFhOWUzNDdmNDhkNzg3OTlhMTQ3NTYzNDBk
NTMyMGM1ZTYxZDViLi45ZmJjZDQ1NDI1ZDc1NGIwYWViY2YxNjlkNWViZjgwOWQyNjUxMDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKQEAgLTQxLDE1
ICs0MSwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIFBhc3NS
ZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4pOwogICAgIHZpcnR1YWwgfkluYmFuZFRleHRU
cmFjaygpOwogCi0gICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTREgoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRNb2RlKGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNDbG9zZWRDYXB0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNTREgoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TW9kZShjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBzaXplX3QgaW5iYW5kVHJh
Y2tJbmRleCgpOwogCi0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0b21pY1N0cmluZyBpbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNl
dFByaXZhdGUoUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPik7CiAKQEAgLTYyLDI5
ICs2MiwyOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+
IG1fcHJpdmF0ZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbmJhbmQoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGlkQ2hh
bmdlZChUcmFja1ByaXZhdGVCYXNlKiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGxhYmVsQ2hhbmdlZChUcmFja1ByaXZhdGVCYXNlKiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxhbmd1YWdlQ2hhbmdlZChU
cmFja1ByaXZhdGVCYXNlKiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxSZW1vdmUoVHJhY2tQcml2YXRlQmFzZSopIG92ZXJyaWRlOworICAgIGJv
b2wgaXNJbmJhbmQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAg
dm9pZCBpZENoYW5nZWQoVHJhY2tQcml2YXRlQmFzZSosIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOworICAgIHZvaWQgbGFiZWxDaGFuZ2VkKFRyYWNrUHJpdmF0ZUJhc2UqLCBjb25zdCBB
dG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxhbmd1YWdlQ2hhbmdlZChUcmFja1By
aXZhdGVCYXNlKiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxs
UmVtb3ZlKFRyYWNrUHJpdmF0ZUJhc2UqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBh
ZGREYXRhQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGFkZERhdGFDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IHZvaWQqLCB1bnNp
Z25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAjaWYgRU5BQkxFKERB
VEFDVUVfVkFMVUUpCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUoSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFBhc3NSZWZQdHI8
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+LCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFD
dWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+KSBvdmVy
cmlkZSAgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVE
YXRhQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBN
ZWRpYVRpbWUmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPikg
b3ZlcnJpZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGFkZERhdGFDdWUo
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+LCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCB1cGRh
dGVEYXRhQ3VlKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
Pikgb3ZlcnJpZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIHJlbW92ZURh
dGFDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1l
ZGlhVGltZSYsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+KSBv
dmVycmlkZSAgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgUGFzc1JlZlB0cjxH
ZW5lcmljQ3VlRGF0YT4pIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2Vu
ZXJpY0N1ZURhdGEqKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIEdlbmVy
aWNDdWVEYXRhKikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQg
YWRkR2VuZXJpY0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgUGFzc1JlZlB0cjxHZW5lcmlj
Q3VlRGF0YT4pIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIHVw
ZGF0ZUdlbmVyaWNDdWUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIEdlbmVyaWNDdWVEYXRhKikg
b3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgcmVtb3ZlR2VuZXJp
Y0N1ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgR2VuZXJpY0N1ZURhdGEqKSBvdmVycmlkZSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRG
aWxlSGVhZGVyKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBTdHJpbmcpIG92ZXJyaWRlIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRh
KEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRD
dWVEYXRhKEluYmFuZFRleHRUcmFja1ByaXZhdGUqLCBjb25zdCBJU09XZWJWVFRDdWUmKSBvdmVy
cmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBwYXJzZVdlYlZUVEZpbGVI
ZWFkZXIoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSosIFN0cmluZykgb3ZlcnJpZGUgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKEluYmFuZFRleHRU
cmFja1ByaXZhdGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJbmJhbmRUZXh0VHJh
Y2tQcml2YXRlKiwgY29uc3QgSVNPV2ViVlRUQ3VlJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCi0gICAgdmlydHVhbCBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCBv
dmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0luYmFuZFdlYlZUVFRleHRUcmFjay5oCmluZGV4IDllNTQ0MmMwY2Ni
NTc4ZWZlNDQyMWUyNmY2Zjk0NzZjOGYxYjliOWYuLmQ4M2I2MTMzNTlhZjA0Zjk1N2E2YmI3NTlh
MDg3N2QzNDFkZmNjOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5i
YW5kV2ViVlRUVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmRXZWJWVFRUZXh0VHJhY2suaApAQCAtNDQsMTIgKzQ0LDEyIEBAIHByaXZhdGU6CiAgICAgSW5i
YW5kV2ViVlRUVGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUZXh0VHJhY2tDbGll
bnQqLCBQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+KTsKIAogICAgIFdlYlZUVFBh
cnNlciYgcGFyc2VyKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0YShJbmJh
bmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VXZWJWVFRDdWVEYXRhKEluYmFuZFRleHRU
cmFja1ByaXZhdGUqLCBjb25zdCBJU09XZWJWVFRDdWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
cnNlV2ViVlRUQ3VlRGF0YShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlV2ViVlRUQ3VlRGF0
YShJbmJhbmRUZXh0VHJhY2tQcml2YXRlKiwgY29uc3QgSVNPV2ViVlRUQ3VlJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBuZXdSZWdpb25zUGFyc2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZp
bGVGYWlsZWRUb1BhcnNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBuZXdDdWVzUGFyc2VkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBuZXdSZWdpb25zUGFyc2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBm
aWxlRmFpbGVkVG9QYXJzZSgpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlZU
VFBhcnNlcj4gbV93ZWJWVFRQYXJzZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9Mb2FkYWJsZVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9Mb2FkYWJsZVRleHRUcmFjay5oCmluZGV4IDljNzRjZTY2MzI4ZDc1MDhmMGE4OWFlZDhkYmEx
M2EwNjE1NWQyZDguLmQzYjdlOGMzOTU2ZjBmNTkxNWZhZDk3ZjUzY2Q5OGY0MTc1NWEzOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svTG9hZGFibGVUZXh0VHJhY2suaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0xvYWRhYmxlVGV4dFRyYWNrLmgKQEAgLTQ4
LDIzICs0OCwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjaGVkdWxlTG9hZChjb25zdCBVUkwm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQg
Y2xlYXJDbGllbnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBzaXplX3QgdHJhY2tFbGVtZW50SW5kZXgoKTsKICAgICBIVE1MVHJhY2tFbGVtZW50KiB0
cmFja0VsZW1lbnQoKSB7IHJldHVybiBtX3RyYWNrRWxlbWVudDsgfQogICAgIHZvaWQgc2V0VHJh
Y2tFbGVtZW50KEhUTUxUcmFja0VsZW1lbnQqKTsKLSAgICB2aXJ0dWFsIEVsZW1lbnQqIGVsZW1l
bnQoKSBvdmVycmlkZTsKKyAgICBFbGVtZW50KiBlbGVtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNEZWZhdWx0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0RlZmF1
bHQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wgaXNEZWZhdWx0KSBvdmVy
cmlkZSAgeyBtX2lzRGVmYXVsdCA9IGlzRGVmYXVsdDsgfQorICAgIGJvb2wgaXNEZWZhdWx0KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0RlZmF1bHQ7IH0KKyAgICB2b2lkIHNldElzRGVm
YXVsdChib29sIGlzRGVmYXVsdCkgb3ZlcnJpZGUgIHsgbV9pc0RlZmF1bHQgPSBpc0RlZmF1bHQ7
IH0KIAogcHJpdmF0ZToKICAgICAvLyBUZXh0VHJhY2tMb2FkZXJDbGllbnQKLSAgICB2aXJ0dWFs
IHZvaWQgbmV3Q3Vlc0F2YWlsYWJsZShUZXh0VHJhY2tMb2FkZXIqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgY3VlTG9hZGluZ0NvbXBsZXRlZChUZXh0VHJhY2tMb2FkZXIqLCBib29sIGxv
YWRpbmdGYWlsZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBuZXdSZWdpb25zQXZhaWxh
YmxlKFRleHRUcmFja0xvYWRlciopIG92ZXJyaWRlOworICAgIHZvaWQgbmV3Q3Vlc0F2YWlsYWJs
ZShUZXh0VHJhY2tMb2FkZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1ZUxvYWRpbmdDb21wbGV0
ZWQoVGV4dFRyYWNrTG9hZGVyKiwgYm9vbCBsb2FkaW5nRmFpbGVkKSBvdmVycmlkZTsKKyAgICB2
b2lkIG5ld1JlZ2lvbnNBdmFpbGFibGUoVGV4dFRyYWNrTG9hZGVyKikgb3ZlcnJpZGU7CiAKICAg
ICBMb2FkYWJsZVRleHRUcmFjayhIVE1MVHJhY2tFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBraW5k
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXggNmE4Y2RhMTljMGM3ZGVjMzcxOWFlNjhm
YmNiOGQxZmE3NzFjNGNlYS4uYzdiNGE5MDJjYWEzZDU4MzlhNGM4ODZlOGJjNzM0YTJhZmEwOWZh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC02Myw4ICs2Myw4IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+VGV4dFRyYWNrKCk7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gVGV4dFRyYWNrRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9Ci0g
ICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBUZXh0VHJhY2tFdmVudFRhcmdldEludGVyZmFjZVR5
cGU7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9CiAKICAgICBzdGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudU9mZkl0ZW0oKTsKICAgICBz
dGF0aWMgVGV4dFRyYWNrKiBjYXB0aW9uTWVudUF1dG9tYXRpY0l0ZW0oKTsKQEAgLTc1LDE0ICs3
NSwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2hhcHRlcnNL
ZXl3b3JkKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgbWV0YWRhdGFLZXl3b3Jk
KCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZm9yY2VkS2V5d29yZCgpOwotICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdWJ0aXRsZXNLZXl3b3JkKCk7IH0KKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN1YnRp
dGxlc0tleXdvcmQoKTsgfQogICAgIHN0YXRpYyBib29sIGlzVmFsaWRLaW5kS2V5d29yZChjb25z
dCBBdG9taWNTdHJpbmcmKTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGRpc2Fi
bGVkS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGhpZGRlbktleXdv
cmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzaG93aW5nS2V5d29yZCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHNldEtpbmQoY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0KIApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6
CiAgICAgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcygpOwogICAgIFRleHRUcmFja0N1ZUxpc3QqIGFj
dGl2ZUN1ZXMoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpIG92ZXJy
aWRlIHsgbV9jbGllbnQgPSAwOyB9CisgICAgdm9pZCBjbGVhckNsaWVudCgpIG92ZXJyaWRlIHsg
bV9jbGllbnQgPSAwOyB9CiAgICAgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBt
X2NsaWVudDsgfQogCiAgICAgdm9pZCBhZGRDdWUoUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+LCBF
eGNlcHRpb25Db2RlJik7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlQWxsQ3VlcygpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRMYW5ndWFnZShjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAg
dmlydHVhbCBib29sIGlzSW5iYW5kKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE1MSwx
MiArMTUxLDEyIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9j
dWVzOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9t
aWNTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVmFsaWRLaW5kKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGVuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsg
ZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IHJl
ZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJl
ZigpOyB9CiAKICAgICBWVFRSZWdpb25MaXN0KiBlbnN1cmVWVFRSZWdpb25MaXN0KCk7CiAgICAg
UmVmUHRyPFZUVFJlZ2lvbkxpc3Q+IG1fcmVnaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5oCmluZGV4IDdlNTkyM2M3ODNlMDY2NWJlYzQzZjA5Yzk5ZjhhNjc1MDcy
ZjA4NTUuLjUyMGE5Y2MyMWZkMTgzOTE0MDhkMTg4MDhmNjVkNTVlMjg1MmZmZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtODAsMTMgKzgwLDEzIEBAIHB1
YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVDdWVJbmRleCgpOwogCiAgICAgdXNpbmcgRXZlbnRU
YXJnZXQ6OmRpc3BhdGNoRXZlbnQ7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoRXZl
bnQmKSBvdmVycmlkZTsKKyAgICBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNBY3RpdmUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNBY3RpdmUoYm9v
bCk7CiAKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gVGV4dFRyYWNrQ3VlRXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gJm1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dDsgfQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gVGV4dFRyYWNr
Q3VlRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
ICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc09yZGVy
ZWRCZWZvcmUoY29uc3QgVGV4dFRyYWNrQ3VlKikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlz
UG9zaXRpb25lZEFib3ZlKGNvbnN0IFRleHRUcmFja0N1ZSogY3VlKSBjb25zdCB7IHJldHVybiBp
c09yZGVyZWRCZWZvcmUoY3VlKTsgfQpAQCAtMTIyLDggKzEyMiw4IEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKIAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZp
bmFsIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJy
aWRlIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlk
ZSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUg
ZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBNZWRpYVRpbWUgbV9z
dGFydFRpbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmNwcAppbmRleCAxYzJkNzY2OTk5YmRhODVlNmYzMzg5ODU2M2RiOTg1NjhkNTI1ODMw
Li5mNjZlYzc0MTA5NGNhNDVkZTUwYjA4MTZjODIxMGZmMTJlNzM5N2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKQEAgLTU0LDcg
KzU0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0VHJhY2tD
dWVHZW5lcmljQm94RWxlbWVudChkb2N1bWVudCwgY3VlKSk7CiAgICAgfQogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBseUNTU1Byb3BlcnRpZXMoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgYXBwbHlDU1NQcm9wZXJ0aWVzKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAg
ICAKIHByaXZhdGU6CiAgICAgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQoRG9jdW1lbnQm
LCBWVFRDdWUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVH
ZW5lcmljLmgKaW5kZXggMzM0YzQ3ZTQ3MzZkZTI2ZTAyNmI4ZDdkZDYyMzlhOTg3MTcwM2MyMi4u
M2YzNTY3MmRhNGYzNWMyMmI0ZjkyODQxMzQyOTM3ZDhiNDQ3N2MwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTQ1LDEwICs0NSwx
MCBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3VlR2VuZXJpYygpIHsg
fQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFZUVEN1ZUJveD4gY3JlYXRlRGlzcGxheVRyZWUo
KSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFZUVEN1ZUJveD4gY3JlYXRlRGlzcGxheVRyZWUo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRMaW5lKGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUsIEV4
Y2VwdGlvbkNvZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExpbmUoZG91YmxlLCBFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihkb3VibGUsIEV4Y2VwdGlv
bkNvZGUmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgdXNlRGVmYXVsdFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9kZWZhdWx0UG9zaXRpb247IH0KICAgICAKQEAgLTcwLDE3ICs3MCwxNyBAQCBw
dWJsaWM6CiAgICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hs
aWdodENvbG9yOyB9CiAgICAgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihSR0JBMzIgY29sb3IpIHsg
bV9oaWdobGlnaHRDb2xvci5zZXRSR0IoY29sb3IpOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0
YW50KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0VxdWFsKGNvbnN0IFRleHRUcmFj
a0N1ZSYsIEN1ZU1hdGNoUnVsZXMpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBj
dWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBkb2VzRXh0ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNFcXVhbChjb25zdCBUZXh0VHJhY2tDdWUmLCBDdWVNYXRjaFJ1
bGVzKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4
dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBkb2VzRXh0ZW5kQ3VlKGNvbnN0
IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBUZXh0VHJhY2tD
dWU6OkN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFRleHRUcmFja0N1
ZTo6R2VuZXJpYzsgfQorICAgIFRleHRUcmFja0N1ZTo6Q3VlVHlwZSBjdWVUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gVGV4dFRyYWNrQ3VlOjpHZW5lcmljOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBib29sIGlzT3JkZXJlZEJlZm9yZShjb25zdCBUZXh0VHJhY2tDdWUqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQb3NpdGlvbmVkQWJvdmUoY29uc3QgVGV4
dFRyYWNrQ3VlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc09yZGVyZWRCZWZvcmUoY29u
c3QgVGV4dFRyYWNrQ3VlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Bvc2l0aW9uZWRB
Ym92ZShjb25zdCBUZXh0VHJhY2tDdWUqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFRleHRUcmFj
a0N1ZUdlbmVyaWMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmKTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKaW5kZXggNmFhMDBlMDM1ZDkwNWM0Nzg0
NjU4MTJmMDliMWZiNzkzNDAzYjNkOC4uMDQxZTIxODhkNjRmZmViY2EzOTVjZGVjZjY4OWU1Nzhh
Mjg3NDczMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmgKQEAg
LTQyLDIwICs0MiwyMCBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflRleHRUcmFja0xp
c3QoKTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgaW50IGdldFRyYWNrSW5k
ZXgoVGV4dFRyYWNrKik7CiAgICAgaW50IGdldFRyYWNrSW5kZXhSZWxhdGl2ZVRvUmVuZGVyZWRU
cmFja3MoVGV4dFRyYWNrKik7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zKFRyYWNrQmFzZSop
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnMoVHJhY2tCYXNlKikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBUZXh0VHJhY2sqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAg
IFRleHRUcmFjayogZ2V0VHJhY2tCeUlkKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFRleHRU
cmFjayogbGFzdEl0ZW0oKSBjb25zdCB7IHJldHVybiBpdGVtKGxlbmd0aCgpIC0gMSk7IH0KIAog
ICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VGV4dFRyYWNrPik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZShUcmFja0Jhc2UqLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlbW92ZShUcmFja0Jhc2UqLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKSBv
dmVycmlkZTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldElu
dGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgVGV4dFRyYWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
cmFja0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RyYWNrRXZlbnQuaAppbmRl
eCBlZDFiOWU1ZmUzMTBjMzU3MTkwNTkzOGU5YzRlN2Q3YWQ5NzYxNzMxLi40NjZkOWY4ODI5ODY3
OWU4YmExNzdlY2ZmNzhlZmRlMTgzOGZjZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RyYWNrRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Ry
YWNrRXZlbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRyYWNrRXZlbnQodHlwZSwgaW5pdGlhbGl6ZXIpKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFRyYWNrQmFzZSogdHJhY2soKSBjb25zdCB7IHJldHVybiBtX3RyYWNrLmdldCgpOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVHJhY2tMaXN0QmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNlLmgKaW5kZXggODRhNWNiYzVhOTc5
ZTBmNjI2NWNjMjZkNzNkOGVkYmNmYzk2MThjMy4uYjRmMDA2ZDcxY2RmYjZiOWYyNWZjNmYxZjJk
ZmMxMzM1ZDU3YzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFj
a0xpc3RCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UcmFja0xpc3RCYXNl
LmgKQEAgLTUxLDEwICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShU
cmFja0Jhc2UqLCBib29sIHNjaGVkdWxlRXZlbnQgPSB0cnVlKTsKIAogICAgIC8vIEV2ZW50VGFy
Z2V0Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKICAgICB1c2luZyBSZWZDb3VudGVk
PFRyYWNrTGlzdEJhc2U+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUcmFja0xpc3RCYXNl
Pjo6ZGVyZWY7Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9jb250ZXh0OyB9
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fY29udGV4dDsgfQogCiAgICAgdm9pZCBjbGVh
ckVsZW1lbnQoKSB7IG1fZWxlbWVudCA9IDA7IH0KICAgICBFbGVtZW50KiBlbGVtZW50KCkgY29u
c3Q7CkBAIC03Nyw4ICs3Nyw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzY2hlZHVsZVRyYWNrRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUsIFBhc3NSZWZQdHI8VHJhY2tCYXNlPik7
CiAKICAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgp
IG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmRXZlbnRUYXJn
ZXQoKSBvdmVycmlkZSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX2NvbnRleHQ7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9lbGVtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVlRUQ3VlLmgKaW5kZXggZDQ5NGY2MTgwNDk5MmRhZjJmZGY5OTgwYWZmNWZl
MjZkNDVkMTY4Mi4uNzM4NmU2NWFiOTdjM2FiNDNhZjQ1ZDE4MTFmMjE0NjM4NmUwZTk2YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKIHBy
b3RlY3RlZDoKICAgICBWVFRDdWVCb3goRG9jdW1lbnQmLCBWVFRDdWUmKTsKIAotICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJl
bmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZSBmaW5hbDsK
IAogICAgIFZUVEN1ZSYgbV9jdWU7CiAgICAgaW50IG1fZm9udFNpemVGcm9tQ2FwdGlvblVzZXJQ
cmVmczsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZWdpb25JZChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIG5vdGlmeVJlZ2lvbldoZW5SZW1vdmluZ0Rpc3BsYXlU
cmVlKGJvb2wpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldElzQWN0aXZlKGJvb2wpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0SXNBY3RpdmUoYm9vbCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc0Rp
c3BsYXlUcmVlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5VHJlZTsgfQogICAgIFZUVEN1ZUJv
eCogZ2V0RGlzcGxheVRyZWUoY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBpbnQgZm9udFNpemUp
OwpAQCAtMTYxLDE0ICsxNjEsMTQgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldEZv
bnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc0VxdWFsKGNvbnN0IFRleHRUcmFja0N1ZSYsIEN1ZU1hdGNoUnVsZXMpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjdWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRU
cmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkb2VzRXh0ZW5kQ3Vl
KGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNFcXVhbChj
b25zdCBUZXh0VHJhY2tDdWUmLCBDdWVNYXRjaFJ1bGVzKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBkb2VzRXh0ZW5kQ3VlKGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBDdWVUeXBlIGN1ZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBXZWJWVFQ7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIEN1ZVR5cGUgY3VlVHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFdlYlZUVDsgfQorICAgIGJvb2wgaXNSZW5kZXJhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICAgICBWVFRDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1RyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaAppbmRleCBjOTkzNGE1OGI5MmY2
NjFlMmZlOWNjNWIxZmE5MTlhZWEyNDFiMjQ3Li4yNzQzNDY1YmQwYzg0OTc2YWYxMTQyNDExYWE3
MGE2OGU4YzdiZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVv
VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2suaApAQCAt
NjAsMTkgKzYwLDE5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBz
aWduS2V5d29yZCgpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN1YnRpdGxlc0tl
eXdvcmQoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjb21tZW50YXJ5S2V5d29y
ZCgpOwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBkZWZhdWx0S2luZEtleXdvcmQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGRlZmF1bHRLaW5kS2V5d29yZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5
QXRvbTsgfQogCiAgICAgYm9vbCBzZWxlY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0ZWQ7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWQoY29uc3QgYm9vbCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1fY2xpZW50ID0gMDsgfQorICAgIHZv
aWQgY2xlYXJDbGllbnQoKSBvdmVycmlkZSB7IG1fY2xpZW50ID0gMDsgfQogICAgIFZpZGVvVHJh
Y2tDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICBzaXpl
X3QgaW5iYW5kVHJhY2tJbmRleCgpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0S2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0TGFuZ3VhZ2UoY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAg
IGNvbnN0IE1lZGlhRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKCkgY29uc3Q7CkBAIC04Myw3ICs4
Myw3IEBAIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrKFZpZGVvVHJhY2tDbGllbnQqLCBQYXNz
UmVmUHRyPFZpZGVvVHJhY2tQcml2YXRlPiBwcml2YXRlVHJhY2spOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkS2luZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzVmFsaWRLaW5kKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgLy8gVmlkZW9UcmFja1ByaXZhdGVDbGllbnQKICAgICB2b2lkIHNlbGVj
dGVkQ2hhbmdlZChWaWRlb1RyYWNrUHJpdmF0ZSosIGJvb2wpIG92ZXJyaWRlOwpAQCAtOTQsNyAr
OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKFRyYWNrUHJpdmF0ZUJh
c2UqLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxSZW1vdmUo
VHJhY2tQcml2YXRlQmFzZSopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGVuYWJsZWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzZWxlY3RlZCgpOyB9CisgICAgYm9vbCBlbmFibGVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc2VsZWN0ZWQoKTsgfQogCiAgICAgdm9pZCB1cGRh
dGVLaW5kRnJvbVByaXZhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9WaWRlb1RyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WaWRlb1Ry
YWNrTGlzdC5oCmluZGV4IDRkMWQ2N2U3NGRhMGI5ZDczYTcxODU3YTE4NjllZDhiOWU3YTQ1MjEu
LmY2ZDlkNDVmNzc4NTY5ODk5NDU5NGM5YThmYzhiZDM5MzZiNjExMmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVmlkZW9UcmFja0xpc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1ZpZGVvVHJhY2tMaXN0LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4pOwogCiAgICAgLy8gRXZl
bnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBWaWRlb1Ry
YWNrTGlzdChIVE1MTWVkaWFFbGVtZW50KiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCA1ZWZkYzE1NDgwZGVm
Y2IzYmNhYTgxZjhhOTQ5ZGIyZGRlYjI2MTBmLi40NDcwN2NhMmUxZjE1YTVjZThjMTE0NzZjMjkz
ODU0ODhlNGE4ZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQu
aApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJWVFRFbGVtZW50
PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9kZVR5cGUsIERvY3VtZW50Jik7CiAgICAgUGFzc1JlZlB0
cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERvY3VtZW50Jik7CiAK
LSAgICB2aXJ0dWFsIFJlZjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0Fu
ZENoaWxkcmVuKERvY3VtZW50Jikgb3ZlcnJpZGU7CisgICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxl
bWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2V0V2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9kZVR5cGUgdHlwZSkgeyBtX3dlYlZU
VE5vZGVUeXBlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHR5cGUpOyB9CiAgICAgV2ViVlRUTm9k
ZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJWVFRO
b2RlVHlwZT4obV93ZWJWVFROb2RlVHlwZSk7IH0KQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJWVFRFbGVtZW50KFdlYlZUVE5vZGVUeXBlLCBEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCBib29sIGlzV2ViVlRURWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGlzV2ViVlRURWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHVuc2lnbmVkIG1faXNQYXN0Tm9kZSA6IDE7CiAgICAgdW5z
aWduZWQgbV93ZWJWVFROb2RlVHlwZSA6IDQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElNb2R1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSU1vZHVsZS5oCmluZGV4IGMyNzU5Njg5OTllZDE0YjMzZWUyNzZlZWQx
YzRhZWMzMTIzMzMyMTUuLjI4MWNiOTM0ZjFmYjBkNjVjNmY2NmJmNjc2YWI3ZmU4NzI0ZjZiY2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVs
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSU1vZHVsZS5o
CkBAIC0zNCw4ICszNCw4IEBAIGNsYXNzIENvbW1hbmRMaW5lQVBJTW9kdWxlIGZpbmFsIDogcHVi
bGljIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNb2R1bGUgewogcHVibGljOgogICAgIENvbW1h
bmRMaW5lQVBJTW9kdWxlKCk7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2UoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBob3N0KEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpFeGVjU3RhdGUqKSBjb25zdCBvdmVycmlkZTsKKyAgICBT
dHJpbmcgc291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpKU1ZhbHVlIGhvc3QoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgaW5qZWN0SWZOZWVkZWQoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqLCBjb25zdCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jik7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCAwY2NlZTQwMjY1NTg2
ZjFlMDRiNTRjYjVjZDUxNGIxODkzYzM1MTgzLi5lZmVhNjk2MGY1ZDM5ZDMzZDYzNTY3YTc2MDMz
MmRmMWRmOGU5MjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAt
NTQsMTggKzU0LDE4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29s
IHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisgICAgYm9vbCBwZXJmb3JtKEV4
Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9hbmNob3JOb2RlID0g
bV9ub2RlLT5uZXh0U2libGluZygpOwogICAgICAgICByZXR1cm4gcmVkbyhlYyk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisgICAg
Ym9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG1fbm9kZS5nZXQoKSwgbV9hbmNob3JOb2Rl
LmdldCgpLCBlYyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHJlZG8oRXhjZXB0aW9uQ29k
ZSYgZWMpIG92ZXJyaWRlCisgICAgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+cmVtb3ZlQ2hpbGQobV9ub2Rl
LmdldCgpLCBlYyk7CiAgICAgfQpAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlk
ZQorICAgIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmIChtX25vZGUtPnBhcmVudE5vZGUoKSkgewogICAgICAgICAgICAgbV9yZW1vdmVD
aGlsZEFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KG1fbm9kZS0+
cGFyZW50Tm9kZSgpLCBtX25vZGUuZ2V0KCkpOwpAQCAtOTcsNyArOTcsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX3BhcmVudE5vZGUtPmluc2VydEJlZm9yZShtX25vZGUuZ2V0KCksIG1f
YW5jaG9yTm9kZS5nZXQoKSwgZWMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4
Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBl
Yykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9wYXJlbnROb2RlLT5yZW1vdmVDaGls
ZChtX25vZGUuZ2V0KCksIGVjKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwNiw3
ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZp
cnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJvb2wgcmVk
byhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX3JlbW92
ZUNoaWxkQWN0aW9uICYmICFtX3JlbW92ZUNoaWxkQWN0aW9uLT5yZWRvKGVjKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMCwxOSArMTMwLDE5IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJy
aWRlCisgICAgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgbV92YWx1ZSA9IG1fZWxlbWVudC0+Z2V0QXR0cmlidXRlKG1fbmFtZSk7CiAgICAg
ICAgIHJldHVybiByZWRvKGVjKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNl
cHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX25hbWUs
IG1fdmFsdWUsIGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVh
bCBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlCisgICAgYm9vbCByZWRvKEV4Y2Vw
dGlvbkNvZGUmKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9lbGVtZW50LT5yZW1vdmVBdHRy
aWJ1dGUobV9uYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjYsNyArMTY2LDcgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRp
b25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2hhZEF0dHJpYnV0ZSA9IG1fZWxlbWVudC0+aGFz
QXR0cmlidXRlKG1fbmFtZSk7CiAgICAgICAgIGlmIChtX2hhZEF0dHJpYnV0ZSkKQEAgLTE3NCw3
ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZWRvKGVjKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29s
IHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9o
YWRBdHRyaWJ1dGUpCiAgICAgICAgICAgICBtX2VsZW1lbnQtPnNldEF0dHJpYnV0ZShtX25hbWUs
IG1fb2xkVmFsdWUsIGVjKTsKQEAgLTE4Myw3ICsxODMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUm
IGVjKSBvdmVycmlkZQorICAgIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIG1fZWxlbWVudC0+c2V0QXR0cmlidXRlKG1fbmFtZSwgbV92YWx1ZSwg
ZWMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVj
KSBvdmVycmlkZQorICAgIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIG1fb2xkSFRNTCA9IGNyZWF0ZU1hcmt1cChtX25vZGUuZ2V0KCkpOwog
ICAgICAgICBET01QYXRjaFN1cHBvcnQgZG9tUGF0Y2hTdXBwb3J0KG1fZG9tRWRpdG9yLmdldCgp
LCAmbV9ub2RlLT5kb2N1bWVudCgpKTsKQEAgLTIxOSwxMiArMjE5LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuICFlYzsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRp
b25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9oaXN0b3J5LT51bmRvKGVjKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAg
ICBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBy
ZXR1cm4gbV9oaXN0b3J5LT5yZWRvKGVjKTsKICAgICB9CkBAIC0yNTQsMTkgKzI1NCwxOSBAQCBw
dWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlv
bkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fb2xkVGV4dCA9IG1fdGV4dE5vZGUtPndob2xlVGV4
dCgpOwogICAgICAgICByZXR1cm4gcmVkbyhlYyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29s
IHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisgICAgYm9vbCB1bmRvKEV4Y2VwdGlv
bkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV90ZXh0Tm9kZS0+cmVwbGFjZVdo
b2xlVGV4dChtX29sZFRleHQsIGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisgICAgYm9v
bCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV90ZXh0
Tm9kZS0+cmVwbGFjZVdob2xlVGV4dChtX3RleHQsIGVjKTsKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0yODksMTcgKzI4OSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJvb2wgcGVy
Zm9ybShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBy
ZWRvKGVjKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBl
Yykgb3ZlcnJpZGUKKyAgICBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICByZXR1cm4gbV9wYXJlbnROb2RlLT5yZXBsYWNlQ2hpbGQobV9vbGROb2Rl
LCBtX25ld05vZGUuZ2V0KCksIGVjKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVkbyhF
eGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYg
ZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9wYXJlbnROb2RlLT5yZXBsYWNl
Q2hpbGQobV9uZXdOb2RlLCBtX29sZE5vZGUuZ2V0KCksIGVjKTsKICAgICB9CkBAIC0zMjAsMTkg
KzMyMCwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJvb2wgcGVyZm9ybShFeGNlcHRp
b25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fb2xkVmFsdWUgPSBtX25vZGUt
Pm5vZGVWYWx1ZSgpOwogICAgICAgICByZXR1cm4gcmVkbyhlYyk7CiAgICAgfQogCi0gICAgdmly
dHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisgICAgYm9vbCB1bmRv
KEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9ub2RlLT5zZXRO
b2RlVmFsdWUobV9vbGRWYWx1ZSwgZWMpOwogICAgICAgICByZXR1cm4gIWVjOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJv
b2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fbm9k
ZS0+c2V0Tm9kZVZhbHVlKG1fdmFsdWUsIGVjKTsKICAgICAgICAgcmV0dXJuICFlYzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAppbmRleCA2NTlmZjQ3MzIzNDJlMDkwNGM0MWQ4MTFjYWY5Njc1MjYwNGFjMWI5
Li5mNWJlZGY5MWU3NTY2ZTcxNGM0M2I4MTM5ZTA3NjNmOWVmNTQyMzk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oCkBAIC01MiwxNiArNTIsMTYgQEAgcHVibGljOgogICAgIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAg
ICB2aXJ0dWFsIH5JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQoKSB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRl
QXBwbGljYXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hh
bmdlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFw
cGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGdldE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIFN0cmluZyogbWFuaWZlc3RVUkwpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hlRm9yRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcHBsaWNhdGlvbkNh
Y2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9y
U3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKSBvdmVycmlkZTsKKyAgICB2b2lk
IGdldEFwcGxpY2F0aW9uQ2FjaGVGb3JGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFw
cGxpY2F0aW9uQ2FjaGU+Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0aW9uQ2FjaGU+IGJ1aWxkT2Jq
ZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UmVzb3Vy
Y2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDYWNoZUluZm8mKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDg5
NGUxMDI2Mjc5MWQwMDg4ZTBiMDRhNTQxY2Y3YzYxNWNmMjYxZGEuLjJkNjQ5ZTNmNTg0OTczMzZi
NWRhODViNGQ5YTk1MGMyNWZiNDY2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTc1LDE0ICsxNzUsMTQgQEAgcHVibGljOgogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykg
b3ZlcnJpZGUKKyAgICBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAoIW1fc3R5bGVTaGVldC0+Z2V0VGV4dCgmbV9vbGRUZXh0KSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHJlZG8oZWMpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAg
IGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlm
IChtX3N0eWxlU2hlZXQtPnNldFRleHQobV9vbGRUZXh0LCBlYykpIHsKICAgICAgICAgICAgIG1f
c3R5bGVTaGVldC0+cmVwYXJzZVN0eWxlU2hlZXQobV9vbGRUZXh0KTsKQEAgLTE5MSw3ICsxOTEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHJlZG8oRXhj
ZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9zdHlsZVNoZWV0
LT5zZXRUZXh0KG1fdGV4dCwgZWMpKSB7CiAgICAgICAgICAgICBtX3N0eWxlU2hlZXQtPnJlcGFy
c2VTdHlsZVNoZWV0KG1fdGV4dCk7CkBAIC0yMDAsMTIgKzIwMCwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBtZXJnZUlkKCkg
b3ZlcnJpZGUKKyAgICBTdHJpbmcgbWVyZ2VJZCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNldFN0eWxlU2hlZXRUZXh0ICVzIiwgbV9zdHlsZVNoZWV0
LT5pZCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBtZXJnZShz
dGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRlCisgICAgdm9pZCBtZXJnZShz
dGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBB
U1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkgPT0gbWVyZ2VJZCgpKTsKIApAQCAtMjI4LDI4ICsyMjgs
MjggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShF
eGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29k
ZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gcmVkbyhlYyk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisgICAg
Ym9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1fc3R5bGVTaGVldC0+c2V0U3R5bGVUZXh0KG1fY3NzSWQsIG1fb2xkVGV4dCwgbnVsbHB0
ciwgZWMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVj
KSBvdmVycmlkZQorICAgIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3N0eWxlU2hlZXQtPnNldFN0eWxlVGV4dChtX2Nzc0lkLCBt
X3RleHQsICZtX29sZFRleHQsIGVjKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBtZXJn
ZUlkKCkgb3ZlcnJpZGUKKyAgICBTdHJpbmcgbWVyZ2VJZCgpIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBBU1NFUlQobV9zdHlsZVNoZWV0LT5pZCgpID09IG1fY3NzSWQuc3R5bGVTaGVldElkKCkp
OwogICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNldFN0eWxlVGV4dCAlczoldSIsIG1f
c3R5bGVTaGVldC0+aWQoKS51dGY4KCkuZGF0YSgpLCBtX2Nzc0lkLm9yZGluYWwoKSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlv
bikgb3ZlcnJpZGUKKyAgICB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlv
bikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVChhY3Rpb24tPm1lcmdlSWQoKSA9PSBt
ZXJnZUlkKCkpOwogCkBAIC0yNzMsNyArMjczLDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAg
ICBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBtX29sZFNlbGVjdG9yID0gbV9zdHlsZVNoZWV0LT5ydWxlU2VsZWN0b3IobV9jc3NJZCwgZWMp
OwogICAgICAgICBpZiAoZWMpCkBAIC0yODEsMTIgKzI4MSwxMiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByZWRvKGVjKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRp
b25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9zdHlsZVNoZWV0LT5zZXRSdWxlU2VsZWN0
b3IobV9jc3NJZCwgbV9vbGRTZWxlY3RvciwgZWMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9v
bCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQorICAgIGJvb2wgcmVkbyhFeGNlcHRp
b25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX3N0eWxlU2hlZXQt
PnNldFJ1bGVTZWxlY3RvcihtX2Nzc0lkLCBtX3NlbGVjdG9yLCBlYyk7CiAgICAgfQpAQCAtMzA2
LDE3ICszMDYsMTcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKKyAgICBib29sIHBlcmZvcm0oRXhj
ZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gcmVkbyhlYyk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJy
aWRlCisgICAgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1fc3R5bGVTaGVldC0+ZGVsZXRlUnVsZShtX25ld0lkLCBlYyk7CiAgICAg
fQogCi0gICAgdmlydHVhbCBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCisg
ICAgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
Q1NTU3R5bGVSdWxlKiBjc3NTdHlsZVJ1bGUgPSBtX3N0eWxlU2hlZXQtPmFkZFJ1bGUobV9zZWxl
Y3RvciwgZWMpOwogICAgICAgICBpZiAoZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IGNlMDU3MDc2ZGFmZTk2N2QyYjEzNWNhZDc4ZjBjZjEz
NzQxMDNjMTUuLmUwZDIxYTAxZDhiODVlM2VjYzczMTk2NjkwYmQwZWUyNTg4Y2YyMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC04NiwxMSAr
ODYsMTEgQEAgcHVibGljOgogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1
bGUoQ1NTUnVsZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2NhcmRBZ2VudCgp
IG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZWdpb25PdmVy
c2V0Q2hhbmdlZChXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogICAgIHZv
aWQgcmVzZXQoKTsKIApAQCAtMTA1LDIxICsxMDUsMjEgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
VW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiwgV2ViS2l0TmFtZWRG
bG93JiwgTm9kZSYgY29udGVudEVsZW1lbnQpOwogICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShF
bGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRl
SW5oZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1h
dGNoZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVy
aXRlZEVudHJpZXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxTdHlsZVNoZWV0
cyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+PiYgc3R5bGVTaGVldEluZm9z
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3R5bGVTaGVldChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpDU1NTdHlsZVNoZWV0Qm9keT4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNo
ZWV0SWQsIFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5
bGVTaGVldFRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgY29u
c3QgU3RyaW5nJiB0ZXh0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3R5bGVUZXh0
KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHN0eWxlSWQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NT
U3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSdWxlU2VsZWN0
b3IoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcnVsZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlU3R5
bGVTaGVldChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHls
ZVNoZWV0SWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRSdWxlKEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1J1bGU+JiByZXN1bHQpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5n
JiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6Q1NTUHJvcGVydHlJbmZvPj4mIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYsIGludCBub2Rl
SWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGZvcmNlZFBzZXVkb0NsYXNzZXMp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9y
U3RyaW5nJiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+PiYgcmVzdWx0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpIG92ZXJy
aWRlOworICAgIHZvaWQgZ2V0TWF0Y2hlZFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRlUHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5o
ZXJpdGVkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpQc2V1ZG9JZE1hdGNo
ZXM+PiYgcHNldWRvSWRNYXRjaGVzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRl
ZEVudHJpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJp
bmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykgb3ZlcnJpZGU7
CisgICAgdm9pZCBnZXRTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHls
ZVNoZWV0SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlU2hlZXRC
b2R5PiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFN0eWxlU2hlZXRUZXh0KEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIFN0cmluZyogcmVzdWx0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCYgc3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSdWxl
U2VsZWN0b3IoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYg
cnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVN0eWxl
U2hlZXQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0cmluZyogc3R5bGVT
aGVldElkKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHN0eWxlU2hlZXRJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlJ
bmZvPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250
RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmb3JjZVBzZXVkb1N0YXRl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYgZm9yY2VkUHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXROYW1lZEZsb3dD
b2xsZWN0aW9uKEVycm9yU3RyaW5nJiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+
PiYgcmVzdWx0KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0QWN0
aW9uOwpAQCAtMTU4LDEyICsxNTgsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6Q1NTOjpOYW1lZEZsb3c+IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9y
U3RyaW5nJiwgV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAogICAgIC8v
IEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZW1vdmVEb2N1bWVudChEb2N1bWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZW1v
dmVEb2N1bWVudChEb2N1bWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9k
ZShOb2RlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKSBv
dmVycmlkZTsKIAogICAgIC8vIEluc3BlY3RvckNTU0FnZW50OjpMaXN0ZW5lciBpbXBsZW1lbnRh
dGlvbgotICAgIHZpcnR1YWwgdm9pZCBzdHlsZVNoZWV0Q2hhbmdlZChJbnNwZWN0b3JTdHlsZVNo
ZWV0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZVNoZWV0Q2hhbmdlZChJbnNwZWN0b3JTdHls
ZVNoZWV0Kikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlc2V0UHNldWRvU3RhdGVzKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDRk
Zjg0YjRhYWJjMzhmMjZmOTE3NTk0YjNmY2M3OTZjOTljMDcxOWEuLjkzYjc4MzBlYmQ1YTc2OTA4
NjMyNzhlZGMyZDRkNGIwOWQ1MTQ0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTE3LDE0ICsxMTcsMTQgQEAgcHVibGljOgogICAg
IEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNw
ZWN0b3JDbGllbnQ7IH0KICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5BY2Nlc3NJ
bnNwZWN0ZWRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgSW5zcGVjdG9yOjpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIGZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5z
cGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlcigpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZWY8V1RGOjpTdG9wd2F0Y2g+IGV4ZWN1dGlvblN0b3B3YXRjaCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgSlNDOjpWTSYgdm0oKSBvdmVycmlkZTsKKyAgICBib29sIGRl
dmVsb3BlckV4dHJhc0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkFjY2Vz
c0luc3BlY3RlZFNjcmlwdFN0YXRlKEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyIGZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckV2YWx1YXRl
SGFuZGxlciBldmFsdWF0ZUhhbmRsZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGZyb250
ZW5kSW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKKyAgICBSZWY8V1RGOjpTdG9wd2F0Y2g+IGV4ZWN1
dGlvblN0b3B3YXRjaCgpIG92ZXJyaWRlOworICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgc2Ny
aXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsKKyAgICBKU0M6OlZNJiB2bSgpIG92ZXJyaWRlOwog
CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21wb3NpdGUoRnJhbWUmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA5ZjZhZWIxODdk
ZDkzMTM4Y2Y4ZGU2NDI4NzNlYjI0NTFjNGY1OGMwLi5iZmZiNWY1ZmZiN2ExY2Q0MmNmZGY3NTJk
ODUzM2E0YmRkZmQyM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaApAQCAtMTA3LDQ5ICsxMDcsNDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0
cmluZyB0b0Vycm9yU3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxEb2N1bWVudCo+
IGRvY3VtZW50cygpOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIE1ldGhvZHMgY2FsbGVk
IGZyb20gdGhlIGZyb250ZW5kIGZvciBET00gbm9kZXMgaW5zcGVjdGlvbi4KLSAgICB2aXJ0dWFs
IHZvaWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHF1ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcm
IHNlbGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+JiByZXN1
bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyYs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+JiByb290KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkLCBjb25zdCBpbnQqIGRlcHRoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0
cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRB
dHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nJiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcmLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcm
IG5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2RlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5vZGVOYW1lKEVy
cm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQqIG5ld0lkKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
b3V0ZXJIVE1MKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKEVycm9y
U3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+
JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFjY2Vzc2li
aWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9w
ZXJ0aWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSogbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1
bHRDb3VudCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9J
bmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBzZWFyY2hJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc29sdmVO
b2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3Vs
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcm
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4m
IHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxl
ZChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIGhpZ2hsaWdodENvbmZpZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3ROb2RlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgaW50KiBub2RlSWQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeUJhY2tlbmRJZFRvRnJvbnRlbmQoRXJyb3JTdHJpbmcm
LCBCYWNrZW5kTm9kZUlkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbm9kZUdy
b3VwKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodChFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5n
JiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qq
IG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXkmIHF1YWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVDb2xv
ciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgaGlnaGxpZ2h0U2VsZWN0b3IoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcqIGZyYW1lSWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBo
aWdobGlnaHROb2RlKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QmIGhpZ2hsaWdodENvbmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2Jq
ZWN0SWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNv
bG9yKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25zdCBpbnQqIGFuY2hvck5vZGVJZCwgaW50
KiBuZXdOb2RlSWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmRvKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZG8oRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKSBv
dmVycmlkZTsKKyAgICB2b2lkIHF1ZXJ5U2VsZWN0b3IoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9ycywgaW50KiBlbGVtZW50SWQpIG92ZXJyaWRlOworICAg
IHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8aW50Pj4m
IHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyYsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+JiByb290KSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlcXVlc3RDaGlsZE5vZGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3Qg
aW50KiBkZXB0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0
cmluZyYsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5n
JiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQXR0cmlidXRlKEVycm9yU3RyaW5nJiwgaW50IGVs
ZW1lbnRJZCwgY29uc3QgU3RyaW5nJiBuYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZU5v
ZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5vZGVO
YW1lKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQqIG5l
d0lkKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldE91dGVySFRNTChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIFdURjo6U3RyaW5nKiBvdXRlckhUTUwpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0T3V0
ZXJIVE1MKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBvdXRlckhUTUwp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRFdmVudExpc3Rl
bmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0cmluZyog
b2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpIG92ZXJyaWRl
OworICAgIHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJp
bGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJyaWRlOworICAgIHZvaWQgcGVyZm9y
bVNlYXJjaChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVy
eSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogbm9kZUlkcywgU3RyaW5nKiBzZWFy
Y2hJZCwgaW50KiByZXN1bHRDb3VudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTZWFyY2hSZXN1
bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwg
aW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHNlYXJjaElkKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc29sdmVOb2RlKEVycm9y
U3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFi
bGVkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3ROb2RlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBvYmplY3RJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOworICAgIHZvaWQgcHVzaE5vZGVCeVBh
dGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJ
ZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChFcnJv
clN0cmluZyYsIEJhY2tlbmROb2RlSWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbGVhc2VCYWNrZW5kTm9kZUlkcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbm9kZUdy
b3VwKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHks
IGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Qq
IGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBj
b25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgaGlnaGxp
Z2h0UXVhZChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIHF1
YWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodFNlbGVjdG9yKEVycm9yU3Ry
aW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodENvbmZpZywg
Y29uc3QgU3RyaW5nJiBzZWxlY3RvclN0cmluZywgY29uc3QgU3RyaW5nKiBmcmFtZUlkKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBpbnQqIG5vZGVJZCwg
Y29uc3QgU3RyaW5nKiBvYmplY3RJZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWdobGlnaHRGcmFt
ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
b3V0bGluZUNvbG9yKSBvdmVycmlkZTsKKworICAgIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nJiwg
aW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGlu
dCogbmV3Tm9kZUlkKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuZG8oRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlZG8oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIG1h
cmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb2N1cyhF
cnJvclN0cmluZyYsIGludCBub2RlSWQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBnZXRFdmVudExp
c3RlbmVycyhOb2RlKiwgVmVjdG9yPEV2ZW50TGlzdGVuZXJJbmZvPiYgbGlzdGVuZXJzQXJyYXks
IGJvb2wgaW5jbHVkZUFuY2VzdG9ycyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IDRhZGEwZWI0YjUxZjVjZWMz
ZGVlYzA4OWE3OGNjMThiMjI3NWMxMjguLjA3MWZmMWRlMzU2ODUzNmExODA0NTgxMWJiYWIyMjc2
NzExNzJhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtNTgsMTQgKzU4LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCk7CiAKICAgICAvLyBET01EZWJ1Z2dlciBB
UEkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlWEhSQnJlYWtw
b2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRE
T01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgdXJsKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJbnN0cnVtZW50YXRpb25CcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVtb3ZlSW5zdHJ1bWVudGF0aW9uQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZXZlbnROYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldERPTUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2RlSWQs
IGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFy
ZW50KTsKQEAgLTc3LDE2ICs3NywxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0
dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVu
dElmTmVlZGVkKGJvb2wgaXNET01FdmVudCwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wg
c3luY2hyb25vdXMpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250
ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIC8vIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIGRlYnVnZ2VyV2FzRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZXBJ
bnRvKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlYnVnZ2Vy
V2FzRGlzYWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0ZXBJbnRvKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRQYXVzZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZSgpOwogCiAgICAg
dm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRhcmdldCwgaW50IGJyZWFrcG9pbnRU
eXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGRlc2NyaXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuaAppbmRleCA2NjI5YWU3ZmNiYWIwN2ZlOTk0OTViYTNjMDA4MmUyZDE0Mjk0OTU2
Li5hOWMyY2UxMzM5MDJlY2M2MDUzMGQ2NTliOTU4N2E1MDAxYjQ4M2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC01
NywxNSArNTcsMTUgQEAgcHVibGljOgogICAgIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudChXZWJB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0
b3JET01TdG9yYWdlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQg
d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29u
KSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCi0gICAgdmly
dHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldERP
TVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJ
dGVtKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyYsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZURPTVN0b3Jh
Z2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHN0
b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZy
b20gdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3RvcmFnZUlkKFN0b3JhZ2UqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50
LmNwcAppbmRleCA3NjhhMjMzYjMzZDRmOTczMjZhMjY3NDhkMmIzMzIwNzFlNmNiMjhkLi5iYzhm
YWUwOTQ2MjJlMjFkNWY3Yjc5ZmQ3MGEwMWMxODk0MTcwMjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCkBAIC03NSw3ICs3
NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflN0YXRlbWVudENhbGxiYWNrKCkgeyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qLCBTUUxSZXN1bHRT
ZXQqIHJlc3VsdFNldCkgb3ZlcnJpZGUKKyAgICBib29sIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0
aW9uKiwgU1FMUmVzdWx0U2V0KiByZXN1bHRTZXQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBT
UUxSZXN1bHRTZXRSb3dMaXN0KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKQEAgLTEx
Myw3ICsxMTMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5TdGF0ZW1lbnRFcnJvckNhbGxi
YWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24q
LCBTUUxFcnJvciogZXJyb3IpIG92ZXJyaWRlCisgICAgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFu
c2FjdGlvbiosIFNRTEVycm9yKiBlcnJvcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJlcG9y
dFRyYW5zYWN0aW9uRmFpbGVkKG1fcmVxdWVzdENhbGxiYWNrLmNvcHlSZWYoKSwgZXJyb3IpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsgIApAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgflRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pIG92ZXJyaWRlCisgICAgYm9v
bCBoYW5kbGVFdmVudChTUUxUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlRXZlbnQoU1FMRXJyb3IqIGVycm9yKSBvdmVycmlkZQorICAgIGJvb2wgaGFuZGxlRXZlbnQo
U1FMRXJyb3IqIGVycm9yKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmVwb3J0VHJhbnNhY3Rp
b25GYWlsZWQobV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCksIGVycm9yKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0xODIsNyArMTgyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VHJhbnNh
Y3Rpb25TdWNjZXNzQ2FsbGJhY2soKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVu
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBoYW5kbGVFdmVudCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6CiAgICAgVHJhbnNhY3Rpb25TdWNj
ZXNzQ2FsbGJhY2soKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5oCmluZGV4IGE4NjBmMTk4YmQ1YWZkY2RiOGI4MjA5MmE4NmY4MGQ5
YThkNWQ2N2QuLmQyMjNmNTI0NTE0ZWJkMzNlNzNkZDYxOGYyZTBkM2RkNTg5YjMzZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApA
QCAtNTMsMTYgKzUzLDE2IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0b3JEYXRhYmFz
ZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRhdGFiYXNl
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
IAogICAgIHZvaWQgY2xlYXJSZXNvdXJjZXMoKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBm
cm9udC1lbmQuCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlVGFibGVOYW1lcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+JiBuYW1lcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVTUUwoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlSWQsIGNvbnN0IFN0cmluZyYgcXVlcnksIFJl
ZjxFeGVjdXRlU1FMQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBnZXREYXRhYmFzZVRhYmxlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+PiYgbmFtZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUmVmPEV4ZWN1
dGVTUUxDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgZnJvbSB0aGUgaW5q
ZWN0ZWQgc2NyaXB0LgogICAgIFN0cmluZyBkYXRhYmFzZUlkKERhdGFiYXNlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaAppbmRleCA4NDg2N2JlMzYzMmVmMDI0OTc1MmYzM2JmNzczNjcxNDUwZjJmOGEyLi42NDA4
NjY5OWExOGY1NmQ4MGU2ZjE0NDhiODBkOGVkODNiNmQwNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAg
LTU5LDI3ICs1OSwyNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0ZWRQYWdlQ29udHJv
bGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCk7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgp
IG92ZXJyaWRlIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmcm9udGVu
ZExvYWRlZCgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2luZG93T2JqZWN0
Q2xlYXJlZCgpIG92ZXJyaWRlIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnJvbnRl
bmRMb2FkZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFdpbmRvd0RyYWco
KSBvdmVycmlkZSB7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgbW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc3RhcnRXaW5k
b3dEcmFnKCkgb3ZlcnJpZGUgeyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtb3ZlV2luZG93
QnkoZmxvYXQgeCwgZmxvYXQgeSkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlKSBvdmVycmlkZSBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlIGZpbmFsOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKSBvdmVycmlkZSBmaW5h
bDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgb3BlbkluTmV3VGFiKGNvbnN0IFN0
cmluZyYgdXJsKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpICBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzYXZlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIGJvb2wsIGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0U2V0RG9ja1NpZGUoRG9ja1NpZGUpIG92
ZXJyaWRlIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hhbmdlQXR0YWNoZWRXaW5k
b3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlIGZpbmFsOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpIG92
ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgY2FuU2F2ZSgpICBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZvaWQgc2F2ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBib29sLCBi
b29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hXaW5kb3coRG9j
a1NpZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgPSAwOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRlIGZpbmFs
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzVW5kZXJUZXN0KCkgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlz
VW5kZXJUZXN0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQg
aW5zcGVjdGlvbkxldmVsKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGNhbkF0dGFjaFdpbmRvdygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
RG9ja2luZ1VuYXZhaWxhYmxlKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCAxYjVkM2VlMzdkNTQ4NWQwNTNmNmI5
NGQ3ODhlMzkzM2I4MmQ3YjA2Li5iYzdmMTJhZGNlMGMxNjE5YjhlYTk3YmQxYmZiNTRjYzNhYTRh
Y2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmNwcApAQCAtODUsMTMgKzg1LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnRleHRN
ZW51Q2xlYXJlZCgpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVDb250
ZXh0TWVudShDb250ZXh0TWVudSogbWVudSkgb3ZlcnJpZGUKKyAgICB2b2lkIHBvcHVsYXRlQ29u
dGV4dE1lbnUoQ29udGV4dE1lbnUqIG1lbnUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBmb3Ig
KGF1dG8mIGl0ZW0gOiBtX2l0ZW1zKQogICAgICAgICAgICAgbWVudS0+YXBwZW5kSXRlbShpdGVt
KTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUKKyAgICB2
b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkg
ewogICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZp
bml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBwcml2YXRl
OgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUNs
ZWFyZWQoKSBvdmVycmlkZQorICAgIHZvaWQgY29udGV4dE1lbnVDbGVhcmVkKCkgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewogICAgICAgICAgICAgRGVwcmVj
YXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fZnJvbnRlbmRBcGlPYmplY3QsICJj
b250ZXh0TWVudUNsZWFyZWQiLCBXZWJDb3JlOjpmdW5jdGlvbkNhbGxIYW5kbGVyRnJvbUFueVRo
cmVhZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlz
dG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAK
aW5kZXggODk0NGYyZDhjYjVkOTJiMTMwZGY2MDI2NjhhMjQ3MjBjOTc3NGIxYy4uZWM3MmFkMWIw
ZjdiMWM2MmExNTIzODA3NjU0MzkyMGYyOTg0ODg5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIGNsYXNzIFVu
ZG9hYmxlU3RhdGVNYXJrIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiBwdWJs
aWM6CiAgICAgVW5kb2FibGVTdGF0ZU1hcmsoKSA6IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbigi
W1VuZG9hYmxlU3RhdGVdIikgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRp
b25Db2RlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcGVyZm9ybShFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29s
IHVuZG8oRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IHVuZG8oRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZp
cnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNVbmRvYWJsZVN0YXRlTWFyaygpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGlzVW5kb2FibGVTdGF0ZU1hcmsoKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCBkNmRlZWYzNGZmNTVjZWJkZmMxYjYx
NTllODYxYTM4Njk1NzJlNWQ5Li40ZThjMTgwNjE0MGRmYzAwMjFjOGQ5MGE2NzJiMjhiYzVmZDFh
MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhl
ZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5jcHAKQEAgLTk4LDEyICs5OCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IH5HZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2soKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgb3ZlcnJpZGUK
KyAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZl
bnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0Fj
dGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYyLDEyICsxNjIsMTIgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+T3BlbkRhdGFiYXNlQ2FsbGJhY2soKSB7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlkZQor
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVu
dCkgb3ZlcnJpZGUKKyAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBFdmVudCogZXZlbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoZXZlbnQtPnR5cGUo
KSAhPSBldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50KSB7CiAgICAgICAgICAgICBtX2V4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVk
IGV2ZW50IHR5cGUuIik7CkBAIC0yMjIsNyArMjIyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB+RGF0YWJhc2VMb2FkZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgb3Zl
cnJpZGUKKyAgICB2b2lkIGV4ZWN1dGUoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKCFy
ZXF1ZXN0Q2FsbGJhY2soKS5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMw
LDcgKzIzMCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRklYTUUgKHdlYmtpdC5vcmcvYi8xNTQ2
ODYpIC0gUmVpbXBsZW1lbnQgdGhpcy4KICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlcXVlc3RDYWxs
YmFjayYgcmVxdWVzdENhbGxiYWNrKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJh
Y2suZ2V0KCk7IH0KKyAgICBSZXF1ZXN0Q2FsbGJhY2smIHJlcXVlc3RDYWxsYmFjaygpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fcmVxdWVzdENhbGxiYWNrLmdldCgpOyB9CiBwcml2YXRlOgogICAgIERh
dGFiYXNlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFJlZjxSZXF1ZXN0
RGF0YWJhc2VDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJhY2spCiAgICAgICAgIDogRXhlY3V0YWJs
ZVdpdGhEYXRhYmFzZShjb250ZXh0KQpAQCAtMzI1LDEyICszMjUsMTIgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB+T3BlbkN1cnNvckNhbGxiYWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgb3ZlcnJpZGUKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcyA9PSAmb3RoZXI7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpIG92ZXJy
aWRlCisgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQq
IGV2ZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZl
bnROYW1lcygpLnN1Y2Nlc3NFdmVudCkgewogICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2st
PnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIik7CkBAIC00MTksNyArNDE5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RGF0YUxvYWRlcigpIHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGUoKSBvdmVycmlkZQorICAgIHZvaWQgZXhlY3V0ZSgpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAoIXJlcXVlc3RDYWxsYmFjaygpLmlzQWN0aXZlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC00MjcsNyArNDI3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhN
RSAod2Via2l0Lm9yZy9iLzE1NDY4NikgLSBSZWltcGxlbWVudCB0aGlzLgogICAgIH0KIAotICAg
IHZpcnR1YWwgUmVxdWVzdENhbGxiYWNrJiByZXF1ZXN0Q2FsbGJhY2soKSBvdmVycmlkZSB7IHJl
dHVybiBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsgfQorICAgIFJlcXVlc3RDYWxsYmFjayYgcmVx
dWVzdENhbGxiYWNrKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCk7
IH0KICAgICBEYXRhTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmIHJlcXVlc3RDYWxsYmFjaywgY29u
c3QgSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0
b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRi
S2V5UmFuZ2UsIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQogICAgICAgICA6IEV4
ZWN1dGFibGVXaXRoRGF0YWJhc2Uoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgLCBt
X3JlcXVlc3RDYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3RDYWxsYmFjaykpCkBAIC01NzAsMTIgKzU3
MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5DbGVhck9iamVjdFN0b3JlTGlzdGVuZXIo
KSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXIm
IG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBvdGhlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV2ZW50KiBldmVudCkgb3ZlcnJpZGUKKyAgICB2b2lkIGhhbmRsZUV2ZW50KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBpZiAoIW1fcmVxdWVzdENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNjExLDcgKzYxMSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGV4ZWN1dGUoKSBvdmVycmlkZQorICAgIHZvaWQgZXhlY3V0ZSgpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAoIXJlcXVlc3RDYWxsYmFjaygpLmlzQWN0aXZlKCkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC02MTksNyArNjE5LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhN
RSAod2Via2l0Lm9yZy9iLzE1NDY4NikgLSBSZWltcGxlbWVudCB0aGlzLgogICAgIH0KIAotICAg
IHZpcnR1YWwgUmVxdWVzdENhbGxiYWNrJiByZXF1ZXN0Q2FsbGJhY2soKSBvdmVycmlkZSB7IHJl
dHVybiBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsgfQorICAgIFJlcXVlc3RDYWxsYmFjayYgcmVx
dWVzdENhbGxiYWNrKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCk7
IH0KIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fb2JqZWN0U3RvcmVOYW1lOwogICAgIFJl
ZjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxiYWNrOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAppbmRleCBi
NDQ3ODEwY2M5OTkxYWM0YWFkNTQ0NWU2MDg1MDU5YmZmOTI1MjczLi45NTM1MTAxOGJhOTQ4ZTM5
NjAwZjI1MTZhYjg0MzRmYmNkNTIxZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNTQsMTYgKzU0LDE2IEBAIHB1Ymxp
YzoKICAgICBJbnNwZWN0b3JJbmRleGVkREJBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0
b3JQYWdlQWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJbmRleGVkREJBZ2VudCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5k
QmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCiAgICAgLy8g
Q2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9y
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBSZWY8UmVxdWVzdERhdGFiYXNl
TmFtZXNDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRh
YmFzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lLCBSZWY8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+JiYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBT
dHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lw
Q291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGtl
eVJhbmdlLCBSZWY8UmVxdWVzdERhdGFDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX3Nl
Y3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGluX2RhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5n
JiBpbl9vYmplY3RTdG9yZU5hbWUsIFJlZjxDbGVhck9iamVjdFN0b3JlQ2FsbGJhY2s+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0RGF0YWJh
c2VOYW1lcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFJlZjxS
ZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3REYXRhYmFzZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBSZWY8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENv
dW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBrZXlS
YW5nZSwgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xl
YXJPYmplY3RTdG9yZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVj
dFN0b3JlTmFtZSwgUmVmPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCBjYzEyNzJiODVhZWVmNmJmMGQwNzYyMTk4M2U3Nzg0
MTgwM2I0MzU4Li5mMTE0ZDcyOWYwYmI3YjAzZWFkODcwYzI2ZjhjNzE3M2EyMjY0NmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aApAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlk
ZTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24g
Y2FsbGJhY2tzLgpAQCAtNTYsMTAgKzU2LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHBzZXVkb0Vs
ZW1lbnREZXN0cm95ZWQoUHNldWRvRWxlbWVudCYpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhl
IGZyb250LWVuZC4KLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGF5ZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXll
clRyZWU6OkxheWVyPj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVhc29uc0ZvckNv
bXBvc2l0aW5nTGF5ZXIoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGxheWVySWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkNvbXBvc2l0aW5nUmVhc29ucz4mKSBv
dmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5ZXJzRm9yTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpMYXllclRyZWU6OkxheWVyPj4mKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBsYXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpD
b21wb3NpdGluZ1JlYXNvbnM+Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgLy8gUmVuZGVy
TGF5ZXItcmVsYXRlZCBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCAwODliNTM2MGNkMjNiM2ZlNTRjMTJjOTcxZTNhNWU4
NWM0ZjUxNjRmLi42NWViYzE3N2MxZjM0YmI1MWY4NDZlZjBhOTU0ZmQyMzAwNGYwYjQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAt
NDQsMTIgKzQ0LDEyIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JNZW1vcnlBZ2VudChQYWdlQWdl
bnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yTWVtb3J5QWdlbnQoKSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9y
OjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5k
QW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJh
Y2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIE1l
bW9yeUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgotICAgIHZpcnR1YWwgdm9pZCBzdGFydFRyYWNr
aW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BUcmFja2lu
ZyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRUcmFja2luZyhFcnJvclN0
cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcFRyYWNraW5nKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0U2FtcGxlKGNvbnN0IFJlc291cmNl
VXNhZ2VEYXRhJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JO
ZXR3b3JrQWdlbnQuY3BwCmluZGV4IDM1YTZjOGQyYzU3ZDY2YmZkMmFmYzRmNWM4YmY0ZTAyOGQy
MDBkZjkuLjgzZmYyMGZiMWE5ODFjMGJiMDJlOWRlNjFlYzZiNTY1OGQ3Y2Q2YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkluc3BlY3RvclRocmVhZGFi
bGVMb2FkZXJDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9u
c2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZywgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX21pbWVU
eXBlID0gcmVzcG9uc2UubWltZVR5cGUoKTsKICAgICAgICAgbV9zdGF0dXNDb2RlID0gcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxpdGVyYWwoInRl
eHQvcGxhaW4iKSwgdGV4dEVuY29kaW5nLCB1c2VEZXRlY3Rvcik7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3Ro
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50
IGRhdGFMZW5ndGgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIWRhdGFMZW5ndGgpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xMTIsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICBt
X3Jlc3BvbnNlVGV4dC5hcHBlbmQobV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgZGF0YUxlbmd0aCkp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxv
bmcsIGRvdWJsZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZywgZG91YmxlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fZGVjb2RlcikKICAg
ICAgICAgICAgIG1fcmVzcG9uc2VUZXh0LmFwcGVuZChtX2RlY29kZXItPmZsdXNoKCkpOwpAQCAt
MTIxLDEzICsxMjEsMTMgQEAgcHVibGljOgogICAgICAgICBkaXNwb3NlKCk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlCisg
ICAgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgbV9jYWxsYmFjay0+c2VuZEZhaWx1cmUoQVNDSUlMaXRlcmFsKCJMb2FkaW5nIHJlc291
cmNlIGZvciBpbnNwZWN0b3IgZmFpbGVkIikpOwogICAgICAgICBkaXNwb3NlKCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgb3ZlcnJpZGUKKyAgICB2
b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fY2Fs
bGJhY2stPnNlbmRGYWlsdXJlKEFTQ0lJTGl0ZXJhbCgiTG9hZGluZyByZXNvdXJjZSBmb3IgaW5z
cGVjdG9yIGZhaWxlZCByZWRpcmVjdCBjaGVjayIpKTsKICAgICAgICAgZGlzcG9zZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5oCmluZGV4
IDk2YWM2NmJhZGE3M2Q2ZjYxNzk0OGUyMmE4MzEwODkzMTFhYTk3NTUuLmViMzA3OTZlNTgwOWI1
OTgxN2YxYmQzY2JhMzI0M2M5OTc0MmQxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmgKQEAgLTY4LDggKzY4LDggQEAgcHVibGljOgog
ICAgIEluc3BlY3Rvck5ldHdvcmtBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JQYWdl
QWdlbnQqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JOZXR3b3JrQWdlbnQoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVu
ZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNj
b25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAgICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHls
ZSgpOwpAQCAtMTAzLDEyICsxMDMsMTIgQEAgcHVibGljOgogICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KERvY3Vt
ZW50Kik7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZC4KLSAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVh
ZGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBoZWFk
ZXJzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFz
ZTY0RW5jb2RlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENhY2hlRGlzYWJsZWQo
RXJyb3JTdHJpbmcmLCBib29sIGNhY2hlRGlzYWJsZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNv
bnN0IFN0cmluZyYgdXJsLCBSZWY8TG9hZFJlc291cmNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGhlYWRlcnMpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRDYWNoZURpc2FibGVkKEVycm9yU3RyaW5nJiwgYm9vbCBjYWNo
ZURpc2FibGVkKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRSZXNvdXJjZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxMb2FkUmVzb3Vy
Y2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCA0
MjM1YjExOTIwMTY0YTcxMGRjMWY0ZDNhNzE1NGNmOTBlMTg3MDQwLi43NmY4MzU4ZTQyYTZiMTQw
ZWJmM2EyOTFiZGQ3OGJkMTg1NWJjNGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC05MiwzMCArOTIsMzAgQEAgcHVibGljOgogICAgIHN0
YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJjZVR5cGUgY2FjaGVkUmVzb3Vy
Y2VUeXBlSnNvbihjb25zdCBDYWNoZWRSZXNvdXJjZSYpOwogCiAgICAgLy8gUGFnZSBBUEkgZm9y
IEluc3BlY3RvckZyb250ZW5kCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHNvdXJjZSwgU3RyaW5nKiByZXN1bHQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVs
b2FkKEVycm9yU3RyaW5nJiwgY29uc3QgYm9vbCogb3B0aW9uYWxJZ25vcmVDYWNoZSwgY29uc3Qg
U3RyaW5nKiBvcHRpb25hbFNjcmlwdFRvRXZhbHVhdGVPbkxvYWQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBuYXZpZ2F0ZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29r
aWU+PiYgY29va2llcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiB1cmwp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZVRyZWUoRXJyb3JTdHJpbmcm
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmluZyogY29u
dGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
YXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2Vh
cmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJblJlc291cmNl
cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGlzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpTZWFyY2hSZXN1bHQ+PiYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXREb2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgaHRtbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG93KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nJiwg
SW5zcGVjdG9yOjpQYWdlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpSZXN1bHQqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJp
bmcmLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG91Y2hFbXVsYXRpb25F
bmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEVtdWxhdGVkTWVkaWEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYs
IGJvb2wqIG91dF9wYXJhbSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc25hcHNob3ROb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgU3RyaW5nKiBv
dXREYXRhVVJMKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc25hcHNob3RSZWN0KEVycm9y
U3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFN0cmlu
ZyYgY29vcmRpbmF0ZVN5c3RlbSwgU3RyaW5nKiBvdXREYXRhVVJMKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlSmF2YVNjcmlwdERpYWxvZyhFcnJvclN0cmluZyYsIGJvb2wgYWNj
ZXB0LCBjb25zdCBTdHJpbmcqIHByb21wdFRleHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBhcmNoaXZlKEVycm9yU3RyaW5nJiwgU3RyaW5nKiBkYXRhKSBvdmVycmlkZTsKKyAgICB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgc291cmNlLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7
CisgICAgdm9pZCByZW1vdmVTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbG9hZChFcnJvclN0
cmluZyYsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKSBvdmVycmlkZTsKKyAgICB2b2lkIG5hdmlnYXRl
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0
Q29va2llcyhFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJ
bnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpDb29raWU+PiYgY29va2llcykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFJlc291cmNlVHJl
ZShFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpGcmFtZVJl
c291cmNlVHJlZT4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFJlc291cmNlQ29udGVudChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIFN0cmlu
ZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWFy
Y2hJblJlc291cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaEluUmVzb3VyY2VzKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogaXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OlBhZ2U6OlNlYXJjaFJlc3VsdD4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRE
b2N1bWVudENvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgaHRtbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJv
clN0cmluZyYsIGJvb2wgc2hvdykgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTY3JpcHRFeGVjdXRp
b25TdGF0dXMoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlBhZ2VCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXI6OlJlc3VsdCopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2NyaXB0RXhlY3V0aW9uRGlz
YWJsZWQoRXJyb3JTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRvdWNoRW11
bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgZ2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyYsIGJvb2wqIG91
dF9wYXJhbSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxl
KEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzbmFwc2hvdE5vZGUoRXJy
b3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFVUkwpIG92ZXJyaWRlOworICAg
IHZvaWQgc25hcHNob3RSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgs
IGludCBoZWlnaHQsIGNvbnN0IFN0cmluZyYgY29vcmRpbmF0ZVN5c3RlbSwgU3RyaW5nKiBvdXRE
YXRhVVJMKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUphdmFTY3JpcHREaWFsb2coRXJyb3JT
dHJpbmcmLCBib29sIGFjY2VwdCwgY29uc3QgU3RyaW5nKiBwcm9tcHRUZXh0KSBvdmVycmlkZTsK
KyAgICB2b2lkIGFyY2hpdmUoRXJyb3JTdHJpbmcmLCBTdHJpbmcqIGRhdGEpIG92ZXJyaWRlOwog
CiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KICAgICB2b2lkIGRp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSosIERPTVdyYXBwZXJXb3JsZCYpOwpAQCAt
MTM4LDggKzEzOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmlwdHNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKTsKIAogICAgIC8vIEluc3BlY3RvciBDb250cm9sbGVyIEFQSQotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
ciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKIAogICAgIC8vIENyb3NzLWFnZW50cyBB
UEkKICAgICBQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCmluZGV4IDgzM2VlY2UwMTFjNWY5
MjEwMjQ4ODA3MTgwZGFmODc4ODVmZDhmYTcuLjZmNmQyNzVlYzBhMjE1NTFkODY3NTY5ZTNkOGNm
MzExMmQ1ODE1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXBsYXlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXBsYXlBZ2VudC5oCkBAIC02NCw4ICs2NCw4IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JSZXBs
YXlBZ2VudChQYWdlQWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yUmVwbGF5
QWdlbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
IAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCiAgICAgdm9pZCBm
cmFtZU5hdmlnYXRlZChEb2N1bWVudExvYWRlciopOwpAQCAtOTIsMjIgKzkyLDIyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHBsYXliYWNrRmluaXNoZWQoKTsKIAogICAgIC8vIENhbGxzIGZyb20gdGhl
IEluc3BlY3RvciBmcm9udGVuZC4KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmluZyhFcnJv
clN0cmluZyYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHJlcGxheVRvUG9zaXRpb24o
RXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgcG9zaXRpb24s
IGJvb2wgc2hvdWxkRmFzdEZvcndhcmQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXBs
YXlUb0NvbXBsZXRpb24oRXJyb3JTdHJpbmcmLCBib29sIHNob3VsZEZhc3RGb3J3YXJkKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VQbGF5YmFjayhFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxQbGF5YmFjayhFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHN3aXRjaFNlc3Npb24oRXJyb3JTdHJpbmcmLCBTZXNz
aW9uSWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydFNlc3Npb25T
ZWdtZW50KEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9u
SWRlbnRpZmllciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmll
ciwgaW50IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVNl
c3Npb25TZWdtZW50KEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpT
ZXNzaW9uSWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgY3VycmVudFJlcGxheVN0YXRlKEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpQcm90
b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciosIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyPios
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblN0YXRlKiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZWdtZW50U3RhdGUqIHNlZ21lbnRTdGF0ZSwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6UmVwbGF5UG9zaXRpb24+Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEF2YWlsYWJsZVNlc3Npb25zKEVycm9yU3RyaW5nJiwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vz
c2lvbklkZW50aWZpZXI+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTZXNzaW9u
RGF0YShFcnJvclN0cmluZyYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklk
ZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlJlcGxheVNlc3Np
b24+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFNlZ21lbnREYXRhKEVycm9yU3Ry
aW5nJiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciwgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RvcENhcHR1cmluZyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOworCisgICAgdm9pZCBy
ZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QmIHBvc2l0aW9uLCBib29sIHNob3VsZEZhc3RGb3J3YXJkKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlcGxheVRvQ29tcGxldGlvbihFcnJvclN0cmluZyYsIGJvb2wgc2hvdWxkRmFzdEZvcndh
cmQpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2VQbGF5YmFjayhFcnJvclN0cmluZyYpIG92ZXJy
aWRlOworICAgIHZvaWQgY2FuY2VsUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgc3dpdGNoU2Vzc2lvbihFcnJvclN0cmluZyYsIFNlc3Npb25JZGVudGlmaWVyKSBv
dmVycmlkZTsKKyAgICB2b2lkIGluc2VydFNlc3Npb25TZWdtZW50KEVycm9yU3RyaW5nJiwgSW5z
cGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uSWRlbnRpZmllciwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6UmVwbGF5OjpTZWdtZW50SWRlbnRpZmllciwgaW50IHNlZ21lbnRJbmRleCkgb3Zl
cnJpZGU7CisgICAgdm9pZCByZW1vdmVTZXNzaW9uU2VnbWVudChFcnJvclN0cmluZyYsIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vzc2lvbklkZW50aWZpZXIsIGludCBzZWdtZW50SW5k
ZXgpIG92ZXJyaWRlOworCisgICAgdm9pZCBjdXJyZW50UmVwbGF5U3RhdGUoRXJyb3JTdHJpbmcm
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25JZGVudGlmaWVyKiwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlcGxheTo6U2Vn
bWVudElkZW50aWZpZXI+KiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU3Rh
dGUqLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRTdGF0ZSogc2VnbWVudFN0
YXRlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlQb3NpdGlvbj4m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEF2YWlsYWJsZVNlc3Npb25zKEVycm9yU3RyaW5nJiwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJl
cGxheTo6U2Vzc2lvbklkZW50aWZpZXI+PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0U2Vzc2lv
bkRhdGEoRXJyb3JTdHJpbmcmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlc3Npb25J
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpSZXBsYXlTZXNz
aW9uPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0U2VnbWVudERhdGEoRXJyb3JTdHJpbmcmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpSZXBsYXk6OlNlZ21lbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UmVwbGF5OjpTZXNzaW9uU2VnbWVudD4mKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvbj4gZmluZFNlc3Npb24oRXJyb3JTdHJp
bmcmLCBTZXNzaW9uSWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCA5ZTdhYjMyNzg4N2QzY2JjMWJhNjFmNDA5MjUzOWE1
NjFkMmRiYTA2Li41ZTM2MDg3MTc1ZDQ1MDcxMjlkNTQzMWExOGEwNTQ0ZmY4ODk1Nzc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTIz
OCwyMSArMjM4LDIxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZT4gY3JlYXRlKEluc3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmlu
ZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxl
U2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CiAKICAgICB2b2lkIGRpZE1vZGlmeUVsZW1lbnRBdHRy
aWJ1dGUoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0VGV4dChTdHJpbmcqIHJlc3VsdCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUZvcklkKGNv
bnN0IEluc3BlY3RvckNTU0lkJiBpZCkgY29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlRfVU5VU0VEKGlk
LCAhaWQub3JkaW5hbCgpKTsgcmV0dXJuIGlubGluZVN0eWxlKCk7IH0KKyAgICBib29sIGdldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0IG92ZXJyaWRlOworICAgIENTU1N0eWxlRGVjbGFyYXRp
b24qIHN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkKSBjb25zdCBvdmVycmlkZSB7
IEFTU0VSVF9VTlVTRUQoaWQsICFpZC5vcmRpbmFsKCkpOyByZXR1cm4gaW5saW5lU3R5bGUoKTsg
fQogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKElu
c3BlY3RvclBhZ2VBZ2VudCosIGNvbnN0IFN0cmluZyYgaWQsIFJlZlB0cjxFbGVtZW50PiYmLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW4sIExpc3RlbmVyKik7CiAK
LSAgICB2aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9yKENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVF9VTlVTRUQo
c3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0YTsg
fQotICAgIHZpcnR1YWwgdW5zaWduZWQgcnVsZUluZGV4QnlTdHlsZShDU1NTdHlsZURlY2xhcmF0
aW9uKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgYm9vbCBlbnN1
cmVQYXJzZWREYXRhUmVhZHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxJbnNwZWN0
b3JTdHlsZT4gaW5zcGVjdG9yU3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYpIG92ZXJy
aWRlOworICAgIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUZvcihDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSkgY29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlRfVU5VU0VEKHN0eWxlLCBzdHls
ZSA9PSBpbmxpbmVTdHlsZSgpKTsgcmV0dXJuIG1fcnVsZVNvdXJjZURhdGE7IH0KKyAgICB1bnNp
Z25lZCBydWxlSW5kZXhCeVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CisgICAgYm9vbCBlbnN1cmVQYXJzZWREYXRhUmVhZHkoKSBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlRm9ySWQoY29uc3Qg
SW5zcGVjdG9yQ1NTSWQmKSBvdmVycmlkZTsKIAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJp
ZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgotICAgIHZpcnR1YWwgYm9vbCBzZXRTdHlsZVRleHQo
Q1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVu
ZGluZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURl
Y2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdCBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmgKaW5kZXggNTBjMDk3Mjg1MGRkYjNjYzA0YWE0ZDdlM2ExODBiNTNkNGE2ZDBkYy4u
NWY3NDQxNjc2NjM0Y2MyNWZhZjA2MjZkNDhlNGU4NjgzMzJlOWM2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC05NSwxMSAr
OTUsMTEgQEAgcHVibGljOgogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQoV2ViQWdlbnRDb250
ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJv
eUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBtYXhD
YWxsU3RhY2tEZXB0aCA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9w
KEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydChFcnJvclN0cmluZyYsIGNv
bnN0IGludCogbWF4Q2FsbFN0YWNrRGVwdGggPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICB2b2lk
IHN0b3AoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIGludCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1faWQ7IH0KIApAQCAtMTQwLDE0ICsxNDAsMTQgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6
CiAgICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNv
dXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBpbnQsIGludCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRDb250aW51ZSgpIG92ZXJyaWRlIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGJy
ZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGludCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkV4ZWNT
dGF0ZSosIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVuc2lnbmVk
IGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNl
SUQsIGNvbnN0IFNjcmlwdCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNv
dXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUm
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENvbnRpbnVlKCkgb3ZlcnJpZGUgeyB9CisKKyAg
ICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6RXhlY1N0YXRlKiwg
Y29uc3QgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50QWN0aW9uJiwgdW5zaWduZWQgYmF0Y2hJ
ZCwgdW5zaWduZWQgc2FtcGxlSWQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiByZXN1
bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBUaW1lbGluZVJlY29y
ZFN0YWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xl
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3Bw
CmluZGV4IGYyNGM2NDg3NWViOWM5NzgyZDM2NGYyZDc2YTg4Y2NkZWFlMDVhYmYuLjAxNDlhMGZi
MmY2ZDJmZTZhNjM5MTNjNTQ4MjY4MzdjNDM0NmMyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBQYWdl
Q29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIGNs
YXNzIEluc3BlY3RhYmxlTm9kZSBmaW5hbCA6IHB1YmxpYyBDb21tYW5kTGluZUFQSUhvc3Q6Oklu
c3BlY3RhYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBJbnNwZWN0YWJsZU5vZGUo
Tm9kZSogbm9kZSkgOiBtX25vZGUobm9kZSkgeyB9Ci0gICAgdmlydHVhbCBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKSBvdmVycmlkZQorICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICByZXR1cm4gSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVBc1NjcmlwdFZhbHVl
KHN0YXRlLCBtX25vZGUuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZUNvbnNvbGVBZ2VudC5oCmluZGV4IDhhYjFjY2JlM2RkM2RlN2FkNjE4ODY3YmM1NjE3ZWE5
MjJmOWVkOWQuLjU1YzZlZmNlMjg1OTExZTA4MGU4MmI0YTUxYTAxYWVlOTU1NTFjN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtNDcsOCArNDcs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UGFnZUNvbnNvbGVBZ2VudCgpIHsgfQogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9k
ZUlkKSBvdmVycmlkZTsKIAogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2luc3BlY3RvckRPTUFn
ZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgK
aW5kZXggMTMzYjQ2OTZiNWZlMDkyOWY3MzIzMWZlNjFlMjQ3NDJmMWEwYWM4ZC4uZGI3ZjQ1YTIw
MDg5MTQ2ZWYwY2EwNGY3OGRiNTg1YTQ5NjU3OTQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTU0LDE5ICs1NCwxOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShib29sIGlz
QmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOworICAgIHZvaWQgZW5hYmxlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0Jikgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
bXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6RXhlY1N0YXRl
KiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9n
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3Ry
aW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyopIG92
ZXJyaWRlOworICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcq
KSBvdmVycmlkZTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggYjVmMWFkYmU3NGY1ODJlYjdjZmU0ZjhjOTc4
NjkyOWIwYWZmN2FlYy4uOTEzNzI4ODVkZWE2MWIxM2FjY2I0YmFlNjAxNTExMjk0OWVmZmY2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC01OCwx
OCArNTgsMTggQEAgcHVibGljOgogICAgIFBhZ2VSdW50aW1lQWdlbnQoUGFnZUFnZW50Q29udGV4
dCYsIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VSdW50aW1lQWdlbnQo
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5z
cGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUo
RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
SW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92
ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KICAg
ICB2b2lkIGRpZENyZWF0ZU1haW5Xb3JsZENvbnRleHQoRnJhbWUmKTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFs
KEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVwb3J0RXhlY3V0
aW9uQ29udGV4dENyZWF0aW9uKCk7CiAgICAgdm9pZCBub3RpZnlDb250ZXh0Q3JlYXRlZChjb25z
dCBTdHJpbmcmIGZyYW1lSWQsIEpTQzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qLCBib29s
IGlzUGFnZUNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmgKaW5kZXggNDQ3OGVhZTBiNGY0Y2JkOWQyMmJkMjJhZWE1ZDczNjk4
OTVmN2IzYS4uNzNiZTllNjlhOTA2M2U2YzA1MmZjYWM5YThmNDFhZmJhNTlmMTc2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
NDIsMTcgKzQyLDE3IEBAIHB1YmxpYzoKICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoUGFnZSYp
OwogICAgIHZpcnR1YWwgflBhZ2VTY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hE
ZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOworICAgIHZvaWQgYXR0YWNo
RGVidWdnZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWlu
Z0Rlc3Ryb3llZCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpK
U0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZShK
U0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQ29udGVudFNj
cmlwdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwor
ICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGlz
Q29udGVudFNjcmlwdChKU0M6OkV4ZWNTdGF0ZSopIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRlcm5hbCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmgKaW5kZXggMTg3ODAz
MzU5YTNmZDRlNDkwMTc0ZDgwODZmYzBjNjM5YWRmOWJiOS4uN2I3ODNhNDI5ZmU4ZjMzMjEyMzdj
NGE1YWMxZTBlOTYzYWQ3ZWQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dlYkNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25z
b2xlQWdlbnQuaApAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29uc29sZUFnZW50
KEluc3BlY3Rvcjo6QWdlbnRDb250ZXh0Jik7CiAgICAgdmlydHVhbCB+V2ViQ29uc29sZUFnZW50
KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JT
dHJpbmcmLCBib29sIGVuYWJsZWQpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc2V0TW9uaXRv
cmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIG92ZXJyaWRlIGZpbmFs
OwogCiAgICAgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZChET01XaW5kb3cqKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKaW5kZXggMjMwMTc0ZDk1ZmJh
NGM2ZjA5NmJiYmU5YzNlZTQxYmU1NmFhNjZkNS4uMzAwMWI3MGZkZjE0NDNkNmEwN2ZjMmM4MWZj
YzBkOWNmNDgzNWE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJB
Z2VudC5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJEZWJ1Z2dl
ckFnZW50KCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBv
dmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShi
b29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwogCiAgICAgSW5zdHJ1bWVudGluZ0FnZW50
cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJJbmplY3RlZFNjcmlwdEhvc3QuaAppbmRleCA4NGE0NDM1ZmM3ZWZjMDZmMjZlMjky
ODUzYjI5NjM2NGZhMjM4NWY4Li42MDQzOWE0ZjA3ZWQyOWZkYTMyZWU1ODYwYTA5Y2M5NzJmODIy
MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3Jp
cHRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkluamVjdGVkU2NyaXB0
SG9zdC5oCkBAIC0zNCw4ICszNCw4IEBAIGNsYXNzIFdlYkluamVjdGVkU2NyaXB0SG9zdCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0SG9zdCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFJlZjxXZWJJbmplY3RlZFNjcmlwdEhvc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViSW5qZWN0ZWRTY3JpcHRIb3N0KTsgfQogCi0gICAgdmlydHVhbCBKU0M6OkpT
VmFsdWUgc3VidHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzSFRNTEFsbENvbGxlY3Rpb24oSlNDOjpKU1ZhbHVlKSBvdmVycmlk
ZTsKKyAgICBKU0M6OkpTVmFsdWUgc3VidHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0hUTUxBbGxDb2xsZWN0aW9uKEpTQzo6SlNWYWx1ZSkg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggMzA1ZGJl
NGU1ZDY0NzdkOTNmNWY1MjIwNjYzMjFmNjFlMjRmYjZiYi4uN2Q2MzVkNWIxYTZlOGYxMGFkOTFj
ZmQyODAzYWE1Y2YzODdkNDYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dlYkluamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9XZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoK
IAogICAgIENvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21tYW5kTGluZUFQSUhvc3QuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
aXNjb25uZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRJbmplY3RlZFNj
cmlwdHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpc2NhcmRJbmplY3RlZFNjcmlwdHMoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlzY2Fy
ZEluamVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cqKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBJbnNwZWN0b3I6OkluamVjdGVk
U2NyaXB0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVhdGVJbmplY3RlZFNjcmlwdChjb25z
dCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
UmVmUHRyPENvbW1hbmRMaW5lQVBJSG9zdD4gbV9jb21tYW5kTGluZUFQSUhvc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGQxMzQ3YzgyNGNkNjVmNmYxODVjZjMx
ZTNmNGNiOTg2NGEzMjU4NTYuLmExMjVjOGQ3YjU3ODdiYmRkMjQxNmVhNGE5YmI2MmFkNzg0ZWU4
ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0zMTMsMTAgKzMx
MywxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICAgICAgdm9p
ZCBmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpOwogICAgICAgICB2b2lkIG1haW5S
ZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAg
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
LCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJj
ZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgbWF5
YmVMb2FkRW1wdHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oCmluZGV4IDYzYjU2MTU3NmU2YzNkMjc2ZjNlMzc2YjkyN2ZlMjAyZGEx
MGIyNDYuLmE4YjRjYmNmNDVlMDc1NDJhNjA3YTBjNTljMTg0OTc2ODE2OGRlYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTU3
LDE1ICs1NywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB+RG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhib29sKTsKIAogICAgICAgICB1c2luZyBSZWZDb3Vu
dGVkPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291
bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+OjpkZXJlZjsKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdmlydHVhbCB2b2lkIHJlZlRocmVhZGFibGVMb2FkZXIoKSBvdmVycmlkZSB7IHJl
ZigpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZlRocmVhZGFibGVMb2FkZXIoKSBvdmVy
cmlkZSB7IGRlcmVmKCk7IH0KKyAgICAgICAgdm9pZCByZWZUaHJlYWRhYmxlTG9hZGVyKCkgb3Zl
cnJpZGUgeyByZWYoKTsgfQorICAgICAgICB2b2lkIGRlcmVmVGhyZWFkYWJsZUxvYWRlcigpIG92
ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZW51bSBCbG9ja2lu
Z0JlaGF2aW9yIHsKQEAgLTc4LDExICs3OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgY2xlYXJSZXNvdXJjZSgpOwogCiAgICAgICAgIC8vIENhY2hlZFJhd1Jlc291cmNl
Q2xpZW50Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChDYWNoZWRSZXNvdXJjZSosIHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IGNo
YXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRhdGFT
ZW50KENhY2hlZFJlc291cmNlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBj
b25zdCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBub3RpZnlGaW5pc2hl
ZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
OwogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmNwcAppbmRleCAzYTZkMTVjNDA2NTcwY2NhN2Y1OWQ1MjVmNTUwODA1OGRhNTc2
NDRhLi42Y2M0ZDI2OGEzNDNmZWM4MDRiNGE1YjAzNjQxMzZhYjk0NjhiNDk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcApAQCAtNjEsNDMgKzYxLDQzIEBAIGNsYXNzIEVt
cHR5RGF0YWJhc2VQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBEYXRhYmFzZVByb3ZpZGVyIHsKIAog
Y2xhc3MgRW1wdHlTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyIHsKICAgICBzdHJ1Y3QgRW1wdHlTdG9yYWdlQXJlYSA6IHB1Ymxp
YyBTdG9yYWdlQXJlYSB7Ci0gICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gMDsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBrZXkodW5zaWduZWQpIG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9Ci0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW0o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHNldEl0ZW0oRnJhbWUqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBi
b29sJikgb3ZlcnJpZGUgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJdGVtKEZyYW1l
KiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjbGVh
cihGcmFtZSopIG92ZXJyaWRlIHsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnMoY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBi
b29sIGNhbkFjY2Vzc1N0b3JhZ2UoRnJhbWUqKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgICAgICB2aXJ0dWFsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gTG9jYWxTdG9yYWdlOyB9Ci0gICAgICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUJ5
dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgICAgIHVuc2lnbmVk
IGxlbmd0aCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgU3RyaW5nIGtleSh1bnNp
Z25lZCkgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICAgICAgU3RyaW5nIGl0ZW0o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICAgICAgdm9p
ZCBzZXRJdGVtKEZyYW1lKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgYm9vbCYpIG92
ZXJyaWRlIHsgfQorICAgICAgICB2b2lkIHJlbW92ZUl0ZW0oRnJhbWUqLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IH0KKyAgICAgICAgdm9pZCBjbGVhcihGcmFtZSopIG92ZXJyaWRlIHsgfQor
ICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFtZSopIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgICAgIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gTG9jYWxTdG9yYWdlOyB9CisgICAgICAgIHNpemVfdCBtZW1vcnlC
eXRlc1VzZWRCeUNhY2hlKCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgICAgICBTZWN1cml0
eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBvdmVycmlkZSB7IHJldHVybiBTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlVW5pcXVlKCk7IH0KICAgICB9OwogCiAgICAgc3RydWN0IEVtcHR5U3RvcmFnZU5h
bWVzcGFjZSBmaW5hbCA6IHB1YmxpYyBTdG9yYWdlTmFtZXNwYWNlIHsKLSAgICAgICAgdmlydHVh
bCBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFJlZlB0cjxTZWN1cml0eU9yaWdpbj4m
Jikgb3ZlcnJpZGUgeyByZXR1cm4gYWRvcHRSZWYobmV3IEVtcHR5U3RvcmFnZUFyZWEpOyB9Ci0g
ICAgICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIG92ZXJy
aWRlIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOyB9CisgICAg
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEoUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmKSBvdmVycmlkZSB7IHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdlQXJlYSk7IH0K
KyAgICAgICAgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoUGFnZSopIG92ZXJyaWRlIHsg
cmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VOYW1lc3BhY2UpOyB9CiAgICAgfTsKIAot
ICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+IGNyZWF0ZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2UmLCB1bnNpZ25lZCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8U3RvcmFnZU5h
bWVzcGFjZT4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZSYsIHVuc2lnbmVkKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3JhZ2VO
YW1lc3BhY2UpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCkgb3ZlcnJpZGUKKyAgICBSZWZQ
dHI8U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVuc2lnbmVk
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBFbXB0eVN0b3Jh
Z2VOYW1lc3BhY2UpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVmUHRyPFN0b3JhZ2VOYW1lc3Bh
Y2U+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZShTZWN1cml0eU9yaWdpbiYs
IHVuc2lnbmVkKSBvdmVycmlkZQorICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVU
cmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoU2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRW1wdHlTdG9yYWdl
TmFtZXNwYWNlKTsKICAgICB9CiB9OwogCiBjbGFzcyBFbXB0eVZpc2l0ZWRMaW5rU3RvcmUgOiBw
dWJsaWMgVmlzaXRlZExpbmtTdG9yZSB7Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQo
UGFnZSYsIExpbmtIYXNoLCBjb25zdCBVUkwmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdl
JiwgTGlua0hhc2gpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaXNMaW5rVmlzaXRlZChQYWdlJiwg
TGlua0hhc2gsIGNvbnN0IFVSTCYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBhZGRWaXNpdGVkTGluayhQYWdlJiwgTGlua0hhc2gpIG92
ZXJyaWRlIHsgfQogfTsKIAogdm9pZCBmaWxsV2l0aEVtcHR5Q2xpZW50cyhQYWdlQ29uZmlndXJh
dGlvbiYgcGFnZUNvbmZpZ3VyYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgK
aW5kZXggNTNmOTFmMzI4NmMzZTZlZjFmODkxZWYxYTNlMmI2Y2U3ZjUwN2ZmZC4uYjIwOGI3OWU5
OGY0ZjFjZDdlNjEyMDZmOTUzY2M5NThjMjc2YmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaApAQCAtNjgsMTY0ICs2OCwxNjQgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGllbnQg
OiBwdWJsaWMgQ2hyb21lQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5FbXB0eUNocm9tZUNsaWVudCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBjaHJvbWVEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNocm9tZURlc3Ry
b3llZCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFdpbmRvd1JlY3QoY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgd2luZG93
UmVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdCgpOyB9CisgICAgdm9pZCBzZXRXaW5k
b3dSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQorICAgIEZsb2F0UmVjdCB3aW5k
b3dSZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAotICAgIHZpcnR1YWwg
RmxvYXRSZWN0IHBhZ2VSZWN0KCkgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAg
ICBGbG9hdFJlY3QgcGFnZVJlY3QoKSBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHVuZm9jdXMoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGZvY3VzKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCB1bmZvY3VzKCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuVGFr
ZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCB0YWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlIHsgfQorICAgIGJv
b2wgY2FuVGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZvaWQgdGFrZUZvY3VzKEZvY3VzRGlyZWN0aW9uKSBvdmVycmlkZSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxlbWVudCopIG92ZXJyaWRlIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKikgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBmb2N1c2VkRWxlbWVudENoYW5nZWQoRWxlbWVudCopIG92ZXJyaWRlIHsg
fQorICAgIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSopIG92ZXJyaWRlIHsgfQogCi0g
ICAgdmlydHVhbCBQYWdlKiBjcmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiwgY29uc3QgV2luZG93RmVhdHVyZXMmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgb3Zl
cnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCBzaG93KCkgb3ZlcnJp
ZGUgeyB9CisgICAgUGFnZSogY3JlYXRlV2luZG93KEZyYW1lKiwgY29uc3QgRnJhbWVMb2FkUmVx
dWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpIG92
ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2b2lkIHNob3coKSBvdmVycmlkZSB7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBj
YW5SdW5Nb2RhbCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBydW5Nb2Rh
bCgpIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShi
b29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNWaXNpYmxlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29s
KSBvdmVycmlkZSB7IH0KKyAgICBib29sIHRvb2xiYXJzVmlzaWJsZSgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVmlzaWJsZShib29s
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wp
IG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyc1Zpc2libGUoYm9v
bCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbGJhcnNWaXNpYmxlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJv
b2wpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldE1lbnViYXJWaXNpYmxlKGJv
b2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBtZW51YmFyVmlzaWJsZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSBv
dmVycmlkZSB7IH0KKyAgICBib29sIG1lbnViYXJWaXNpYmxlKCkgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXNpemFibGUoYm9vbCkgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBzZXRSZXNpemFibGUoYm9vbCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWws
IGNvbnN0IFN0cmluZyYsIHVuc2lnbmVkLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBhZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiwgdW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBy
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoY29uc3QgU3RyaW5nJiwgRnJhbWUqKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYsIEZyYW1lKikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgY2xvc2VXaW5kb3dTb29uKCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9
Ci0gICAgdmlydHVhbCBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2
YVNjcmlwdFByb21wdChGcmFtZSosIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFN0cmlu
ZyYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxl
cnQoRnJhbWUqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHJ1bkphdmFT
Y3JpcHRDb25maXJtKEZyYW1lKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBTdHJpbmcmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0g
ICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdu
bWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVw
TWVudShQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0
cjxTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShQb3B1cE1lbnVDbGllbnQq
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNO
YXR1cmFsKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNlbGVjdEl0ZW1B
bGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIFJlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBj
cmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0U3RhdHVzYmFyVGV4dChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUg
eyB9CiAKLSAgICB2aXJ0dWFsIEtleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0OyB9CisgICAgS2V5Ym9hcmRVSU1vZGUg
a2V5Ym9hcmRVSU1vZGUoKSBvdmVycmlkZSB7IHJldHVybiBLZXlib2FyZEFjY2Vzc0RlZmF1bHQ7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNBbmRSb290
Vmlldyhjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXco
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRz
QW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgaW52YWxp
ZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBzY3JvbGwoY29uc3QgSW50U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGUgeyB9CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIHZp
cnR1YWwgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3QgSW50UG9pbnQmKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBJbnRQb2lu
dCYpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZS
QU1FKSAmJiAhVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX1RJTUVSKQotICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2NoZWR1bGVB
bmltYXRpb24oKSBvdmVycmlkZSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBJbnRQb2ludCBz
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBwOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVj
dCYgcikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcjsgfQorICAgIEludFBvaW50IHNjcmVlblRv
Um9vdFZpZXcoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHA7IH0K
KyAgICBJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgSW50UmVjdCYgcikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gcjsgfQogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIEludFBv
aW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50JiBwKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBwOyB9OwotICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1Rv
QWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBJbnRSZWN0JiByKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiByOyB9OworICAgIEludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IEludFBvaW50JiBwKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBwOyB9OworICAgIEludFJl
Y3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgSW50UmVjdCYgcikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gcjsgfTsKICNlbmRpZgotICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdl
Q2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNp
emUmKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1Q
YWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZvaWQgY29udGVu
dHNTaXplQ2hhbmdlZChGcmFtZSosIGNvbnN0IEludFNpemUmKSBjb25zdCBvdmVycmlkZSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBI
aXRUZXN0UmVzdWx0JiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2Nyb2xsYmFy
c01vZGVEaWRDaGFuZ2UoKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbFRpcChjb25zdCBTdHJpbmcmLCBUZXh0RGlyZWN0
aW9uKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiwgVGV4
dERpcmVjdGlvbikgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoRnJhbWUq
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHByaW50KEZyYW1lKikgb3ZlcnJpZGUgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiwgY29uc3QgU3RyaW5n
JiwgRGF0YWJhc2VEZXRhaWxzKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGV4Y2VlZGVkRGF0YWJh
c2VRdW90YShGcmFtZSosIGNvbnN0IFN0cmluZyYsIERhdGFiYXNlRGV0YWlscykgb3ZlcnJpZGUg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShTZWN1cml0eU9yaWdpbiosIGludDY0X3QpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
cmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHJl
YWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoU2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90
KSBvdmVycmlkZSB7IH0KIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9y
Q2hvb3NlckNsaWVudCosIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVf
cHRyPENvbG9yQ2hvb3Nlcj4gY3JlYXRlQ29sb3JDaG9vc2VyKENvbG9yQ2hvb3NlckNsaWVudCos
IGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBydW5P
cGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBGaWxl
SWNvbkxvYWRlciopIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcnVuT3BlblBhbmVsKEZyYW1lKiwg
UGFzc1JlZlB0cjxGaWxlQ2hvb3Nlcj4pIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZEljb25Gb3JG
aWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYsIEZpbGVJY29uTG9hZGVyKikgb3ZlcnJpZGUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IE5vZGUqKSBvdmVycmlk
ZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEJsdXIoY29uc3QgTm9kZSopIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IE5vZGUqKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIGVsZW1lbnREaWRCbHVyKGNvbnN0IE5vZGUqKSBvdmVycmlkZSB7IH0KIAog
I2lmICFQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBDdXJz
b3ImKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxN
b3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IEN1
cnNvciYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1v
dmVzKGJvb2wpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xs
UmVjdEludG9WaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGUgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBHcmFwaGlj
c0xheWVyKikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdPdmVybGF5
R3JhcGhpY3NMYXllcihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgp
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBH
cmFwaGljc0xheWVyKikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdy
YXBoaWNzTGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlIHsgfQogCiAj
aWYgUExBVEZPUk0oV0lOKQotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXN0U2V0Q3Vyc29yVG9DdXJy
ZW50Q3Vyc29yKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIEFYU3RhcnRGcmFtZUxv
YWQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgQVhGaW5pc2hGcmFtZUxvYWQoKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHNldExhc3RTZXRDdXJzb3JUb0N1cnJlbnRDdXJzb3IoKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIEFYU3RhcnRGcmFtZUxvYWQoKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIEFYRmluaXNoRnJhbWVMb2FkKCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogI2lmIFBM
QVRGT1JNKElPUykKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlk
UHJldmVudERlZmF1bHRGb3JFdmVudCgpIG92ZXJyaWRlIHsgfQogI2VuZGlmCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc1Njcm9sbE5vdGlmaWNhdGlvbnMoRnJhbWUqLCBib29sKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKEZyYW1lKikg
b3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQ29udGVudENoYW5nZU9ic2VydmVy
cyhGcmFtZSopIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlSZXZlYWxlZFNl
bGVjdGlvbkJ5U2Nyb2xsaW5nRnJhbWUoRnJhbWUqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkTGF5b3V0KExheW91dFR5cGUpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydE92ZXJmbG93U2Nyb2xsKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEVuZE92ZXJmbG93U2Nyb2xsKCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
c3VwcHJlc3NGb3JtTm90aWZpY2F0aW9ucygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCByZXN0b3JlRm9ybU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwg
dm9pZCBhZGRPclVwZGF0ZVNjcm9sbGluZ0xheWVyKE5vZGUqLCBQbGF0Zm9ybUxheWVyKiwgUGxh
dGZvcm1MYXllciosIGNvbnN0IEludFNpemUmLCBib29sLCBib29sKSBvdmVycmlkZSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2Nyb2xsaW5nTGF5ZXIoTm9kZSosIFBsYXRmb3JtTGF5ZXIq
LCBQbGF0Zm9ybUxheWVyKikgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2ViQXBw
T3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRlIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0TmVlZHNT
Y3JvbGxOb3RpZmljYXRpb25zKEZyYW1lKiwgYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBv
YnNlcnZlZENvbnRlbnRDaGFuZ2UoRnJhbWUqKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGNsZWFy
Q29udGVudENoYW5nZU9ic2VydmVycyhGcmFtZSopIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbm90
aWZ5UmV2ZWFsZWRTZWxlY3Rpb25CeVNjcm9sbGluZ0ZyYW1lKEZyYW1lKikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBkaWRMYXlvdXQoTGF5b3V0VHlwZSkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBk
aWRTdGFydE92ZXJmbG93U2Nyb2xsKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRFbmRPdmVy
Zmxvd1Njcm9sbCgpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBzdXBwcmVzc0Zvcm1Ob3RpZmlj
YXRpb25zKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCByZXN0b3JlRm9ybU5vdGlmaWNhdGlvbnMo
KSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQgYWRkT3JVcGRhdGVTY3JvbGxpbmdMYXllcihOb2Rl
KiwgUGxhdGZvcm1MYXllciosIFBsYXRmb3JtTGF5ZXIqLCBjb25zdCBJbnRTaXplJiwgYm9vbCwg
Ym9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCByZW1vdmVTY3JvbGxpbmdMYXllcihOb2RlKiwg
UGxhdGZvcm1MYXllciosIFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZSB7IH0KKworICAgIHZvaWQg
d2ViQXBwT3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHNob3dQ
bGF5YmFja1RhcmdldFBpY2tlcihib29sKSBvdmVycmlkZSB7IH07CiAjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKQogCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKLSAgICB2aXJ0dWFsIGlu
dCBkZXZpY2VPcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBp
bnQgZGV2aWNlT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdG9wcGluZygpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1N0b3BwaW5nKCkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAg
ICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5Q2hyb21lQ2xpZW50KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNFbXB0eUNocm9tZUNsaWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4mKSBvdmVycmlkZSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcygpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29u
c3QgVmVjdG9yPFJlZlB0cjxFbGVtZW50Pj4mKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHNob3Vs
ZE5vdGlmeU9uRm9ybUNoYW5nZXMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAog
Ly8gRklYTUUgKGJ1ZyAxMTYyMzMpOiBHZXQgcmlkIG9mIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQu
IEl0IGlzIGEgdHJhdmVzdHkuCkBAIC0yMzUsMTkzICsyMzUsMTkzIEBAIGNsYXNzIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgogICAg
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50KCkgeyAgfQotICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgp
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfSAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKKyAgICBib29sIGhhc1dlYlZpZXco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9u
cwogCi0gICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciop
IG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVy
Kikgb3ZlcnJpZGUgeyB9CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCBmb3Jj
ZUxheW91dE9uUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZv
ck5vbkhUTUwoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgp
IG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCBzZXRDb3BpZXNPblNjcm9sbCgpIG92ZXJyaWRlIHsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
ZGV0YWNoZWRGcm9tUGFyZW50MigpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGV0YWNoZWRGcm9t
UGFyZW50MygpIG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbnZlcnRNYWluUmVz
b3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciosIFNlc3Npb25JRCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKERvY3VtZW50TG9hZGVyKiwg
U2Vzc2lvbklELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5p
dGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZywgRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVu
dGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcsIERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
Jikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlIHsgfQogI2lmIFVTRShQUk9URUNUSU9OX1NQ
QUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdmlydHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZykgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKERvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZykgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogI2VuZGlmCiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1
bnNpZ25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgoRG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nLCBpbnQpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVJlc3BvbnNlKERvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcsIGludCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBvdmVycmlk
ZSB7IH0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkRmluaXNoRGF0YURldGVjdGlvbihOU0FycmF5ICopIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkgKikgb3ZlcnJpZGUgeyB9
CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgaW50KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgVVJMJiwgZG91YmxlLCBkb3VibGUpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0
aGluUGFnZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hT
dGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9u
Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
SWNvblR5cGUpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkg
b3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dChMYXlvdXRNaWxl
c3RvbmVzKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFNob3coKSBvdmVycmlkZSB7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lGdW5j
dGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBGcmFtZVBvbGljeUZ1bmN0aW9uKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZSB7IH0K
LQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxGb3JtU3RhdGU+KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4sIEZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHJl
dmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopIG92ZXJyaWRlIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpIG92ZXJyaWRlIHsgfQotCi0gICAgdmlydHVhbCB2b2lk
IHN0YXJ0RG93bmxvYWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWROYW1lID0gU3RyaW5nKCkpIG92ZXJyaWRlIHsgVU5VU0VEX1BBUkFNKHN1Z2dlc3RlZE5h
bWUpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVy
Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0
aXBhcnRDb250ZW50KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlcGxhY2VN
dWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0
dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlk
ZSB7IH0KLQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IFJlc291cmNlRXJyb3IgZXJyb3IoIiIsIDAsIFVS
TCgpLCAiIik7IGVycm9yLnNldElzQ2FuY2VsbGF0aW9uKHRydWUpOyByZXR1cm4gZXJyb3I7IH0K
LSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7
IH0KLSAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJv
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9y
KCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNo
b3dVUkxFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNv
dXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9y
IGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotCi0g
ICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBV
UkwoKSwgIiIpOyB9Ci0gICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhpc3RF
cnJvcihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VF
cnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQotICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBwbHVn
aW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7
IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9Ci0KLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNIVE1M
KGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgZ2Vu
ZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIiI7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgb3ZlcnJpZGUg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlIHsg
fQotCi0gICAgdmlydHVhbCBSZWY8RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVy
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9h
ZGVyJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
Z1dpdGhEaXJlY3Rpb24mLCBjb25zdCBVUkwmKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwg
U3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBvdmVycmlkZSB7IHJldHVybiAiIjsgfQotCi0g
ICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1l
Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZy
b21DYWNoZWRGcmFtZShDYWNoZWRGcmFtZSopIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZGluZyhEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIGludCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKworICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50
UmVkaXJlY3QoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdChjb25zdCBVUkwmLCBkb3VibGUsIGRvdWJsZSkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvbigpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhJY29uVHlwZSkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMpIG92ZXJyaWRlIHsgfQor
CisgICAgRnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgb3Zl
cnJpZGUgeyB9CisKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZyYW1lUG9saWN5
RnVuY3Rpb24pIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiwgRnJhbWVQb2xpY3lG
dW5jdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjYW5jZWxQb2xpY3lDaGVjaygpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBk
aXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVy
cmlkZSB7IH0KKworICAgIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3Jt
KFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiwgRnJhbWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBj
b25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIHNldE1haW5GcmFt
ZURvY3VtZW50UmVhZHkoYm9vbCkgb3ZlcnJpZGUgeyB9CisKKyAgICB2b2lkIHN0YXJ0RG93bmxv
YWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0g
U3RyaW5nKCkpIG92ZXJyaWRlIHsgVU5VU0VEX1BBUkFNKHN1Z2dlc3RlZE5hbWUpOyB9CisKKyAg
ICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIG92ZXJyaWRlIHsgfQorICAg
IHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7IH0KKworICAg
IHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBkaWRSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJyaWRlIHsgfQorCisgICAgdm9pZCBj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZSB7
IH0KKworICAgIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jikgb3ZlcnJpZGUgeyBSZXNvdXJjZUVycm9yIGVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyBl
cnJvci5zZXRJc0NhbmNlbGxhdGlvbih0cnVlKTsgcmV0dXJuIGVycm9yOyB9CisgICAgUmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGUgeyBy
ZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAgIFJlc291cmNlRXJy
b3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBv
dmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwoKSwgIiIpOyB9CisgICAg
UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGUgeyByZXR1cm4gUmVzb3VyY2VFcnJvcigiIiwgMCwgVVJMKCksICIiKTsgfQorICAg
IFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIiLCAwLCBVUkwo
KSwgIiIpOyB9CisKKyAgICBSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IHJldHVybiBSZXNvdXJjZUVycm9yKCIi
LCAwLCBVUkwoKSwgIiIpOyB9CisgICAgUmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJy
b3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJlc291cmNlRXJy
b3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKyAgICBSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5k
bGVMb2FkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFJl
c291cmNlRXJyb3IoIiIsIDAsIFVSTCgpLCAiIik7IH0KKworICAgIGJvb2wgc2hvdWxkRmFsbEJh
Y2soY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAg
ICBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuU2hv
d01JTUVUeXBlQXNIVE1MKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBT
dHJpbmcmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIFN0cmluZyBnZW5l
cmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiIjsgfQorCisgICAgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIHJlc3RvcmVWaWV3U3RhdGUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHBy
b3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZEZpbmlzaExv
YWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1l
bnQoKSBvdmVycmlkZSB7IH0KKworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1l
bnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Vic3RpdHV0ZURhdGEmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKERvY3VtZW50TG9h
ZGVyJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGly
ZWN0aW9uJiwgY29uc3QgVVJMJikgb3ZlcnJpZGUgeyB9CisKKyAgICBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIG92ZXJyaWRlIHsgcmV0dXJuICIiOyB9CisKKyAgICB2b2lkIHNhdmVQbGF0
Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSBvdmVy
cmlkZSB7IH0KICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVG
cmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRS
ZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpIG92ZXJyaWRlIHsgfQogI2VuZGlm
Ci0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBvdmVy
cmlkZSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBvdmVycmlk
ZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgZGlzcGF0Y2hEaWRCZWNvbWVGcmFtZXNldChib29sKSBvdmVycmlkZSB7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgb3ZlcnJpZGUgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2Jh
bEhpc3RvcnlJdGVtRm9yUGFnZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzYXZl
Vmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBi
b29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgVVJMJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25z
dCBVUkwmLCBib29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxGcmFtZT4gY3Jl
YXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVmUHRyPFdpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxl
bWVudCosIGNvbnN0IFVSTCYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVjcmVhdGVQbHVnaW4oV2lkZ2V0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRy
PFdpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxl
dEVsZW1lbnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIG92
ZXJyaWRlIHsgfQorICAgIGJvb2wgc2hvdWxkR29Ub0hpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhp
c3RvcnlJdGVtRm9yUGFnZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2F2ZVZpZXdTdGF0ZVRv
SXRlbShIaXN0b3J5SXRlbSopIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgY2FuQ2FjaGVQYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dChTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlk
RGV0ZWN0WFNTKGNvbnN0IFVSTCYsIGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIFJlZlB0cjxGcmFt
ZT4gY3JlYXRlRnJhbWUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiwgY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRNTFBsdWdJbkVsZW1l
bnQqLCBjb25zdCBVUkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiwgY29uc3QgU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNyZWF0ZVBs
dWdpbihXaWRnZXQqKSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFdpZGdldD4gY3JlYXRlSmF2
YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBV
UkwmLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIE9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIE9iamVjdENvbnRlbnRU
eXBlKCk7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CisgICAgT2JqZWN0Q29udGVudFR5cGUgb2JqZWN0
Q29udGVudFR5cGUoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyByZXR1cm4g
T2JqZWN0Q29udGVudFR5cGUoKTsgfQorICAgIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVk
aXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYpIG92
ZXJyaWRlIHsgfQorICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0Kikgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01X
cmFwcGVyV29ybGQmKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZv
ckljb25Ob3RpZmljYXRpb24oYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCByZWdpc3RlckZv
ckljb25Ob3RpZmljYXRpb24oYm9vbCkgb3ZlcnJpZGUgeyB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkKLSAgICB2aXJ0dWFsIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmpl
Y3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBOU0NhY2hlZFVS
TFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHJlc3BvbnNlKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biByZXNwb25zZTsgfQorICAgIFJlbW90ZUFYT2JqZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgTlNDYWNoZWRVUkxSZXNw
b25zZSogd2lsbENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBO
U0NhY2hlZFVSTFJlc3BvbnNlKiByZXNwb25zZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcmVz
cG9uc2U7IH0KICNlbmRpZgogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKICAg
ICAvLyBGSVhNRTogV2luZG93cyBzaG91bGQgdXNlIHdpbGxDYWNoZVJlc3BvbnNlIC0gPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzI1Nz4uCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZENhY2hlUmVzcG9uc2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nLCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkIGxv
bmcgbG9uZykgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc2hvdWxkQ2FjaGVS
ZXNwb25zZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQgbG9uZyBsb25nKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpIG92ZXJyaWRlOwor
ICAgIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPEZvcm1TdGF0
ZT4pIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVm
UHRyPEZvcm1TdGF0ZT4pIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgaXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiB9
OwogCiBjbGFzcyBFbXB0eVRleHRDaGVja2VyQ2xpZW50IDogcHVibGljIFRleHRDaGVja2VyQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJD
aGFuZ2VTZWxlY3Rpb24oVGV4dENoZWNraW5nVHlwZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBpZ25vcmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsZWFybldvcmQoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0
cmluZyhTdHJpbmdWaWV3LCBpbnQqLCBpbnQqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIFN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjaGVj
a0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQq
LCBpbnQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hh
bmdlU2VsZWN0aW9uKFRleHRDaGVja2luZ1R5cGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiwgaW50
Kikgb3ZlcnJpZGUgeyB9CisgICAgU3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9
CisgICAgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8R3JhbW1h
ckRldGFpbD4mLCBpbnQqLCBpbnQqKSBvdmVycmlkZSB7IH0KIAogI2lmIFVTRShVTklGSUVEX1RF
WFRfQ0hFQ0tJTkcpCi0gICAgdmlydHVhbCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBjaGVj
a1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3LCBUZXh0Q2hlY2tpbmdUeXBlTWFzaykgb3ZlcnJp
ZGUgeyByZXR1cm4gVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4oKTsgfQorICAgIFZlY3RvcjxU
ZXh0Q2hlY2tpbmdSZXN1bHQ+IGNoZWNrVGV4dE9mUGFyYWdyYXBoKFN0cmluZ1ZpZXcsIFRleHRD
aGVja2luZ1R5cGVNYXNrKSBvdmVycmlkZSB7IHJldHVybiBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PigpOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBWZWN0b3I8U3RyaW5nPiYpIG92ZXJyaWRlIHsg
fQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRl
eHRDaGVja2luZ1JlcXVlc3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldEd1ZXNzZXNGb3JXb3Jk
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTdHJpbmc+Jikgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhQYXNzUmVmUHRyPFRleHRDaGVj
a2luZ1JlcXVlc3Q+KSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIEVtcHR5RWRpdG9yQ2xpZW50IDog
cHVibGljIEVkaXRvckNsaWVudCB7CkBAIC00MjksMTE2ICs0MjksMTE2IEBAIGNsYXNzIEVtcHR5
RWRpdG9yQ2xpZW50IDogcHVibGljIEVkaXRvckNsaWVudCB7CiBwdWJsaWM6CiAgICAgRW1wdHlF
ZGl0b3JDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5FbXB0eUVkaXRvckNsaWVudCgpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoUmFuZ2UqKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hp
dGVzcGFjZUVuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5n
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdy
YW1tYXJDaGVja2luZygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hlY2tl
ckRvY3VtZW50VGFnKCkgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KLQotCi0gICAgdmlydHVhbCBi
b29sIHNob3VsZEJlZ2luRWRpdGluZyhSYW5nZSopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEVuZEVkaXRpbmcoUmFuZ2UqKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBS
YW5nZSosIEVkaXRvckluc2VydEFjdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBSYW5nZSosIEVk
aXRvckluc2VydEFjdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShSYW5nZSosIFJhbmdlKiwgRUFmZmluaXR5
LCBib29sKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwgUmFuZ2UqKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBseVN0eWxlKCkgb3ZlcnJpZGUgeyB9
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFJhbmdlKiwgUmFu
Z2UqKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRpZEJl
Z2luRWRpdGluZygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hh
bmdlZFNlbGVjdGlvbihGcmFtZSopIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzY2FyZGVkQ29tcG9zaXRpb24oRnJhbWUqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3
aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0Q2xpZW50UGFzdGVib2FyZERhdGFGb3JSYW5nZShSYW5nZSos
IFZlY3RvcjxTdHJpbmc+JiwgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYpIG92ZXJyaWRl
IHsgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRv
U3RlcD4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NS
ZWZQdHI8VW5kb1N0ZXA+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJVbmRvUmVk
b09wZXJhdGlvbnMoKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5Q3V0
KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGRlZmF1
bHRWYWx1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShGcmFtZSosIGJvb2wgZGVmYXVs
dFZhbHVlKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBkZWZhdWx0VmFsdWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGNhblJlZG8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
Ci0gICAgdmlydHVhbCB2b2lkIHVuZG8oKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVkbygpIG92ZXJyaWRlIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUtleWJvYXJkRXZl
bnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bnB1dE1ldGhvZEtleWRvd24oS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlIHsgfQotCi0gICAgdmly
dHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50Kikgb3ZlcnJpZGUgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCopIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoRWxlbWVu
dCopIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9t
RXZlbnQoRWxlbWVudCosIEtleWJvYXJkRXZlbnQqKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCB0ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQq
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEo
RWxlbWVudCopIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvdmVyZmxvd1Njcm9sbFBv
c2l0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92
ZXJyaWRlIHsgfQorCisgICAgYm9vbCBzaG91bGREZWxldGVSYW5nZShSYW5nZSopIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRl
c3BhY2VFbmFibGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZvaWQgdG9nZ2xlR3JhbW1hckNoZWNraW5nKCkgb3ZlcnJpZGUgeyB9CisgICAg
aW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3ZlcnJpZGUgeyByZXR1cm4gLTE7IH0KKwor
CisgICAgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoUmFuZ2UqKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhSYW5nZSopIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRJbnNlcnROb2RlKE5vZGUqLCBSYW5nZSosIEVk
aXRvckluc2VydEFjdGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNo
b3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgUmFuZ2UqLCBFZGl0b3JJbnNlcnRBY3Rpb24p
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3Rl
ZFJhbmdlKFJhbmdlKiwgUmFuZ2UqLCBFQWZmaW5pdHksIGJvb2wpIG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICBib29sIHNob3VsZEFwcGx5U3R5bGUoU3R5bGVQcm9wZXJ0aWVzKiwg
UmFuZ2UqKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZGlkQXBwbHlTdHls
ZSgpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoUmFu
Z2UqLCBSYW5nZSopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2b2lkIGRpZEJl
Z2luRWRpdGluZygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRl
bnRzKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKEZy
YW1lKikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVM
YXlvdXQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpc2NhcmRlZENvbXBvc2l0aW9uKEZyYW1l
Kikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUmFuZ2UqKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFJhbmdlKiwgVmVjdG9y
PFN0cmluZz4mLCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+Jikgb3ZlcnJpZGUgeyB9CisK
KyAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pIG92ZXJyaWRl
OworICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpIG92ZXJyaWRlIHsgfQorCisg
ICAgYm9vbCBjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGRlZmF1bHRWYWx1ZTsgfQorICAgIGJvb2wgY2FuUGFzdGUoRnJhbWUqLCBi
b29sIGRlZmF1bHRWYWx1ZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZGVmYXVsdFZhbHVlOyB9
CisgICAgYm9vbCBjYW5VbmRvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGNhblJlZG8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorCisgICAg
dm9pZCB1bmRvKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCByZWRvKCkgb3ZlcnJpZGUgeyB9CisK
KyAgICB2b2lkIGhhbmRsZUtleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlIHsg
fQorICAgIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKEtleWJvYXJkRXZlbnQqKSBvdmVy
cmlkZSB7IH0KKworICAgIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKEVsZW1lbnQqKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoRWxlbWVudCopIG92
ZXJyaWRlIHsgfQorICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKEVsZW1lbnQqKSBv
dmVycmlkZSB7IH0KKyAgICBib29sIGRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50
KiwgS2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB0
ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKEVsZW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKEVsZW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIG92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CiAKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RGVsYXlpbmdBbmRDb2FsZXNjaW5n
Q29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcERlbGF5aW5nQW5kQ29hbGVzY2luZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCkg
b3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlRGF0YVRvUGFzdGVib2FyZChOU0Rp
Y3Rpb25hcnkqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIE5TQXJyYXkqIHN1cHBvcnRlZFBh
c3RlYm9hcmRUeXBlc0ZvckN1cnJlbnRTZWxlY3Rpb24oKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBOU0FycmF5KiByZWFkRGF0YUZyb21QYXN0ZWJvYXJkKE5TU3Ry
aW5nKiwgaW50KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29s
IGhhc1JpY2hseUVkaXRhYmxlU2VsZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KLSAgICB2aXJ0dWFsIERvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnRG
cm9tRGVsZWdhdGUoaW50KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVh
bCBib29sIHBlcmZvcm1zVHdvU3RlcFBhc3RlKERvY3VtZW50RnJhZ21lbnQqKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgaW50IHBhc3RlYm9hcmRDaGFuZ2VDb3VudCgp
IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHN0YXJ0RGVsYXlpbmdBbmRDb2FsZXNj
aW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHN0
b3BEZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9ucygpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgd3JpdGVEYXRhVG9QYXN0ZWJvYXJkKE5TRGljdGlvbmFyeSopIG92
ZXJyaWRlIHsgfQorICAgIE5TQXJyYXkqIHN1cHBvcnRlZFBhc3RlYm9hcmRUeXBlc0ZvckN1cnJl
bnRTZWxlY3Rpb24oKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgTlNBcnJheSog
cmVhZERhdGFGcm9tUGFzdGVib2FyZChOU1N0cmluZyosIGludCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQorICAgIGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdt
ZW50RnJvbURlbGVnYXRlKGludCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGJv
b2wgcGVyZm9ybXNUd29TdGVwUGFzdGUoRG9jdW1lbnRGcmFnbWVudCopIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgaW50IHBhc3RlYm9hcmRDaGFuZ2VDb3VudCgpIG92ZXJyaWRlIHsg
cmV0dXJuIDA7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBO
U1N0cmluZyogdXNlclZpc2libGVTdHJpbmcoTlNVUkwqKSBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9Ci0gICAgdmlydHVhbCBEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50RnJv
bUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nKiwgVmVjdG9yPFJlZlB0cjxBcmNo
aXZlUmVzb3VyY2U+PiYpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH07Ci0gICAgdmlydHVh
bCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9
OwotICAgIHZpcnR1YWwgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIE5TVVJMICpjYW5vbmljYWxpemVVUkxTdHJp
bmcoTlNTdHJpbmcqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgTlNTdHJpbmcq
IHVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMKikgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQor
ICAgIERvY3VtZW50RnJhZ21lbnQqIGRvY3VtZW50RnJhZ21lbnRGcm9tQXR0cmlidXRlZFN0cmlu
ZyhOU0F0dHJpYnV0ZWRTdHJpbmcqLCBWZWN0b3I8UmVmUHRyPEFyY2hpdmVSZXNvdXJjZT4+Jikg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfTsKKyAgICB2b2lkIHNldEluc2VydGlvblBhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9OworICAgIE5TVVJMICpjYW5vbmljYWxp
emVVUkwoTlNVUkwqKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgTlNVUkwgKmNh
bm9uaWNhbGl6ZVVSTFN0cmluZyhOU1N0cmluZyopIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KICNlbmRpZgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIHZvaWQgdXBwZXJjYXNl
V29yZCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb3dlcmNhc2VXb3JkKCkgb3Zl
cnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNhcGl0YWxpemVXb3JkKCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBsb3dlcmNh
c2VXb3JkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjYXBpdGFsaXplV29yZCgpIG92ZXJyaWRl
IHsgfQogI2VuZGlmCiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCi0gICAg
dmlydHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0g
ICAgdmlydHVhbCBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRl
KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0
dXRpb25FbmFibGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRl
Y3Rpb24oKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNEYXNoU3Vi
c3RpdHV0aW9uRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHRvZ2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKSBvdmVycmlkZSB7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4
dFJlcGxhY2VtZW50KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21hdGlj
U3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sKSBvdmVycmlkZSB7
IH0KKyAgICBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCB0b2dnbGVTbWFydEluc2VydERlbGV0ZSgpIG92ZXJyaWRl
IHsgfQorICAgIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJz
dGl0dXRpb24oKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGlzQXV0b21hdGljTGlua0RldGVjdGlv
bkVuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgdG9nZ2xlQXV0
b21hdGljTGlua0RldGVjdGlvbigpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgaXNBdXRvbWF0aWNE
YXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dm9pZCB0b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uKCkgb3ZlcnJpZGUgeyB9CisgICAg
Ym9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkgb3Zl
cnJpZGUgeyB9CisgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQo
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uKCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU2hvd1VuaWNvZGVNZW51KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHNob3VsZFNob3dVbmljb2RlTWVudSgpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIFRleHRDaGVja2VyQ2xpZW50
KiB0ZXh0Q2hlY2tlcigpIG92ZXJyaWRlIHsgcmV0dXJuICZtX3RleHRDaGVja2VyQ2xpZW50OyB9
CisgICAgVGV4dENoZWNrZXJDbGllbnQqIHRleHRDaGVja2VyKCkgb3ZlcnJpZGUgeyByZXR1cm4g
Jm1fdGV4dENoZWNrZXJDbGllbnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGlu
Z1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1hckRldGFpbCYp
IG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3Nw
ZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBz
aG93U3BlbGxpbmdVSShib29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3BlbGxp
bmdVSUlzU2hvd2luZygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCB1cGRh
dGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgR3JhbW1h
ckRldGFpbCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNz
cGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNob3dTcGVs
bGluZ1VJKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3BlbGxpbmdVSUlzU2hvd2luZygp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElu
cHV0TWV0aG9kU3RhdGUoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wp
IG92ZXJyaWRlIHsgfQogCiBwcml2YXRlOgogICAgIEVtcHR5VGV4dENoZWNrZXJDbGllbnQgbV90
ZXh0Q2hlY2tlckNsaWVudDsKQEAgLTU1MCwyMSArNTUwLDIxIEBAIGNsYXNzIEVtcHR5Q29udGV4
dE1lbnVDbGllbnQgOiBwdWJsaWMgQ29udGV4dE1lbnVDbGllbnQgewogcHVibGljOgogICAgIEVt
cHR5Q29udGV4dE1lbnVDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5FbXB0eUNvbnRleHRNZW51
Q2xpZW50KCkgeyAgfQotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURlc3Ryb3llZCgpIG92
ZXJyaWRlIHsgfQorICAgIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZFVSTChjb25zdCBVUkwmKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aEdvb2dsZShjb25zdCBGcmFtZSopIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBsb29rVXBJbkRpY3Rpb25hcnkoRnJhbWUqKSBvdmVycmlk
ZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTcGVha2luZygpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBzdG9wU3BlYWtpbmcoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGRvd25sb2FkVVJMKGNvbnN0IFVSTCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2VhcmNoV2l0
aEdvb2dsZShjb25zdCBGcmFtZSopIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgbG9va1VwSW5EaWN0
aW9uYXJ5KEZyYW1lKikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc1NwZWFraW5nKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJpZGUgeyB9CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIG92ZXJyaWRlIHsgfQogI2Vu
ZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJTElUWV9DT05URVhUX01FTlVTKQotICAgIHZpcnR1YWwg
dm9pZCBzaG93Q29udGV4dE1lbnUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNob3dDb250ZXh0
TWVudSgpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiB9OwogI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQpAQCAtNTc1LDEyICs1NzUsMTIgQEAgY2xhc3MgRW1wdHlEcmFnQ2xpZW50IDogcHVi
bGljIERyYWdDbGllbnQgewogcHVibGljOgogICAgIEVtcHR5RHJhZ0NsaWVudCgpIHsgfQogICAg
IHZpcnR1YWwgfkVtcHR5RHJhZ0NsaWVudCgpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJm
b3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0RhdGEm
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0
aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJikgb3Zl
cnJpZGUgeyB9Ci0gICAgdmlydHVhbCBEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0Zv
ckRyYWcoRHJhZ0RhdGEmKSBvdmVycmlkZSB7IHJldHVybiBEcmFnRGVzdGluYXRpb25BY3Rpb25O
b25lOyB9Ci0gICAgdmlydHVhbCBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25NYXNr
Rm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBEcmFnU291cmNlQWN0
aW9uTm9uZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25z
dCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgRGF0YVRyYW5zZmVyJiwgRnJhbWUmLCBib29s
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQo
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0RhdGEmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQ
b2ludCYsIERhdGFUcmFuc2ZlciYpIG92ZXJyaWRlIHsgfQorICAgIERyYWdEZXN0aW5hdGlvbkFj
dGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSYpIG92ZXJyaWRlIHsgcmV0dXJuIERyYWdE
ZXN0aW5hdGlvbkFjdGlvbk5vbmU7IH0KKyAgICBEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VB
Y3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBEcmFn
U291cmNlQWN0aW9uTm9uZTsgfQorICAgIHZvaWQgc3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29u
c3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIERhdGFUcmFuc2ZlciYsIEZyYW1lJiwgYm9v
bCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogfTsKICNlbmRpZiAvLyBFTkFCTEUoRFJBR19TVVBQT1JUKQogCkBAIC01OTAsNTAg
KzU5MCw1MCBAQCBwdWJsaWM6CiAgICAgRW1wdHlJbnNwZWN0b3JDbGllbnQoKSB7IH0KICAgICB2
aXJ0dWFsIH5FbXB0eUluc3BlY3RvckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RlZFBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGluc3BlY3RlZFBh
Z2VEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikg
b3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQorICAgIEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVs
KiBvcGVuTG9jYWxGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgaGlnaGxpZ2h0
KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJpZGUgeyB9CiB9
OwogCiBjbGFzcyBFbXB0eURldmljZUNsaWVudCA6IHB1YmxpYyBEZXZpY2VDbGllbnQgewogcHVi
bGljOgotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGUgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc3RhcnRV
cGRhdGluZygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGUg
eyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU1vdGlvbkNsaWVudCA6IHB1YmxpYyBEZXZpY2VN
b3Rpb25DbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERl
dmljZU1vdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIERldmljZU1v
dGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVy
cmlkZSB7IH0KKyAgICB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJvbGxlciop
IG92ZXJyaWRlIHsgfQorICAgIERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9s
bGVyRGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU9yaWVu
dGF0aW9uQ2xpZW50IDogcHVibGljIERldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIqKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0aW9uRGF0YSogbGFz
dE9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZp
cnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVy
Kikgb3ZlcnJpZGUgeyB9CisgICAgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBsYXN0T3JpZW50YXRp
b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9pZCBkZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIH07CiAKIGNsYXNz
IEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50IDogcHVibGljIFByb2dyZXNzVHJhY2tlckNsaWVu
dCB7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92
ZXJyaWRlIHsgfQorICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHByb2dyZXNzU3RhcnRlZChGcmFtZSYpIG92ZXJyaWRlIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChGcmFtZSYpIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJikgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBwcm9ncmVzc1N0YXJ0ZWQoRnJhbWUmKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKEZyYW1lJikgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBwcm9ncmVzc0ZpbmlzaGVkKEZyYW1lJikgb3ZlcnJpZGUgeyB9CiB9OwogCiBjbGFzcyBF
bXB0eURpYWdub3N0aWNMb2dnaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIERpYWdub3N0aWNMb2dn
aW5nQ2xpZW50IHsKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkU2FtcGxlKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgU2hvdWxkU2FtcGxl
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxk
U2FtcGxlKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFNob3VsZFNhbXBsZSkgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBTaG91bGRTYW1wbGUpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkU2FtcGxlKSBvdmVycmlk
ZSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtYWluRnJhbWVEZXN0cm95ZWQoKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIG1haW5GcmFtZURlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQogfTsKIAogdm9p
ZCBmaWxsV2l0aEVtcHR5Q2xpZW50cyhQYWdlQ29uZmlndXJhdGlvbiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggMjUyYmM1ZDQ0ZGNj
NWVmYmI4NjRmZjQ2OTcyYThlZTc2NzNlYzRkOC4uYzBjMmQyNmVlZTY2NGRkNWE5NDYxY2NiMzc3
NzhjYjdkMmE1ZDVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9mcmFtZSA9
IG51bGxwdHI7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QoKSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewog
ICAgICAgICAvLyBGSVhNRTogUGluZ0xvYWRlciBmaW5pc2hlcyB3aXRob3V0IGEgZnJhbWUsIGJ1
dCBpdCBzaG91bGQgdXNlIGl0cyBkb2N1bWVudCdzIHJlZmVycmVyIHBvbGljeS4KICAgICAgICAg
aWYgKCFtX2ZyYW1lKQpAQCAtNTIsNyArNTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRnJhbWUqIGZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mcmFtZTsgfQorICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZnJhbWU7IH0KIAogICAgIEZy
YW1lKiBtX2ZyYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFn
ZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKaW5kZXggY2Zh
Y2JjNjI2ZGEyNjJhNzYwNzA0OTVmYTA4OWRlOGEyYzRlYTNiOS4uNTY2MDViODFlYThmOWQ1ODc3
YTM5Y2ZhMWUyYjBjZmE2YzRkYWY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ltYWdlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgK
QEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgSW1h
Z2VMb2FkZXIoRWxlbWVudCYpOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UqKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hM
b2FkRXZlbnQoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuaAppbmRleCA1YWFmZjY3
MDFjMzY1MTQwYTI1MGI1OThmZTRmZjY2MjhhN2ZiYjRlLi5lMzQ1YjRlMWZiOGY3MzA5NDllNTli
NDhkYmQ2MjViOWZlNDY4M2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlu
a0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rTG9hZGVyLmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIGJvb2wgbG9hZExpbmsoY29uc3QgTGlua1JlbEF0dHJp
YnV0ZSYsIGNvbnN0IFVSTCYsIERvY3VtZW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBu
b3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsaW5r
TG9hZFRpbWVyRmlyZWQoKTsKICAgICB2b2lkIGxpbmtMb2FkaW5nRXJyb3JUaW1lckZpcmVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXgg
MzQ2ZjhmZWZjYjZlOTdjZjE1OGRhYjAxYjc3OTg1ZTE1OWFlNjY3NC4uNGY4ZDBjZjMyZTM2ZDdi
MDg3MGJkYWViNjI4MGEzNmY0MjEyNGJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIG1fc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IGluaXRpYXRpbmdEb2N1
bWVudC0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUmIGZyYW1lKSBvdmVycmlkZQorICAgIHZvaWQg
ZmlyZShGcmFtZSYgZnJhbWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7
CiAKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGZyYW1lLmxvYWRlcigp
LmNoYW5nZUxvY2F0aW9uKGZyYW1lUmVxdWVzdCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0VGltZXIoRnJhbWUmIGZyYW1lLCBUaW1lciYgdGltZXIpIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRTdGFydFRpbWVyKEZyYW1lJiBmcmFtZSwgVGltZXImIHRpbWVyKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKG1faGF2ZVRvbGRDbGllbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBmcmFtZS5sb2FkZXIoKS5j
bGllbnRSZWRpcmVjdGVkKG1fdXJsLCBkZWxheSgpLCBjdXJyZW50VGltZSgpICsgdGltZXIubmV4
dEZpcmVJbnRlcnZhbCgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCkpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRTdG9wVGltZXIoRnJhbWUmIGZyYW1lLCBib29sIG5ld0xvYWRJblByb2dy
ZXNzKSBvdmVycmlkZQorICAgIHZvaWQgZGlkU3RvcFRpbWVyKEZyYW1lJiBmcmFtZSwgYm9vbCBu
ZXdMb2FkSW5Qcm9ncmVzcykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9oYXZlVG9s
ZENsaWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2NCwxMiArMTY0LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgY2xlYXJVc2VyR2VzdHVyZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTdGFydFRpbWVyKEZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUKKyAgICBib29sIHNob3Vs
ZFN0YXJ0VGltZXIoRnJhbWUmIGZyYW1lKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZyYW1lLmxvYWRlcigpLmFsbEFuY2VzdG9yc0FyZUNvbXBsZXRlKCk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGZpcmUoRnJhbWUmIGZyYW1lKSBvdmVycmlkZQorICAgIHZvaWQgZmlyZShG
cmFtZSYgZnJhbWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAg
ICAgIGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCksIHVybCgpKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAg
ICAgU2NoZWR1bGVkTG9jYXRpb25DaGFuZ2UoRG9jdW1lbnQqIGluaXRpYXRpbmdEb2N1bWVudCwg
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExp
c3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCBkdXJpbmdMb2FkKQogICAgICAgICA6IFNjaGVk
dWxlZFVSTE5hdmlnYXRpb24oaW5pdGlhdGluZ0RvY3VtZW50LCAwLjAsIHNlY3VyaXR5T3JpZ2lu
LCB1cmwsIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCwgZHVyaW5n
TG9hZCwgdHJ1ZSkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZShGcmFtZSYgZnJhbWUpIG92
ZXJyaWRlCisgICAgdm9pZCBmaXJlKEZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Iod2FzVXNlckdlc3R1cmUo
KSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGZpcmUoRnJhbWUmIGZyYW1lKSBvdmVycmlkZQorICAg
IHZvaWQgZmlyZShGcmFtZSYgZnJhbWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBVc2VyR2Vz
dHVyZUluZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0
ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2Vz
dHVyZSk7CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lJiBmcmFtZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGZpcmUo
RnJhbWUmIGZyYW1lKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3Np
bmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCkBA
IC0yNTMsNyArMjUzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9zaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5ID0gZG9jdW1lbnQtPnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1By
b3BhZ2F0ZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lJiBmcmFtZSkg
b3ZlcnJpZGUKKyAgICB2b2lkIGZpcmUoRnJhbWUmIGZyYW1lKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2VzdHVy
ZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQcm9j
ZXNzaW5nVXNlckdlc3R1cmUpOwogCkBAIC0yNjksNyArMjY5LDcgQEAgcHVibGljOgogICAgICAg
ICBmcmFtZS5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KGZyYW1lUmVxdWVzdCwgbV9zdWJtaXNz
aW9uLT5ldmVudCgpLCBtX3N1Ym1pc3Npb24tPnN0YXRlKCkpOwogICAgIH0KICAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkU3RhcnRUaW1lcihGcmFtZSYgZnJhbWUsIFRpbWVyJiB0aW1lcikgb3Zl
cnJpZGUKKyAgICB2b2lkIGRpZFN0YXJ0VGltZXIoRnJhbWUmIGZyYW1lLCBUaW1lciYgdGltZXIp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9oYXZlVG9sZENsaWVudCkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI3OSw3ICsyNzksNyBAQCBwdWJsaWM6CiAgICAgICAgIGZyYW1lLmxv
YWRlcigpLmNsaWVudFJlZGlyZWN0ZWQobV9zdWJtaXNzaW9uLT5yZXF1ZXN0VVJMKCksIGRlbGF5
KCksIGN1cnJlbnRUaW1lKCkgKyB0aW1lci5uZXh0RmlyZUludGVydmFsKCksIGxvY2tCYWNrRm9y
d2FyZExpc3QoKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0b3BUaW1lcihGcmFt
ZSYgZnJhbWUsIGJvb2wgbmV3TG9hZEluUHJvZ3Jlc3MpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRT
dG9wVGltZXIoRnJhbWUmIGZyYW1lLCBib29sIG5ld0xvYWRJblByb2dyZXNzKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKCFtX2hhdmVUb2xkQ2xpZW50KQogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuaAppbmRleCA5OTI2YzMzMTI5NGFkMDdhZDBjNmJhMzNhMmQyYzQ4NWI4NGYwYjMwLi41MTZk
NTViN2ZmMDM4YWQwYzU2OGM2YjczZDc4YWNiMjU2OTM2YmM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaApAQCAtNTcsMjEgKzU3
LDIxIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRG9uZSgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpbml0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgaW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UsIHN0ZDo6ZnVuY3Rpb248
dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWdu
ZWQsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGlt
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGxvbmcgbG9uZyBl
bmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJlbGVh
c2VSZXNvdXJjZXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VSZXNvdXJjZXMoKSBvdmVy
cmlkZTsKIAogICAgIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKEZyYW1lKiwgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2FuY2Vs
KGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2Fu
Y2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxDYW5jZWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0
IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFPckJ1
ZmZlcihjb25zdCBjaGFyKiwgaW50LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuaAppbmRleCAxODliM2JjOGE4MWEwZWQ1MGNmNmI1OGIyM2Y0NmM0
MGI0N2RkZWVjLi4wNzA2NGQ3MDA5YTY0Mzg4NmIxN2YyZTI2MDVhZTc1MDQyMmE1ZTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRDcmVhdGVRdWlja0xvb2tIYW5kbGUoUXVpY2tMb29rSGFuZGxlJikgb3Zl
cnJpZGU7CiAjZW5kaWYKICAgICBib29sIGlzUXVpY2tMb29rUmVzb3VyY2UoKSB7IHJldHVybiBt
X2lzUXVpY2tMb29rUmVzb3VyY2U7IH0KIApAQCAtMTU4LDEwICsxNTgsMTAgQEAgcHJvdGVjdGVk
OgogICAgIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucygpIHsgcmV0dXJuIG1f
b3B0aW9uczsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmICFVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VI
YW5kbGUqLCBOU0NhY2hlZFVSTFJlc3BvbnNlKikgb3ZlcnJpZGU7CisgICAgTlNDYWNoZWRVUkxS
ZXNwb25zZSogd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBOU0NhY2hlZFVSTFJl
c3BvbnNlKikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkgJiYgVVNFKENG
TkVUV09SSykKLSAgICB2aXJ0dWFsIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVz
cG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsK
KyAgICBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKQEAgLTE4MCwzMSArMTgwLDMx
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5pc2hOZXR3b3JrTG9hZCgpOwogCiAgICAgLy8gUmVz
b3VyY2VIYW5kbGVDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFJlc291
cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVk
aXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKFJl
c291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9u
ZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3Vi
bGUgZmluaXNoVGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHdhc0Jsb2NrZWQoUmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgY2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOworICAgIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFJlc291cmNlSGFuZGxlKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRT
ZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBj
b25zdCBjaGFyKiwgdW5zaWduZWQsIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlc291cmNlSGFuZGxlKiwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+LCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjYW5ub3RTaG93VVJMKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAj
aWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRGF0YUFycmF5KFJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZiBkYXRhQXJyYXkp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShSZXNvdXJjZUhhbmRsZSos
IENGQXJyYXlSZWYgZGF0YUFycmF5KSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsg
cmV0dXJuIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgb3ZlcnJpZGUgeyBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKTsgfSAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZSB7IGRpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSk7IH0gCisgICAgYm9vbCBzaG91bGRVc2VD
cmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0dXJuIHNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBjaGFsbGVuZ2UpIG92ZXJyaWRlIHsgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKGNoYWxsZW5nZSk7IH0gCisgICAgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFs
bGVuZ2UpIG92ZXJyaWRlIHsgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxl
bmdlKTsgfSAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZp
cnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpIG92ZXJyaWRl
IHsgcmV0dXJuIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlv
blNwYWNlKTsgfQorICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNl
KSBvdmVycmlkZSB7IHJldHVybiBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
KHByb3RlY3Rpb25TcGFjZSk7IH0KICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENh
bmNlbGxhdGlvbihSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiBjaGFsbGVuZ2UpIG92ZXJyaWRlIHsgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY2hhbGxlbmdlKTsg
fQorICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZSB7IHJlY2VpdmVkQ2Fu
Y2VsbGF0aW9uKGNoYWxsZW5nZSk7IH0KICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVydGllcyhSZXNvdXJjZUhh
bmRsZSopIG92ZXJyaWRlOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rp
b25Qcm9wZXJ0aWVzKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCiAgICAgLy8gRklYTUU6IFdpbmRvd3Mgc2hvdWxk
IHVzZSB3aWxsQ2FjaGVSZXNwb25zZSAtIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTcyNTc+LgotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlKFJl
c291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7CisgICAgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCmluZGV4IDY5YTI0MjI5
NzIxZmY2Y2E5ODk5M2E2OTk3NzAxOGZlZWQ4ZDVjZDguLjA4M2VmZjQxM2MyOTM2ZTM5ODY4M2Zh
YmY0OGQ1ZGIwOTMzZTM2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oCkBAIC00OCw0NiArNDgsNDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflN1YnJlc291
cmNlTG9hZGVyKCk7CiAKICAgICB2b2lkIGNhbmNlbElmTm90RmluaXNoaW5nKCk7Ci0gICAgdmly
dHVhbCBib29sIGlzU3VicmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKKyAgICBib29sIGlzU3Vi
cmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVz
b3VyY2UoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRMb2Fk
aW5nKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdGFydExvYWRpbmcoKSBvdmVycmlkZTsKIAogICAg
IC8vIEZJWE1FOiBXaGF0IGlzIGFuICJpT1MiIG9yaWdpbmFsIHJlcXVlc3Q/IFdoeSBpcyBpdCBu
ZWNlc3Nhcnk/Ci0gICAgdmlydHVhbCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGlPU09yaWdpbmFs
UmVxdWVzdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faU9TT3JpZ2luYWxSZXF1ZXN0OyB9
CisgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpT1NPcmlnaW5hbFJlcXVlc3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lPU09yaWdpbmFsUmVxdWVzdDsgfQogI2VuZGlmCiAKIHByaXZh
dGU6CiAgICAgU3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqLCBDYWNoZWRSZXNvdXJjZSosIGNvbnN0
IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpOwogCi0gICAgdmlydHVhbCBib29sIGluaXQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpbml0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdElu
dGVybmFsKFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25l
ZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVT
ZW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciosIHVuc2lnbmVkLCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5ndGgs
IERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVC
dWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBsb25nIGxvbmcgZW5jb2RlZERhdGFMZW5n
dGgsIERhdGFQYXlsb2FkVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNlbmREYXRh
KHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzVG9CZVNlbnQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5
bG9hZFR5cGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRU
eXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRp
bWUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAK
ICNpZiBQTEFURk9STShDT0NPQSkgJiYgIVVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICp3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UqKSBvdmVycmlkZTsKKyAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICp3aWxs
Q2FjaGVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBvdmVy
cmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZiB3aWxsQ2FjaGVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworICAgIENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKE5FVFdPUktfQ0ZE
QVRBX0FSUkFZX0NBTExCQUNLKQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0RhdGFBcnJheSgp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGFBcnJheShDRkFycmF5UmVmKSBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzRGF0YUFycmF5
KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJh
eShDRkFycmF5UmVmKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
UmVzb3VyY2VzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWxlYXNlUmVzb3VyY2VzKCkgb3ZlcnJp
ZGU7CiAKICNpZiBVU0UoU09VUCkKLSAgICB2aXJ0dWFsIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1
ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsK
KyAgICBjaGFyKiBnZXRPckNyZWF0ZVJlYWRCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIHNp
emVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIGJvb2wgY2hlY2tGb3JI
VFRQU3RhdHVzQ29kZUVycm9yKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVy
LmgKaW5kZXggMWRjODU5ZjUyNzE3NDUyNmE0MTg1OTE2Zjk1Yjk2YjM2NTg3ZjgxZC4uNDllZDM5
ZmIzNzcxNWU5YTY0NWRjNTJmYTU0MGJmNDYwNTJkOThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuaApAQCAtNjQsMTMgKzY0LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAKICAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZXBy
ZWNhdGVkRGlkUmVjZWl2ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOworICAg
IHZvaWQgZGVwcmVjYXRlZERpZFJlY2VpdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSop
IG92ZXJyaWRlOwogICAgIAogICAgIC8vIFdlYlZUVFBhcnNlckNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBuZXdDdWVzUGFyc2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5ld1JlZ2lv
bnNQYXJzZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmlsZUZhaWxlZFRvUGFyc2Uo
KSBvdmVycmlkZTsKKyAgICB2b2lkIG5ld0N1ZXNQYXJzZWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IG5ld1JlZ2lvbnNQYXJzZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGVGYWlsZWRUb1BhcnNl
KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBwcm9jZXNzTmV3Q3VlRGF0YShDYWNoZWRSZXNv
dXJjZSopOwogICAgIHZvaWQgY3VlTG9hZFRpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDg3ODIwYzUzZTdhNjYxYmRj
MGYyMjQzYjk4YzlmMmMxNzUyOGJlYjUuLmEwYmEzNzBkZWI4MWQwMTJkNGMyMmZhMzQ0ZmU4Mjkz
M2NiNzMyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVM
b2FkZXIuaApAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
fldvcmtlclRocmVhZGFibGVMb2FkZXIoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2Vs
KCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgY2FuY2VsKCkgb3ZlcnJpZGU7CiAKICAgICAgICAg
Ym9vbCBkb25lKCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJDbGllbnRXcmFwcGVyLT5kb25lKCk7
IH0KIApAQCAtNzAsOCArNzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj46OmRlcmVmOwogCiAgICAgcHJvdGVj
dGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVmVGhyZWFkYWJsZUxvYWRlcigpIG92ZXJyaWRl
IHsgcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRlcmVmVGhyZWFkYWJsZUxvYWRlcigp
IG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgICAgICB2b2lkIHJlZlRocmVhZGFibGVMb2FkZXIo
KSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgICAgIHZvaWQgZGVyZWZUaHJlYWRhYmxlTG9hZGVy
KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICAvLyBDcmVh
dGVzIGEgbG9hZGVyIG9uIHRoZSBtYWluIHRocmVhZCBhbmQgYnJpZGdlcyBjb21tdW5pY2F0aW9u
IGJldHdlZW4KQEAgLTEwNCwxMyArMTA0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIHZvaWQgY2xlYXJDbGllbnRXcmFwcGVyKCk7CiAKICAgICAgICAgICAgIC8vIEFsbCBl
eGVjdXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
U2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25n
IHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlRXJyb3ImKSBv
dmVycmlkZTsKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygp
IG92ZXJyaWRlOworICAgICAgICAgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxv
bmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVy
cmlkZTsKKyAgICAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgICAgICAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlOworICAgICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOworICAgICAgICAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICAgICAgICAgIHZvaWQg
ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
CisgICAgICAgICAgICB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgb3ZlcnJpZGU7CiAKICAg
ICAgICAgICAgIC8vIE9ubHkgdG8gYmUgdXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAg
ICAgICBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gbV9tYWluVGhyZWFkTG9hZGVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdy
b3VwLmNwcAppbmRleCAzMjRmYzFjYjM1YmFhZWU3MGNhYzQwYzZhYzFlNDNlMGZhZWRkMTBlLi40
MWI2MzRkYTc1OGJhZGM4ZGUyMWI5OWRlY2FhMTI0YzNiNzliMGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cApAQCAtMTA1NSw3ICsxMDU1LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgZmlyZWQoKSBvdmVycmlkZQorICAgIHZvaWQgZmlyZWQoKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgbV9jYWNoZUdyb3VwLT5kaWRSZWFjaE1heEFwcENhY2hlU2l6ZSgpOwog
ICAgICAgICBkZWxldGUgdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaAppbmRleCA5ZmY2ODdjYTJhM2NkNTJhOGM0
YTVjNDI1OWNjZmIyOGI4NmEwMDljLi40ZGU4ZDVlNGYzOWRhMmUyZTk1YTVhMzg1NmE0ZTg1NTQz
M2U3MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCkBAIC0xMDUsMTIgKzEwNSwxMiBAQCBwcml2YXRlOgogCiAg
ICAgLy8gRm9yIG5vcm1hbCByZXNvdXJjZSBsb2FkaW5nLCBXZWJLaXQgY2xpZW50IGlzIGFza2Vk
IGFib3V0IGVhY2ggcmVzb3VyY2UgaW5kaXZpZHVhbGx5LiBTaW5jZSBhcHBsaWNhdGlvbiBjYWNo
ZSBkb2VzIG5vdCBiZWxvbmcgdG8gYW55IHBhcnRpY3VsYXIgZG9jdW1lbnQsCiAgICAgLy8gdGhl
IGV4aXN0aW5nIGNsaWVudCBjYWxsYmFjayBjYW5ub3QgYmUgdXNlZCwgc28gYXNzdW1lIHRoYXQg
YW55IGNsaWVudCB0aGF0IGVuYWJsZXMgYXBwbGljYXRpb24gY2FjaGUgYWxzbyB3YW50cyBpdCB0
byB1c2UgY3JlZGVudGlhbCBzdG9yYWdlLgotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91Ymxl
IGZpbmlzaFRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQgbGVuZ3RoLCBpbnQgZW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hU
aW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNYW5pZmVzdFJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVNYW5p
ZmVzdERhdGEoY29uc3QgY2hhciosIGludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVJlc291cmNlLmgKaW5kZXggY2YyMjg4
ZDE5ZDkxOTk5YzM2ZTkyNWUzMzVkY2E1YjExNWU1ZTlmOC4uOWEyM2NkNzc2YjQxMjY5NGRiMzkz
MjBmZDE4N2Q3N2FlYmJkNTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UuaApAQCAtNjQsNyArNjQsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBV
UkwmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiwgdW5zaWduZWQgdHlwZSwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhdGgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRl
bGl2ZXIoUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGl2ZXIoUmVzb3Vy
Y2VMb2FkZXImKSBvdmVycmlkZTsKIAogICAgIHVuc2lnbmVkIG1fdHlwZTsKICAgICB1bnNpZ25l
ZCBtX3N0b3JhZ2VJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5oCmluZGV4IGNmNjRiNTU4YjlhOTZhZTc4N2FjNDUzOTdmN2Jj
MDZlYWEzNjgzMWYuLjFhMTMzY2MwMWE4NjIxMmJmM2FjMzAzMmRmYTVhYjdjNzU1ZDIyOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9u
Q2FjaGUuaApAQCAtNDYsOSArNDYsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxET01BcHBs
aWNhdGlvbkNhY2hlPiBjcmVhdGUoRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IERPTUFwcGxpY2F0aW9uQ2FjaGUoZnJhbWUpKTsgfQogICAgIHZpcnR1YWwgfkRPTUFwcGxpY2F0
aW9uQ2FjaGUoKSB7IEFTU0VSVCghbV9mcmFtZSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXNj
b25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tRG9jdW1lbnRTdXNwZW5zaW9uKEZyYW1lKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCByZWNvbm5lY3RGcmFtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24o
RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFt
ZSgpIG92ZXJyaWRlOwogCiAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzKCkgY29uc3Q7CiAgICAg
dm9pZCB1cGRhdGUoRXhjZXB0aW9uQ29kZSYpOwpAQCAtNTgsMTYgKzU4LDE2IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+OjpyZWY7CiAgICAgdXNp
bmcgUmVmQ291bnRlZDxET01BcHBsaWNhdGlvbkNhY2hlPjo6ZGVyZWY7CiAKLSAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gRE9NQXBwbGljYXRpb25DYWNoZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRE9NQXBwbGljYXRpb25DYWNo
ZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIHRvRXZlbnRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVu
dElEIGlkKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01BcHBsaWNhdGlvbkNhY2hlKEZy
YW1lKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRl
cmVmKCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQor
ICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQogCiAgICAg
QXBwbGljYXRpb25DYWNoZUhvc3QqIGFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkgY29uc3Q7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5oCmluZGV4IDQ4OGM3YTdlY2E0MGQ4ZGQ3MTI5OTk3ZmQ3ZGFmOTc2ZjI5MDg1ZjEuLmEyZjNi
MGE2ZDY5YjlhYjZmMWY0YTk0ZTg5MzJkNDgzNDIwZjM1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBQYXNzUmVmUHRyPExlZ2Fj
eVdlYkFyY2hpdmU+IGNyZWF0ZUZyb21TZWxlY3Rpb24oRnJhbWUqKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUGFzc1JlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiBjcmVhdGUoUmFuZ2UqKTsK
IAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVHlwZSB0eXBl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiByYXdEYXRhUmVwcmVzZW50YXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmgKaW5kZXggOTExNzI3OTBhMWJmZDQ1OGVj
YzA1ODY2MGY1ZmNmNmY5Y2ZiZmUzOS4uMjcwNDBiYjFjNGM1YmVjYmJhZDNiMzZmMDE3ZmU2ZDRh
YTRiZGNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENT
U1N0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NT
U3R5bGVTaGVldC5oCkBAIC00OSwxNyArNDksMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBjYW5Vc2VTaGVldChNSU1FVHlwZUNoZWNrLCBib29s
KiBoYXNWYWxpZE1JTUVUeXBlKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBib29sIG1heVRyeVJl
cGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNv
dXJjZUNsaWVudCopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRS
ZXNvdXJjZUNsaWVudCopIG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRFbmNv
ZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZW5j
b2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRp
bmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95
RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBvdmVycmlkZTsKIAogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgdmlydHVhbCB2b2lkIGNoZWNrTm90aWZ5KCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsKIAogICAgICAgICBSZWZQdHI8VGV4dFJl
c291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBTdHJpbmcgbV9kZWNvZGVkU2hlZXRU
ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmgKaW5kZXggN2Q0ZTVj
MWZiMGQ0OTAyMDA4MzJlNGE3NTZiMGU2OThmZTQ1OWU1OS4uZDExODhlN2Q0YWM5YWM1MzQwYTU2
MGQ0MzgzMmNlNzM1ZTZlZGY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
Rm9udC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250
KCk7CiAKICAgICB2b2lkIGJlZ2luTG9hZElmTmVlZGVkKENhY2hlZFJlc291cmNlTG9hZGVyJik7
Ci0gICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIW1fbG9hZEluaXRpYXRlZDsgfQorICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAhbV9sb2FkSW5pdGlhdGVkOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkkpOwogCkBA
IC01OSwxNSArNTksMTUgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERh
dGEoU2hhcmVkQnVmZmVyKiBkYXRhKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tOb3RpZnkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29k
ZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGVja05vdGlmeSgpIG92ZXJyaWRl
OworICAgIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciYsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZChDYWNoZWRSZXNvdXJj
ZUxvYWRlciYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7
CisgICAgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhbGxD
bGllbnRzUmVtb3ZlZCgpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEZvbnRDdXN0
b21QbGF0Zm9ybURhdGE+IG1fZm9udEN1c3RvbVBsYXRmb3JtRGF0YTsKICAgICBib29sIG1fbG9h
ZEluaXRpYXRlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRGb250Q2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udENs
aWVudC5oCmluZGV4IDFmM2U5ZDIyYmRkOGEzMThhYzViYjI2N2VmNmU5NGVmMmQ1MjdkM2YuLjQ5
MzI0MWE2MGY0MDFlM2FiNTcxMTcyZjFjOWI5MWJmYmYxMWViNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnRDbGllbnQuaApAQCAtMzYsNyArMzYsNyBAQCBj
bGFzcyBDYWNoZWRGb250Q2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5DYWNoZWRGb250Q2xpZW50KCkgeyB9CiAgICAgc3RhdGljIENh
Y2hlZFJlc291cmNlQ2xpZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBGb250VHlwZTsg
fQotICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CisgICAgQ2FjaGVk
UmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGZvbnRMb2FkZWQoQ2Fj
aGVkRm9udCYpIHsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuaAppbmRleCA1YThlODM3MjQ1MGEwZTU2NmIwZDc5NzdhMzhjOThlNGFjYjQ3OTEwLi4zNGVh
ZWMwZGIyMGZlOGIwODYxYWQ5YmMzY2JhMjJmZDRhYWMyOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtNzIsOCArNzIsOCBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdDsKICAgICBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQnVmZmVyKFNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciopIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZm
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikgb3Zl
cnJpZGU7CiAKICAgICBlbnVtIFNpemVUeXBlIHsKICAgICAgICAgVXNlZFNpemUsCkBAIC04NSw3
ICs4NSw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNNYW51YWxseUNhY2hlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNNYW51YWxseUNhY2hlZDsgfQogICAgIFJldmFsaWRhdGlvbkRlY2lzaW9uIG1h
a2VSZXZhbGlkYXRpb25EZWNpc2lvbihDYWNoZVBvbGljeSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImLCBjb25zdCBSZXNvdXJjZUxv
YWRlck9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXImLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
aXNPcmlnaW5DbGVhbihTZWN1cml0eU9yaWdpbiopOwogCkBAIC05OCwzMCArOTgsMzAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0
ID0gbnVsbHB0cik7CiAgICAgdm9pZCBjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzd2l0Y2hDbGllbnRzVG9SZXZhbGlkYXRlZFJlc291cmNlKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN3aXRjaENsaWVudHNUb1JldmFs
aWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKKyAgICBib29sIG1heVRyeVJlcGxhY2VFbmNvZGVk
RGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlbW92ZUNsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCopIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGFsbENsaWVudHNSZW1vdmVkKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIG92ZXJyaWRlOworICAgIHZvaWQgYWxs
Q2xpZW50c1JlbW92ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGEoY29uc3QgY2hhciogZGF0YSwg
dW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXJyb3IoQ2FjaGVk
UmVzb3VyY2U6OlN0YXR1cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3BvbnNlUmVj
ZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRGF0
YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNwb25z
ZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKIAogICAgIC8vIEZv
ciBjb21wYXRpYmlsaXR5LCBpbWFnZXMga2VlcCBsb2FkaW5nIGV2ZW4gaWYgdGhlcmUgYXJlIEhU
VFAgZXJyb3JzLgotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVy
cm9ycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHNob3VsZEln
bm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0dXMoKSA9PSBVbmtub3duICYmICFpc0xvYWRp
bmcoKTsgfQorICAgIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGluZygp
OyB9CiAKICAgICAvLyBJbWFnZU9ic2VydmVyCi0gICAgdmlydHVhbCB2b2lkIGRlY29kZWRTaXpl
Q2hhbmdlZChjb25zdCBJbWFnZSosIGludCBkZWx0YSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZERyYXcoY29uc3QgSW1hZ2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlY29kZWRTaXpl
Q2hhbmdlZChjb25zdCBJbWFnZSosIGludCBkZWx0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRE
cmF3KGNvbnN0IEltYWdlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9u
QWR2YW5jZWQoY29uc3QgSW1hZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hhbmdl
ZEluUmVjdChjb25zdCBJbWFnZSosIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGFu
Z2VkSW5SZWN0KGNvbnN0IEltYWdlKiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBhZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoU2hhcmVkQnVmZmVyJik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggOGQ1ZWMz
OGZkYjhlOTY0NGEwNWY2MWUyNzIyZmMwMjExOWNjMjY3MS4uNzIyMzVhY2JmOWFmYTRjZThjOWE2
YWEzNjE5ZjM0OTVkOTQxOWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlQ2xpZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgQ2FjaGVkSW1hZ2VD
bGllbnQgOiBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1
YWwgfkNhY2hlZEltYWdlQ2xpZW50KCkgeyB9CiAgICAgc3RhdGljIENhY2hlZFJlc291cmNlQ2xp
ZW50VHlwZSBleHBlY3RlZFR5cGUoKSB7IHJldHVybiBJbWFnZVR5cGU7IH0KLSAgICB2aXJ0dWFs
IENhY2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIENhY2hlZFJlc291cmNlQ2xpZW50
VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBleHBlY3Rl
ZFR5cGUoKTsgfQogCiAgICAgLy8gQ2FsbGVkIHdoZW5ldmVyIGEgZnJhbWUgb2YgYW4gaW1hZ2Ug
Y2hhbmdlcyBiZWNhdXNlIHdlIGdvdCBtb3JlIGRhdGEgZnJvbSB0aGUgbmV0d29yay4KICAgICAv
LyBJZiBub3QgbnVsbCwgdGhlIEludFJlY3QgaXMgdGhlIGNoYW5nZWQgcmVjdCBvZiB0aGUgaW1h
Z2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5o
CmluZGV4IDMxMjhkMmE2MjhkM2VjYzEwOTcyMjM3Yjg3MDZkNmY1NjhlYzhiNTkuLjdjZDI1MjBl
ZWNkZmU2ZDMwZDU3ZDZlZDg5YTc4MzM4MWZiNTA1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5oCkBAIC01MSwyNyArNTEsMjcgQEAgcHVi
bGljOgogICAgIGJvb2wgd2FzUmVkaXJlY3RlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlZGlyZWN0
Q2hhaW4uaXNFbXB0eSgpOyB9OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRD
bGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciopIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
RGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgYWxsQ2xpZW50c1JlbW92ZWQoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHNob3VsZENhY2hlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRDYWNo
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHN3aXRj
aENsaWVudHNUb1JldmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9h
bGxvd0VuY29kZWREYXRhUmVwbGFjZW1lbnQ7IH0KKyAgICB2b2lkIHN3aXRjaENsaWVudHNUb1Jl
dmFsaWRhdGVkUmVzb3VyY2UoKSBvdmVycmlkZTsKKyAgICBib29sIG1heVRyeVJlcGxhY2VFbmNv
ZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYWxsb3dFbmNvZGVkRGF0YVJlcGxh
Y2VtZW50OyB9CiAKICAgICBjb25zdCBjaGFyKiBjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVu
ayhTaGFyZWRCdWZmZXIqLCB1bnNpZ25lZCYgaW5jcmVtZW50YWxEYXRhTGVuZ3RoKTsKICAgICB2
b2lkIG5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuZ3RoKTsKIAogI2lmIFVTRShTT1VQKQotICAgIHZpcnR1YWwgY2hhciogZ2V0T3JDcmVh
dGVSZWFkQnVmZmVyKHNpemVfdCByZXF1ZXN0ZWRTaXplLCBzaXplX3QmIGFjdHVhbFNpemUpIG92
ZXJyaWRlOworICAgIGNoYXIqIGdldE9yQ3JlYXRlUmVhZEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVk
U2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdW5zaWdu
ZWQgbG9uZyBtX2lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oCmluZGV4IGI5NjNmY2FiOWRlZTBkYjUzMjBj
ZDlhN2JjMmNiOGZlYmE4NzFjOTcuLjlhMTZiYzY4NWVkMGRhNTVhYmM1ZjVjMzc4YWExYmQzYzRj
MTVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZUNsaWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50IDogcHVibGljIENhY2hlZFJlc291cmNlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DYWNoZWRSYXdSZXNvdXJjZUNsaWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRS
ZXNvdXJjZUNsaWVudFR5cGUgZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gUmF3UmVzb3VyY2VUeXBl
OyB9Ci0gICAgdmlydHVhbCBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KKyAgICBDYWNo
ZWRSZXNvdXJjZUNsaWVudFR5cGUgcmVzb3VyY2VDbGllbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZXhwZWN0ZWRUeXBlKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkYXRhU2VudChD
YWNoZWRSZXNvdXJjZSosIHVuc2lnbmVkIGxvbmcgbG9uZyAvKiBieXRlc1NlbnQgKi8sIHVuc2ln
bmVkIGxvbmcgbG9uZyAvKiB0b3RhbEJ5dGVzVG9CZVNlbnQgKi8pIHsgfQogICAgIHZpcnR1YWwg
dm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFNWR0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9j
dW1lbnQuaAppbmRleCBhNzkxY2Q4MzFkMzZmYTVjOGVmYTc1NmNlZTJiYzFjMDdjYWNkMzdmLi44
YjIxOGIzNzUzZWIwNjQwNDMzMDFiYWYwZjFkZWNmOTliZmY0ZGMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnQuaApAQCAtMzgsMTAgKzM4LDEw
IEBAIHB1YmxpYzoKICAgICBTVkdEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2RvY3VtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG1heVRyeVJl
cGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKKyAgICBib29sIG1heVRyeVJl
cGxhY2VFbmNvZGVkRGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFN0cmluZyBlbmNv
ZGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTVkdEb2N1bWVudD4gbV9kb2N1bWVudDsKICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0RvY3VtZW50Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaAppbmRleCAz
NmFlZjI5YmU3NTgyYTRiZGNmODBmYWQ3ZjFkOWNiZWIwYzRjNmY3Li5iMjJlYWQwYjgwNmMzODA1
ZDFlMzc0ZmZkYWYwN2ZlZTI3YzQ5ZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQuaApAQCAtMzEsNyArMzEsNyBAQCBj
bGFzcyBDYWNoZWRTVkdEb2N1bWVudENsaWVudCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU1ZHRG9jdW1lbnRDbGllbnQoKSB7IH0K
ICAgICBzdGF0aWMgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIGV4cGVjdGVkVHlwZSgpIHsgcmV0
dXJuIFNWR0RvY3VtZW50VHlwZTsgfQotICAgIHZpcnR1YWwgQ2FjaGVkUmVzb3VyY2VDbGllbnRU
eXBlIHJlc291cmNlQ2xpZW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVk
VHlwZSgpOyB9CisgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRUeXBlIHJlc291cmNlQ2xpZW50VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGV4cGVjdGVkVHlwZSgpOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkU1ZHRm9udC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNW
R0ZvbnQuaAppbmRleCBjNjA1ZDM3MmE2Mzg4NmE1ZDEzYWY5ZWU1ZTkxODllZjFiNTk3MDY1Li4w
YzIzODNjOTViNDgxNWYwYTEyZDU1YTgyNzBlN2UyMzMzYTcyODE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmgKQEAgLTM4LDkgKzM4LDkgQEAgY2xhc3Mg
Q2FjaGVkU1ZHRm9udCBmaW5hbCA6IHB1YmxpYyBDYWNoZWRGb250IHsKIHB1YmxpYzoKICAgICBD
YWNoZWRTVkdGb250KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFNlc3Npb25JRCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRvbWljU3RyaW5nJiByZW1v
dGVVUkkpIG92ZXJyaWRlOworICAgIGJvb2wgZW5zdXJlQ3VzdG9tRm9udERhdGEoY29uc3QgQXRv
bWljU3RyaW5nJiByZW1vdGVVUkkpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgUmVmUHRy
PEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiwgY29uc3QgQXRvbWljU3Ry
aW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwgYm9vbCBzeW50aGV0aWNJdGFsaWMs
IGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBjb25zdCBGb250VmFyaWFudFNldHRpbmdzJikg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEZvbnQ+IGNyZWF0ZUZvbnQoY29uc3QgRm9udERlc2NyaXB0
aW9uJiwgY29uc3QgQXRvbWljU3RyaW5nJiByZW1vdGVVUkksIGJvb2wgc3ludGhldGljQm9sZCwg
Ym9vbCBzeW50aGV0aWNJdGFsaWMsIGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MmLCBjb25zdCBG
b250VmFyaWFudFNldHRpbmdzJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgRm9udFBsYXRm
b3JtRGF0YSBwbGF0Zm9ybURhdGFGcm9tQ3VzdG9tRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24m
LCBib29sIGJvbGQsIGJvb2wgaXRhbGljLCBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzJiwgY29u
c3QgRm9udFZhcmlhbnRTZXR0aW5ncyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFNjcmlwdC5oCmluZGV4IGNhZDllMTZlMTVmMWE5MzY2NGU4ODg4OTkwYzdhM2Y4MTExYjNm
NDQuLjE3YzEyYWVhNmFmM2M0YjM5NWM0MzMxOTU1MDQxOTRmNTJlMGM0MmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmgKQEAgLTQ3LDE1ICs0NywxNSBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFj
ZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
bWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRJZ25vcmVIVFRQU3RhdHVzQ29kZUVycm9y
cygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEVuY29kaW5nKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVmZmVyKikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaExv
YWRpbmcoU2hhcmVkQnVmZmVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eURlY29kZWREYXRhKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoKSBv
dmVycmlkZTsKIAogICAgIFN0cmluZyBtX3NjcmlwdDsKICAgICB1bnNpZ25lZCBtX3NjcmlwdEhh
c2ggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U3R5bGVTaGVldENsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFN0
eWxlU2hlZXRDbGllbnQuaAppbmRleCBlZWQyZDNhM2UyMWE1MGZkMDdjNjliNTFiYjllYWE5ZmEx
ZmFiZWNlLi4yYWEyOTJhNzFkZGRlYzlhNGI1NDkyY2YyNmU0YWY5OWVmZTEyZTI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU3R5bGVTaGVldENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTdHlsZVNoZWV0Q2xpZW50
LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQ2FjaGVkU3R5bGVTaGVldENsaWVudCA6IHB1Ymxp
YyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q2FjaGVkU3R5
bGVTaGVldENsaWVudCgpIHsgfQogICAgIHN0YXRpYyBDYWNoZWRSZXNvdXJjZUNsaWVudFR5cGUg
ZXhwZWN0ZWRUeXBlKCkgeyByZXR1cm4gU3R5bGVTaGVldFR5cGU7IH0KLSAgICB2aXJ0dWFsIENh
Y2hlZFJlc291cmNlQ2xpZW50VHlwZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBleHBlY3RlZFR5cGUoKTsgfQorICAgIENhY2hlZFJlc291cmNlQ2xpZW50VHlw
ZSByZXNvdXJjZUNsaWVudFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBleHBlY3RlZFR5
cGUoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRDU1NTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYg
LyogaHJlZiAqLywgY29uc3QgVVJMJiAvKiBiYXNlVVJMICovLCBjb25zdCBTdHJpbmcmIC8qIGNo
YXJzZXQgKi8sIGNvbnN0IENhY2hlZENTU1N0eWxlU2hlZXQqKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0WFNMU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIC8qIGhyZWYgKi8sIGNvbnN0IFVSTCYg
LyogYmFzZVVSTCAqLywgY29uc3QgU3RyaW5nJiAvKiBzaGVldCAqLykgeyB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFRleHRUcmFjay5oCmluZGV4IGVkYWQxOGM5
NWJmNzE3YTMzNzVhN2VkMThhNGI1NGZhYWEyYWFmMTMuLmY0ZTUzNGQzNTBjYWVkM2ZhNjNjYTA5
MzBmZDgyYmVhZmUyNjBhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkVGV4dFRyYWNrLmgKQEAgLTM4LDkgKzM4LDkgQEAgcHVibGljOgogICAgIENhY2hlZFRleHRU
cmFjayhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZXNzaW9uSUQpOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaExvYWRpbmcoU2hhcmVkQnVm
ZmVyKikgb3ZlcnJpZGU7CisgICAgYm9vbCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBhZGREYXRhQnVmZmVyKFNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZmZXIq
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgdXBkYXRlRGF0YShTaGFyZWRCdWZmZXIqKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVl
dC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFhTTFN0eWxlU2hlZXQuaApp
bmRleCAwZTAwZTY3NjY2YTQwNGExZmFkMjlhYTI5NTM5ZjNlOGJmNTQxYzdlLi4yMWEzYmFhNDRm
MTcwMjUxMjlhYWYxYzgyNmQzMjdiYTI0ZmNlNTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRYU0xTdHlsZVNoZWV0LmgKQEAgLTQyLDEyICs0MiwxMiBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBzaGVldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hlZXQ7
IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tOb3RpZnkoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgbWF5VHJ5UmVwbGFjZUVuY29kZWREYXRhKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVk
UmVzb3VyY2VDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5jb2Rpbmco
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZW5jb2RpbmcoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoZWNrTm90aWZ5KCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBtYXlUcnlSZXBsYWNlRW5jb2RlZERhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgdm9pZCBkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFN0
cmluZyBlbmNvZGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoTG9hZGluZyhT
aGFyZWRCdWZmZXIqKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX3NoZWV0OwogICAgIFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCAyYjY0M2I1ODcwMjMwYjdjZDFhY2NlM2U0OGQ3
NGNjZGUwMTMzNjQ2Li5iM2Q3ZmUyNDljYWI2ZjQwZjAwNTk3ZTNjYjJiZDI0NWMwM2NhZDQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTkxLDEx
ICs5MSwxMSBAQCBzdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmcoY29uc3QgU3RyaW5nJiB1cmwp
CiBjbGFzcyBEZWZhdWx0SWNvbkRhdGFiYXNlQ2xpZW50IGZpbmFsIDogcHVibGljIEljb25EYXRh
YmFzZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEltcG9ydEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
b25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZW1vdmVBbGxJY29ucygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hVUkxJbXBvcnQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZEltcG9ydEljb25VUkxG
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlkSW1wb3J0
SWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBkaWRSZW1vdmVBbGxJY29ucygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlkRmluaXNo
VVJMSW1wb3J0KCkgb3ZlcnJpZGUgeyB9CiB9OwogCiBzdGF0aWMgSWNvbkRhdGFiYXNlQ2xpZW50
KiBkZWZhdWx0Q2xpZW50KCkgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5oCmluZGV4IDFjODY3MzE2MjExMWMxN2UyYzBlYTVjMDJmZWFlY2FhZGRjMDBlMmIuLjUzMGEz
YTMwODkwMTRhM2ViMWJlMDJkMzI0ODI5Y2FjMjZkODZkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC03MSwzMiArNzEsMzIgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIEljb25EYXRhYmFzZSgpOwogICAgIH5JY29uRGF0YWJhc2UoKTsKIAot
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoSWNvbkRhdGFiYXNlQ2xp
ZW50Kikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDbGllbnQoSWNvbkRh
dGFiYXNlQ2xpZW50Kikgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgb3Blbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGNsb3NlKCkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAgICAgICAgICAgICAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsSWNvbnMoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZUFsbEljb25zKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlYWRJY29uRm9y
UGFnZVVSTEZyb21EaXNrKGNvbnN0IFN0cmluZyYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBJbWFnZSogZGVmYXVsdEljb24oY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIEltYWdlKiBkZWZhdWx0SWNvbihjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmV0YWluSWNvbkZvclBhZ2VVUkwo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0SWNvbkRhdGFGb3JJY29uVVJMKFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiBkYXRhLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJY29uRGF0YUZvckljb25V
UkwoUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkwpIG92ZXJyaWRlOwogCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBJbWFnZSogc3luY2hyb25vdXNJY29uRm9yUGFnZVVSTChjb25z
dCBTdHJpbmcmLCBjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzTmF0
aXZlSW1hZ2VQdHIgc3luY2hyb25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcm
IHBhZ2VVUkxPcmlnaW5hbCwgY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgU3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFL
bm93bkZvckljb25VUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNv
blVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIEltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYs
IGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgc3luY2hy
b25vdXNOYXRpdmVJY29uRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmIHBhZ2VVUkxPcmlnaW5hbCwg
Y29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeW5j
aHJvbm91c0ljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJv
b2wgc3luY2hyb25vdXNJY29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9h
ZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBEb2N1bWVudExvYWRlciopIG92ZXJy
aWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoYm9vbCBmbGFnKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBmbGFnKSBvdmVycmlkZTsKICAgICBib29sIGlz
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgZGVsYXlEYXRhYmFzZUNsZWFudXAoKTsKQEAgLTEwNCwxMCArMTA0LDEwIEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjaGVja0ludGVncml0eUJlZm9y
ZU9wZW5pbmcoKTsKIAogICAgIC8vIFN1cHBvcnQgZm9yIFdlYkNvcmVTdGF0aXN0aWNzIGluIFdl
YktpdAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgc2l6ZV90IHBhZ2VVUkxNYXBwaW5nQ291
bnQoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHNpemVfdCByZXRhaW5l
ZFBhZ2VVUkxDb3VudCgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgc2l6
ZV90IGljb25SZWNvcmRDb3VudCgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgc2l6ZV90IGljb25SZWNvcmRDb3VudFdpdGhEYXRhKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgc2l6ZV90IHBhZ2VVUkxNYXBwaW5nQ291bnQoKSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzaXplX3QgcmV0YWluZWRQYWdlVVJMQ291bnQoKSBvdmVycmlkZTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzaXplX3QgaWNvblJlY29yZENvdW50KCkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgc2l6ZV90IGljb25SZWNvcmRDb3VudFdpdGhEYXRhKCkgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgZnJpZW5kIEljb25EYXRhYmFzZUJhc2UmIGljb25EYXRhYmFzZSgpOwpA
QCAtMTMxLDggKzEzMSw4IEBAIHByaXZhdGU6CiAKIC8vICoqKiBBbnkgVGhyZWFkICoqKgogcHVi
bGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBpc09wZW4oKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyBkYXRhYmFzZVBhdGgoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzT3BlbigpIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBkYXRhYmFzZVBhdGgoKSBjb25zdCBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlZmF1bHREYXRhYmFz
ZUZpbGVuYW1lKCk7CiAKIHByaXZhdGU6CkBAIC0xNzksNyArMTc5LDcgQEAgcHJpdmF0ZToKIAog
Ly8gKioqIFN5bmMgVGhyZWFkIE9ubHkgKioqCiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCBib29sIHNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6ICAgIAogICAgIHN0YXRpYyB2b2lkIGljb25EYXRhYmFzZVN5
bmNUaHJlYWRTdGFydCh2b2lkICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRl
ci5oCmluZGV4IDA1NzhkY2U1ODY3YzIyODdlMzZmN2Q4MzcwMTA0NGFmZGI3NGMyY2IuLjQ3NzFj
MWY3MDNiZDkxNjM4NDU5NTNmMzdkMzA4MDY4NmZmZmQ3MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvaWNvbi9JY29uTG9hZGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c3RvcExvYWRpbmcoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CiAKICAgICBGcmFtZSYgbV9mcmFtZTsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IGNhOTFhZDAwNzhlMGVlZjRiYzZhNDIxMWIz
NjBlZjc1ZjQ3ODNmMmEuLjRmZDU4YmM1OTI1OTc5MGE0YzYxN2MxZTdlZTlkZWNkYWQ1ODJhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNTksMTIgKzU5LDEyIEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9t
aWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RT
dHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9w
ZXJ0aWVzJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzUGhyYXNpbmdDb250ZW50KGNvbnN0IE5v
ZGUmKSBjb25zdDsKICAgICBib29sIGlzRmxvd0NvbnRlbnQoY29uc3QgTm9kZSYpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVt
ZW50LmgKaW5kZXggODFlMWVlNTNmNDM4OGNlMzg4YTZjYzRkNDI2YTBmZTM3MjI4ZDIxOS4uYTgw
NmFlNDI1OTliOGJiMjE5YWM4NDAzNmY4NDY2NTU3Mjg1OGExMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5oCkBAIC0zNiwx
NCArMzYsMTQgQEAgY2xhc3MgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBN
YXRoTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uTWF0aE1MKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNQcmVzZW50YXRpb25NYXRoTUwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKICAgICBNYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50Jik7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5n
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxNYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTE1hdGhFbGVtZW50LmgKaW5kZXggMDRlYzY5Y2JkNjNmM2JmYzA2MGZjNzRiNWEyYWMy
NTEwMjRkY2FmYS4uMzdlZTU2ZDA1NjA0MTViNzc0ZTg0ZWZmNTRiZWFkMDZlNWQ5NjUwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1hdGhFbGVtZW50LmgKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNYXRoTUxNYXRoRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVu
ZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29u
c3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogfTsKICAgICAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxNZW5jbG9zZUVsZW1lbnQuaAppbmRleCA1ZjQ0MmMzOTQwODQyMWE5
ODI5MDRiNDEwYzQ3NWIwNDg3MmU1MDgzLi4wY2JhNGQ0YTQ2YmYwM2VkNTI4NjcxMDBhOWNiMThm
ZDAxZmMxY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MTWVuY2xv
c2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTE1lbmNsb3NlRWxl
bWVudC5oCkBAIC00MSwxMCArNDEsMTAgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1hdGhN
TE1lbmNsb3NlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29s
bGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxT
dHJpbmc+IG1fbm90YXRpb25WYWx1ZXM7CiAgICAgYm9vbCBtX2lzUmFkaWNhbFZhbHVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTZWxlY3RFbGVtZW50LmgKaW5kZXggMzhlZDcwYzlj
NzVkNDZiZDI4ZTIxMWM3NTYwOGJmYzFkOTc2MDg3OC4uZmM5NDM5NDhhYWYxMWJhY2FlODBhYjkx
OTZmMDY5YjJhMDRiODE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2VsZWN0
RWxlbWVudC5oCkBAIC00MCwxNSArNDAsMTUgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIE1h
dGhNTFNlbGVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
KTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2Rl
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNv
bnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFs
dWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJl
YXNvbiA9IE1vZGlmaWVkRGlyZWN0bHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdWYWx1ZSwgQXR0cmlidXRlTW9kaWZpY2F0aW9uUmVhc29uID0gTW9kaWZpZWRE
aXJlY3RseSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kikg
b3ZlcnJpZGU7CisgICAgYm9vbCB3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCB0b2dnbGUoKTsKICAgICBpbnQgZ2V0U2VsZWN0ZWRBY3Rpb25DaGls
ZEFuZEluZGV4KEVsZW1lbnQqJiBzZWxlY3RlZENoaWxkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxUZXh0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFRleHRFbGVtZW50LmgKaW5kZXggMWQ1ZjU3ODU4Y2RlMDNkZjI5MzllM2U5N2ZkNjA5
ZjA5MjYwNmMxMi4uOTNjZGE0MzljZTk4MTMzZTFmMGJkOTcxNWQ1ZDU1YzExOGZhZWY4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFRleHRFbGVtZW50LmgKQEAgLTM1LDE4ICszNSwx
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNYXRoTUxUZXh0RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBNYXRoTUxFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTFRl
eHRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c1ByZXNlbnRhdGlvbk1hdGhNTCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBib29sIGlzUHJlc2VudGF0aW9uTWF0aE1MKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCiBwcml2YXRlOgogICAgIE1hdGhNTFRleHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+
JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBj
b25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogfTsKICAg
ICAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKaW5k
ZXggOGIwOGJiYjQxODRmOTdkZDFiYmEyNGFlMGRkOGNjNDliNGI1OWNkZC4uNzczMDlkZDAxNWEz
MDJmN2E5NDVlNDBlNzA4ZWQwNTRjMGE5ZGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzLmgKQEAgLTkzLDcgKzkzLDcgQEAgcHVibGljOgogICAgIFN0
cmluZyBwcmltYXJ5QXVkaW9UcmFja0xhbmd1YWdlT3ZlcnJpZGUoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgYm9vbCB0ZXN0aW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdGluZ01vZGU7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VGVzdGluZ01vZGUoYm9vbCBvdmVycmlkZSkgeyBtX3Rlc3Rp
bmdNb2RlID0gb3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldFRlc3RpbmdNb2RlKGJvb2wgb3ZlcnJp
ZGUpIHsgbV90ZXN0aW5nTW9kZSA9IG92ZXJyaWRlOyB9CiAgICAgCiAgICAgUGFnZUdyb3VwJiBw
YWdlR3JvdXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VHcm91cDsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmgKaW5kZXggYzMz
NGNiMTMwYmNjZmY4OTJmN2MzNjNhOGFlMjYyZjI1ZTEyZmYyZi4uOTJhMmIzMDg5NzlmNWUwM2Q2
MzBiZmM5YTE0NzM4ZWRmOWUxNDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
YXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaApAQCAtNDIsMzEgKzQyLDMxIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRigpOwogCiAjaWYg
SEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKLSAgICB2aXJ0dWFsIENhcHRpb25E
aXNwbGF5TW9kZSBjYXB0aW9uRGlzcGxheU1vZGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25EaXNwbGF5TW9kZSkgb3ZlcnJp
ZGU7CisgICAgQ2FwdGlvbkRpc3BsYXlNb2RlIGNhcHRpb25EaXNwbGF5TW9kZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q2FwdGlvbkRpc3BsYXlNb2RlKENhcHRpb25EaXNwbGF5TW9k
ZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgdXNlclByZWZlcnNDYXB0aW9ucygpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgdXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGVBbmRJbXBvcnRhbmNlKGJvb2wm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZUFuZEltcG9y
dGFuY2UoYm9vbCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEludGVy
ZXN0ZWRJbkNhcHRpb25QcmVmZXJlbmNlQ2hhbmdlcygpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
SW50ZXJlc3RlZEluQ2FwdGlvblByZWZlcmVuY2VDaGFuZ2VzKCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlZmVycmVkTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRMYW5ndWFnZXMoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFByZWZlcnJlZExhbmd1YWdlKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFByZWZlcnJlZEF1ZGlvQ2hhcmFjdGVyaXN0
aWMoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBw
cmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2V0UHJlZmVycmVkQXVkaW9DaGFyYWN0ZXJpc3RpYyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBWZWN0b3I8U3RyaW5nPiBwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgc2hvdWxkRmlsdGVyVHJhY2tNZW51KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogI2Vsc2UKICAgICBib29sIHNob3VsZEZpbHRlclRyYWNrTWVudSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVT
aGVldE92ZXJyaWRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgdGV4dFRyYWNr
U2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiwgSFRNTE1lZGlhRWxlbWVudCopIGNvbnN0IG92ZXJy
aWRlOworICAgIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGludCB0ZXh0VHJhY2tTZWxlY3Rpb25TY29yZShUZXh0VHJhY2sqLCBIVE1MTWVk
aWFFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVjdG9yPFJlZlB0cjxBdWRpb1RyYWNr
Pj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShBdWRpb1RyYWNrTGlzdCopIG92ZXJyaWRlOwogICAg
IFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPj4gc29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJh
Y2tMaXN0Kikgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lRm9yVHJhY2soQXVkaW9U
cmFjayopIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmgKaW5kZXggNjI3MmRiYzE3N2E1
ZDY2M2M2M2I2MjI1ZmJmZWRkNzc4ODlkZWJmNC4uNGY0NzdhNGFhYThkNDhiZWE2ZWY2OWEzZTE4
NGFkYzgxYTFhZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oCkBAIC03MCwzMCArNzAsMzAgQEAgcHVi
bGljOgogICAgIENocm9tZUNsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAog
ICAgIC8vIEhvc3RXaW5kb3cgbWV0aG9kcy4KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJv
b3RWaWV3KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xsKGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25z
dCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0
ZVJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGVD
b250ZW50c0FuZFJvb3RWaWV3KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2Nyb2xsKGNvbnN0IEludFNpemUmLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZWdhdGVkU2Nyb2xsUmVxdWVzdGVkKGNvbnN0IEludFBvaW50JiBzY3JvbGxQ
b2ludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxlZ2F0ZWRTY3JvbGxSZXF1ZXN0ZWQoY29uc3Qg
SW50UG9pbnQmIHNjcm9sbFBvaW50KSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgSW50
UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IEludFJlY3QmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IEludFBvaW50
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IElu
dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBJ
bnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0
eVNjcmVlbihjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgYWNj
ZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBJbnRSZWN0IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IEludFJl
Y3QmKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xp
ZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJzb3IoY29uc3QgQ3Vyc29yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKKyAgICBQbGF0
Zm9ybVBhZ2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2V0Q3Vyc29yKGNvbnN0IEN1cnNvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q3Vyc29ySGlk
ZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFJFUVVFU1Rf
QU5JTUFUSU9OX0ZSQU1FKQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIG92
ZXJyaWRlOworICAgIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgog
Ci0gICAgdmlydHVhbCBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxh
eUlEKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCkgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgc2NyZWVuU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIEZsb2F0U2l6ZSBhdmFpbGFibGVTY3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmgKaW5kZXggMzkwZDBiMTEwOWM0ODc5MzQyYjg1YzlkNTAyNzc2ZTk1
M2I4YTdmNy4uNDZlYjk2NmUyOWViMjBmMjlkZTJiMTgzZjg2MDE4YmEwYmQxYzViMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NVGltZXIuaApAQCAtNzEsOSArNzEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgdXBkYXRlVGhyb3R0bGluZ1N0YXRlSWZOZWNlc3NhcnkoY29uc3QgRE9NVGlt
ZXJGaXJlU3RhdGUmKTsKIAogICAgICAgICAvLyBTdXNwZW5kYWJsZVRpbWVyCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBmaXJlZCgpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3Rv
cCgpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIGRvdWJsZSBhbGlnbmVkRmlyZVRpbWUoZG91
YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmaXJlZCgpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRpZFN0b3AoKSBvdmVycmlkZTsKKyAgICAgICAgZG91YmxlIGFsaWduZWRGaXJl
VGltZShkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgICAgIC8vIEFjdGl2ZURPTU9iamVj
dCBBUEkuCiAgICAgICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IDI2NzRhMGNhYjhiYTYzYzdhYzNm
Zjc3NTBjMDcxYTlhZGU2MjAyYjMuLjJlNDM5OGQ1MTExY2EyOWZmODZjZjNkNGM5ODhlMTE0MGFj
YzcyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMTEyLDEwICsxMTIsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyB0aGUgbmV0d29yayBsb2FkLiBTZWUgYWxzbyBT
ZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvLgogICAgICAgICB2b2lkIGRpZFNl
Y3VyZVRyYW5zaXRpb25UbyhEb2N1bWVudCopOwogCi0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBET01XaW5kb3dFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQorICAgICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldElu
dGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIERPTVdpbmRvd0V2ZW50VGFyZ2V0SW50
ZXJmYWNlVHlwZTsgfQorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwg
RE9NV2luZG93KiB0b0RPTVdpbmRvdygpIG92ZXJyaWRlOworICAgICAgICBET01XaW5kb3cqIHRv
RE9NV2luZG93KCkgb3ZlcnJpZGU7CiAKICAgICAgICAgdm9pZCByZWdpc3RlclByb3BlcnR5KERP
TVdpbmRvd1Byb3BlcnR5Kik7CiAgICAgICAgIHZvaWQgdW5yZWdpc3RlclByb3BlcnR5KERPTVdp
bmRvd1Byb3BlcnR5Kik7CkBAIC0yNzQsOSArMjc0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIC8vIEV2ZW50cwogICAgICAgICAvLyBFdmVudFRhcmdldCBBUEkKLSAgICAgICAg
dmlydHVhbCBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciosIGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRl
OworICAgICAgICBib29sIGFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFJlZlB0cjxFdmVudExpc3RlbmVyPiYmLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRl
OworICAgICAgICBib29sIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkgb3ZlcnJpZGU7CiAKICAgICAgICAg
dXNpbmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hF
dmVudChFdmVudCYsIEV2ZW50VGFyZ2V0Kik7CkBAIC0zNDgsMTEgKzM0OCwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UoKTsKICAgICAgICAgYm9vbCBhbGxvd2Vk
VG9DaGFuZ2VXaW5kb3dHZW9tZXRyeSgpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBm
cmFtZURlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbERldGFj
aFBhZ2UoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBmcmFtZURlc3Ryb3llZCgpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIHdpbGxEZXRhY2hQYWdlKCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAg
ICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQorICAgICAgICB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAogICAgICAgICBz
dGF0aWMgUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IEF0b21pY1N0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYsIERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBGcmFtZSYgZmlyc3RGcmFtZSwgRnJhbWUmIG9wZW5lckZy
YW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKERPTVdpbmRvdyYpPiBwcmVwYXJlRGlhbG9nRnVuY3Rp
b24gPSBudWxscHRyKTsKICAgICAgICAgYm9vbCBpc0luc2VjdXJlU2NyaXB0QWNjZXNzKERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBjb25zdCBTdHJpbmcmIHVybFN0cmluZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uaAppbmRleCAzNjIxOGQxZDVhOTQzODRmZTM3YmRl
YmE3OWFiMzQwNTM2MGQ1YmNiLi45ZGMyZTM1MGYwNTY5NGU2MjI4YWRmNTY2ZmQ3ZTUxNDA3Njkz
YWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmgKQEAgLTQzLDEx
ICs0MywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVdpbmRv
d0V4dGVuc2lvbihmcmFtZSwgd29ybGQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
Y29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHJlY29ubmVjdEZyYW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbihGcmFtZSopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJh
bWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lHbG9iYWxPYmplY3RJ
bkZyYW1lKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hHbG9iYWxPYmpl
Y3RGcm9tRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZUZvckRvY3Vt
ZW50U3VzcGVuc2lvbigpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb25uZWN0RnJhbWVGcm9tRG9j
dW1lbnRTdXNwZW5zaW9uKEZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUds
b2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95
R2xvYmFsT2JqZWN0SW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERldGFjaEdsb2Jh
bE9iamVjdEZyb21GcmFtZSgpIG92ZXJyaWRlOwogCiAgICAgRE9NV3JhcHBlcldvcmxkJiB3b3Js
ZCgpIGNvbnN0IHsgcmV0dXJuICptX3dvcmxkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggYjI5MWY5Njk2NTU2NzkyMzliODhkYzMzMWQyNzQ2YmM2
ZDM3NDNjNC4uYzk3NzgxY2MxYWYyZjg3Y2IwZWU2ZjdlY2EzZjY2MGU1NDRiNzk2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHVwZGF0ZVJlZ2lvbigp
IG92ZXJyaWRlOworICAgIGJvb2wgdXBkYXRlUmVnaW9uKCkgb3ZlcnJpZGU7CiB9OwogCiBib29s
IE1vdXNlV2hlZWxSZWdpb25PdmVybGF5Ojp1cGRhdGVSZWdpb24oKQpAQCAtMTI0LDcgKzEyNCw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVSZWdp
b24oKSBvdmVycmlkZTsKKyAgICBib29sIHVwZGF0ZVJlZ2lvbigpIG92ZXJyaWRlOwogfTsKIAog
Ym9vbCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6OnVwZGF0ZVJlZ2lvbigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50U291cmNlLmgKaW5kZXggOWU4MWEyYWYxMTM4YTJiM2NiZDY0NmVjMmQ0Zjk1
NWMwMDIyZWZlOC4uNGMxZTIyNDA0Njg0ZTE2NzcwMDJkYmJiMGRmZTVmMzVkYTNlYmJjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaApAQCAtNzEsMjEgKzcxLDIxIEBAIHB1YmxpYzoKICAg
ICB1c2luZyBSZWZDb3VudGVkPEV2ZW50U291cmNlPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50
ZWQ8RXZlbnRTb3VyY2U+OjpkZXJlZjsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBFdmVudFNv
dXJjZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgRXZl
bnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBFdmVudFNvdXJjZUV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQog
CiBwcml2YXRlOgogICAgIEV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBVUkwmLCBjb25zdCBEaWN0aW9uYXJ5Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRU
YXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRU
YXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
b3ZlcnJpZGUgeyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRl
IHsgZGVyZWYoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNp
Z25lZCBsb25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcsIGRvdWJsZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0
Q2hlY2soKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBs
b25nLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmcodW5zaWduZWQgbG9uZywgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbEFjY2Vzc0Nv
bnRyb2xDaGVjayhjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRG
YWlsUmVkaXJlY3RDaGVjaygpIG92ZXJyaWRlOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQ
SS4KICAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4
IDY3Y2YxMjJjMzE0Y2YxMzk4MGYyODFmYmM0ZDA5ZWNjZWMxZWQyMzQuLjBiMGY1ZTRiN2ZhMGQw
MGMyM2NmNzRjZTBjYmJmZmRiNWZhMDRhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAt
NzQsMTMgKzc0LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkZyYW1lVmlldygpOwogCi0g
ICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
SG9zdFdpbmRvdyogaG9zdFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIHZpcnR1
YWwgYm9vbCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgc2NoZWR1bGVB
bmltYXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgRnJhbWUmIGZyYW1lKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxGcmFtZSY+KG1fZnJhbWUuZ2V0KCkpOyB9CkBAIC05NSwxNSAr
OTUsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWFyZ2luV2lkdGgoTGF5b3V0VW5pdCk7CiAg
ICAgdm9pZCBzZXRNYXJnaW5IZWlnaHQoTGF5b3V0VW5pdCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2V0Q2FuSGF2ZVNjcm9sbGJhcnMoYm9vbCkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYW5IYXZlU2Nyb2xsYmFycyhib29sKSBvdmVycmlkZTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUNhbkhhdmVTY3JvbGxiYXJzKCk7CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFy
T3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVT
Y3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGF2b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGF2
b2lkU2Nyb2xsYmFyQ3JlYXRpb24oKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1NpemUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVDb250ZW50c1NpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRz
U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVDb250ZW50c1Np
emUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlID0gdHJ1
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkaWRGaXJzdExheW91dCgpIGNvbnN0OwpAQCAt
MTY0LDcgKzE2NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBHcmFwaGljc0xheWVy
KiBncmFwaGljc0xheWVyRm9yUGxhdGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVMYXllckZsdXNoQWxsb3dpbmdUaHJvdHRsaW5nKCk7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFRpbGVkQmFja2luZyogdGlsZWRCYWNraW5n
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgVGlsZWRCYWNraW5nKiB0aWxl
ZEJhY2tpbmcoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEluIHRoZSBmdXR1cmUgd2hlbiBh
bnkgU2Nyb2xsYWJsZUFyZWEgY2FuIGhhdmUgYSBub2RlIGluIHRoIFNjcm9sbGluZ1RyZWUsIHRo
aXMgc2hvdWxkCiAgICAgLy8gYmVjb21lIGEgdmlydHVhbCBmdW5jdGlvbiBvbiBTY3JvbGxhYmxl
QXJlYS4KQEAgLTIyNywyMSArMjI3LDIxIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoSW50U2l6ZSk7CiAgICAgSW50
U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCkgY29uc3Q7CiAgICAgCi0gICAg
dmlydHVhbCBJbnRSZWN0IHdpbmRvd0NsaXBSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50
UmVjdCB3aW5kb3dDbGlwUmVjdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IEludFJlY3Qgd2luZG93Q2xpcFJlY3RGb3JGcmFtZU93bmVyKGNvbnN0IEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIGJvb2wgY2xpcFRvTGF5ZXJDb250ZW50cykgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IGZsb2F0IHZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBm
bG9hdCB2aXNpYmxlQ29udGVudFNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVmlzaWJs
ZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3Jv
bGxQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllclBvc2l0
aW9uc0FmdGVyU2Nyb2xsaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBv
dmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFNjcm9sbFBvc2l0aW9uIG1pbmlt
dW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBTY3Jv
bGxQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJQb3NpdGlvbnNBZnRl
clNjcm9sbGluZygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNB
ZnRlclNjcm9sbGluZygpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9u
VXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1J1YmJl
ckJhbmRJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Ny
b2xsUG9zaXRpb24gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgU2Nyb2xsUG9zaXRpb24gbWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN1bWVWaXNpYmxlSW1hZ2VBbmltYXRpb25zSW5jbHVkaW5n
U3ViZnJhbWVzKCk7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRW1i
ZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogICAgIHZvaWQgcmVt
b3ZlRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGly
dHlSZWN0KSBvdmVycmlkZTsKIAogICAgIHN0cnVjdCBQYWludGluZ1N0YXRlIHsKICAgICAgICAg
UGFpbnRCZWhhdmlvciBwYWludEJlaGF2aW9yOwpAQCAtMzUzLDkgKzM1Myw5IEBAIHB1YmxpYzoK
ICAgICBlbnVtIENvb3JkaW5hdGVTcGFjZUZvclNuYXBzaG90IHsgRG9jdW1lbnRDb29yZGluYXRl
cywgVmlld0Nvb3JkaW5hdGVzIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWludENvbnRl
bnRzRm9yU25hcHNob3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW1hZ2VSZWN0
LCBTZWxlY3Rpb25JblNuYXBzaG90IHNob3VsZFBhaW50U2VsZWN0aW9uLCBDb29yZGluYXRlU3Bh
Y2VGb3JTbmFwc2hvdCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNv
bnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9s
bGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBDb2xvciBkb2N1bWVudEJhY2tncm91bmRDb2xvcigp
IGNvbnN0OwogCkBAIC00MTAsMTAgKzQxMCwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlld1RvUmVuZGVyZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAgICAvLyBPdmVycmlkZSBT
Y3JvbGxWaWV3IG1ldGhvZHMgdG8gZG8gcG9pbnQgY29udmVyc2lvbiB2aWEgcmVuZGVyZXJzLCBp
biBvcmRlciB0byB0YWtlIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LgotICAgIHZpcnR1YWwgSW50
UmVjdCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3Qg
SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydFRv
Q29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFp
bmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFBvaW50IGNv
bnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0ZyYW1lVmlld1Njcm9sbENvcm5lcihjb25zdCBS
ZW5kZXJTY3JvbGxiYXJQYXJ0JiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
Q29ybmVyID09ICZzY3JvbGxDb3JuZXI7IH0KIApAQCAtNDI1LDIxICs0MjUsMjEgQEAgcHVibGlj
OgogICAgIGVudW0gY2xhc3MgU2Nyb2xsYWJpbGl0eSB7IFNjcm9sbGFibGUsIFNjcm9sbGFibGVP
clJ1YmJlcmJhbmRhYmxlIH07CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc1Njcm9sbGFibGUo
U2Nyb2xsYWJpbGl0eSBkZWZpbml0aW9uT2ZTY3JvbGxhYmxlID0gU2Nyb2xsYWJpbGl0eTo6U2Ny
b2xsYWJsZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJs
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5k
YWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJh
bmRhYmxlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJs
ZUFuY2VzdG9yKCkgb3ZlcnJpZGU7CiAKICAgICBlbnVtIFNjcm9sbGJhck1vZGVzQ2FsY3VsYXRp
b25TdHJhdGVneSB7IFJ1bGVzRnJvbVdlYkNvbnRlbnRPbmx5LCBBbnlSdWxlIH07CiAgICAgdm9p
ZCBjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwg
U2Nyb2xsYmFyTW9kZSYgdk1vZGUsIFNjcm9sbGJhck1vZGVzQ2FsY3VsYXRpb25TdHJhdGVneSA9
IEFueVJ1bGUpOwogCi0gICAgdmlydHVhbCBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIHNob3VsZFNldEN1cnNvcigpIGNvbnN0OwogCiAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBvbmNlIHBsdWdpbiBsb2FkaW5nIGlzIGRlY291cGxlZCBm
cm9tIGxheW91dC4KICAgICB2b2lkIGZsdXNoQW55UGVuZGluZ1Bvc3RMYXlvdXRUYXNrcygpOwog
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChTY3JvbGxi
YXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTdXNw
ZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsYmFy
U3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRlKSBvdmVycmlkZTsK
IAogICAgIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Q7CiAgICAgCkBAIC00
NTcsNyArNDU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgY29udGFpbnNTY3JvbGxhYmxlQXJlYShT
Y3JvbGxhYmxlQXJlYSopIGNvbnN0OwogICAgIGNvbnN0IFNjcm9sbGFibGVBcmVhU2V0KiBzY3Jv
bGxhYmxlQXJlYXMoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhcy5nZXQoKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFdpZGdldCYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlQ2hpbGQoV2lkZ2V0Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGV4aXN0cyBmb3IgcG9ydHMgdGhhdCBuZWVkIHRvIGhhbmRsZSB3aGVlbCBldmVudHMgbWFudWFs
bHkuCiAgICAgLy8gT24gTWFjIFdlYktpdDEgdGhlIHVuZGVybHlpbmcgTlNTY3JvbGxWaWV3IGp1
c3QgZG9lcyB0aGUgc2Nyb2xsaW5nLCBidXQgb24gbW9zdCBvdGhlciBwbGF0Zm9ybXMKQEAgLTQ4
Myw5ICs0ODMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0aWFsVmlld3BvcnRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpIHsgbV9pbml0aWFsVmlld3BvcnRTaXplID0gc2l6ZTsgfQogI2Vu
ZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgdXBkYXRlc1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWlu
VGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdXBkYXRlc1Njcm9sbExheWVyUG9z
aXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGZvcmNlVXBkYXRl
U2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZygpIGNvbnN0IG92ZXJy
aWRlOwogCiAjaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIFdFQkNPUkVfRVhQT1JUIEdy
YXBoaWNzTGF5ZXIqIHNldFdhbnRzTGF5ZXJGb3JUb3BPdmVySGFuZ0FyZWEoYm9vbCkgY29uc3Q7
CkBAIC00OTUsMTggKzQ5NSwxOCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UmVjdCBmaXhlZFNjcm9s
bGFibGVBcmVhQm91bmRzSW5mbGF0ZWRGb3JTY3JvbGxpbmcoY29uc3QgTGF5b3V0UmVjdCYgdW5p
bmZsYXRlZEJvdW5kcykgY29uc3Q7CiAgICAgTGF5b3V0UG9pbnQgc2Nyb2xsUG9zaXRpb25SZXNw
ZWN0aW5nQ3VzdG9tRml4ZWRQb3NpdGlvbigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBpbnQgaGVh
ZGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oZWFkZXJIZWlnaHQ7IH0KKyAg
ICBpbnQgaGVhZGVySGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oZWFkZXJIZWln
aHQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEhlYWRlckhlaWdodChpbnQpOwotICAg
IHZpcnR1YWwgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZm9v
dGVySGVpZ2h0OyB9CisgICAgaW50IGZvb3RlckhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fZm9vdGVySGVpZ2h0OyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGb290ZXJI
ZWlnaHQoaW50KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgZmxvYXQgdG9wQ29udGVu
dEluc2V0KFRvcENvbnRlbnRJbnNldFR5cGUgPSBUb3BDb250ZW50SW5zZXRUeXBlOjpXZWJDb3Jl
Q29udGVudEluc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCB0
b3BDb250ZW50SW5zZXQoVG9wQ29udGVudEluc2V0VHlwZSA9IFRvcENvbnRlbnRJbnNldFR5cGU6
OldlYkNvcmVDb250ZW50SW5zZXQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgdG9wQ29udGVu
dEluc2V0RGlkQ2hhbmdlKGZsb2F0IG5ld1RvcENvbnRlbnRJbnNldCk7CiAKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKSBvdmVycmlkZTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNo
YW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5n
ZVJlYXNvbikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMo
TGF5b3V0TWlsZXN0b25lcyk7CiAgICAgdm9pZCBmaXJlUGFpbnRSZWxhdGVkTWlsZXN0b25lc0lm
TmVlZGVkKCk7CkBAIC01NDcsMjAgKzU0NywyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVT
Y3JvbGxpbmdDb29yZGluYXRvclNjcm9sbFNuYXBQcm9wZXJ0aWVzKCkgY29uc3Q7CiAjZW5kaWYK
IAotICAgIHZpcnR1YWwgZmxvYXQgYWRqdXN0U2Nyb2xsU3RlcEZvckZpeGVkQ29udGVudChmbG9h
dCBzdGVwLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkpIG92ZXJyaWRl
OworICAgIGZsb2F0IGFkanVzdFNjcm9sbFN0ZXBGb3JGaXhlZENvbnRlbnQoZmxvYXQgc3RlcCwg
U2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5KSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0KCk7CiAKICAgICB2b2lkIHNob3coKSBvdmVycmlk
ZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxDb250ZW50c0Zhc3RQYXRo
KGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGws
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBvdmVycmlkZTsK
KyAgICBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVs
dGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3Qp
IG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsQ29udGVudHNTbG93UGF0aChjb25zdCBJbnRSZWN0
JiB1cGRhdGVSZWN0KSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHJlcGFpbnRTbG93UmVwYWlu
dE9iamVjdHMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZlcnRpY2FsRG9jdW1lbnQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzVmVydGljYWxEb2N1bWVudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNGbGlwcGVkRG9jdW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBGcmFtZVZpZXcoRnJhbWUmKTsKQEAgLTU4MSw3ICs1ODEsNyBAQCBwcml2
YXRlOgogCiAgICAgYm9vbCBpblByZUxheW91dFN0eWxlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9sYXlvdXRQaGFzZSA9PSBJblByZUxheW91dFN0eWxlVXBkYXRlOyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNGcmFtZVZpZXcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc0ZyYW1lVmlldygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IGZyaWVuZCBjbGFzcyBSZW5kZXJXaWRnZXQ7CiAgICAgYm9vbCB1c2VTbG93UmVwYWludHMoYm9v
bCBjb25zaWRlck92ZXJsYXAgPSB0cnVlKSBjb25zdDsKQEAgLTU5Miw5ICs1OTIsOSBAQCBwcml2
YXRlOgogICAgIGJvb2wgc2hvdWxkVXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbGlu
ZygpIGNvbnN0OwogICAgIGJvb2wgZmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0ZyYW1lKGNv
bnN0IEZyYW1lJiByb290RnJhbWVGb3JGbHVzaCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RGVmZXJTY3JvbGxVcGRhdGVBZnRlckNvbnRlbnRTaXplQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzaG91bGREZWZlclNjcm9sbFVwZGF0ZUFmdGVyQ29udGVudFNpemVDaGFuZ2UoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlhUGxhdGZvcm1X
aWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBTY3JvbGxPZmZz
ZXQmIG5ld09mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxPZmZzZXRDaGFuZ2VkVmlh
UGxhdGZvcm1XaWRnZXRJbXBsKGNvbnN0IFNjcm9sbE9mZnNldCYgb2xkT2Zmc2V0LCBjb25zdCBT
Y3JvbGxPZmZzZXQmIG5ld09mZnNldCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFwcGx5T3ZlcmZs
b3dUb1ZpZXdwb3J0KGNvbnN0IFJlbmRlckVsZW1lbnQmLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwg
U2Nyb2xsYmFyTW9kZSYgdk1vZGUpOwogICAgIHZvaWQgYXBwbHlQYWdpbmF0aW9uVG9WaWV3cG9y
dCgpOwpAQCAtNjE0LDQxICs2MTQsNDEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVy
Rmx1c2hUaHJvdHRsaW5nKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGp1c3RUaWxlZEJh
Y2tpbmdDb3ZlcmFnZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFu
Z2xlKGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkZWRPclJl
bW92ZWRTY3JvbGxiYXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcGFpbnRDb250ZW50UmVjdGFu
Z2xlKGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZGVkT3JSZW1vdmVkU2Ny
b2xsYmFyKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZWdhdGVzU2Nyb2xsaW5n
RGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKIAogICAgIC8vIFNjcm9sbGFibGVBcmVhIGludGVyZmFjZQotICAgIHZp
cnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvKGNvbnN0IFNjcm9sbFBv
c2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpc2libGVTY3JvbGxlclRo
dW1iUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTY3JvbGxhYmxl
QXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIEludFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveChib29sKiA9IG51bGxwdHIpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxBbmltYXRvckVuYWJsZWQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xs
aW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBHcmFwaGljc0xheWVyKiBsYXllckZv
ckhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEdyYXBo
aWNzTGF5ZXIqIGxheWVyRm9yVmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUbyhjb25zdCBTY3JvbGxQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Ny
b2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVBcmVh
Qm91bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNj
cm9sbEFuaW1hdG9yRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzTGF5ZXIq
IGxheWVyRm9yU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NMYXllciog
bGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhp
Y3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlOworICAg
IEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAj
aWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5
ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NMYXllciog
bGF5ZXJGb3JPdmVyaGFuZ0FyZWFzKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZp
cnR1YWwgYm9vbCB1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCB1c2VzQXN5bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1
c2VzQXN5bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHVzZXNNb2NrU2Ny
b2xsQW5pbWF0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmlt
YXRvck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBPdmVy
cmlkZSBzY3JvbGxiYXIgbm90aWZpY2F0aW9ucyB0byB1cGRhdGUgdGhlIEFYT2JqZWN0IGNhY2hl
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFy
T3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xs
YmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZEFkZFNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJPcmllbnRhdGlvbikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsUmVtb3ZlU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhck9y
aWVudGF0aW9uKSBvdmVycmlkZTsKIAogICAgIEludFNpemUgc2l6ZUZvclJlc2l6ZUV2ZW50KCkg
Y29uc3Q7CiAgICAgdm9pZCBzZW5kUmVzaXplRXZlbnRJZk5lZWRlZCgpOwogCiAgICAgdm9pZCB1
cGRhdGVTY3JvbGxhYmxlQXJlYVNldCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVBhZ2VU
aGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlm
eVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZv
aWQgZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRlZCgpOwogICAgIHZvaWQgc3BlY3VsYXRp
dmVUaWxpbmdFbmFibGVUaW1lckZpcmVkKCk7CkBAIC02NjMsNyArNjYzLDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgaGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVNjcm9sbENvcm5lcigpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2Nyb2xs
Q29ybmVyKCkgb3ZlcnJpZGU7CiAKICAgICBGcmFtZVZpZXcqIHBhcmVudEZyYW1lVmlldygpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlQ2xpZW50LmgKaW5kZXggMTRiNjVh
N2VmYzM5NTczM2IyMTBlOTdlMzkxZjVkNzMzMDk3MGE1ZS4uNDY4MWFhMTZjYjcwNGUyODNkYjRk
ODJlZTUxZDcyMzgzZDdkZmJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uc29sZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGVDbGll
bnQuaApAQCAtNjUsMTMgKzY1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyUHJvZmlsZXMo
KTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRMZXZl
bChNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0ZSosIFJlZlB0cjxJbnNw
ZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNv
dW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcm9maWxlRW5k
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0
cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0aW1lU3RhbXAoSlNDOjpF
eGVjU3RhdGUqLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRl
OworICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3NhZ2VM
ZXZlbCwgSlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY291bnQoSlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8SW5z
cGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvZmlsZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQg
cHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRl
OworICAgIHZvaWQgdGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92
ZXJyaWRlOworICAgIHZvaWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYg
dGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6RXhlY1N0YXRlKiwgUmVm
UHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBQYWdlJiBtX3BhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VE
ZWJ1Z2dhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmgKaW5kZXgg
YmVmODViYzgwOWU5ZDRiMWY5ZjdiMWY1NTEwNjkzZmRhOTEwMjhmNy4uZmE5ODBmNmZhOGFkNDRm
ZmQ1ZjY2OTU1NjcxMmY5MTg5Y2E2Mjg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlRGVidWdnYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2Fi
bGUuaApAQCAtNDIsMTYgKzQyLDE2IEBAIHB1YmxpYzoKICAgICBQYWdlRGVidWdnYWJsZShQYWdl
Jik7CiAgICAgflBhZ2VEZWJ1Z2dhYmxlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6
UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBJbnNwZWN0b3I6OlJlbW90ZUNvbnRyb2xsYWJsZVRhcmdldDo6VHlwZTo6V2ViOyB9Cisg
ICAgSW5zcGVjdG9yOjpSZW1vdGVDb250cm9sbGFibGVUYXJnZXQ6OlR5cGUgdHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIEluc3BlY3Rvcjo6UmVtb3RlQ29udHJvbGxhYmxlVGFyZ2V0OjpU
eXBlOjpXZWI7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIG5hbWUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFN0cmluZyB1cmwoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBuYW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHVybCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaGFzTG9jYWxEZWJ1Z2dlcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljQ29u
bmVjdGlvbiA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdChJ
bnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaE1lc3NhZ2VGcm9tUmVtb3RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldEluZGljYXRpbmcoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwgYm9vbCBpc0F1dG9tYXRpY0Nv
bm5lY3Rpb24gPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0KEluc3BlY3Rv
cjo6RnJvbnRlbmRDaGFubmVsKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VG
cm9tUmVtb3RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJ
bmRpY2F0aW5nKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIG5hbWVPdmVycmlkZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZU92ZXJyaWRlOyB9CiAgICAgdm9pZCBzZXROYW1lT3ZlcnJpZGUo
Y29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVy
bGF5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xs
ZXIuaAppbmRleCAxOGRkY2ZjMGI1YzgyNjE2NTM2Zjk1NDgwYWYwYTkzOWJkZTkyMTUzLi41ZGEz
ZWVkMDI3NzQ5ZGY1YmMwMTk1MWJjNTk0YjNjMWExYjA2Zjg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmgKQEAgLTg2LDEwICs4NiwxMCBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlRm9yY2VTeW5jaHJvbm91c1Njcm9sbExheWVyUG9zaXRpb25VcGRh
dGVzKCk7CiAKICAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlw
UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTa2lwTGF5ZXJJbkR1bXAoY29u
c3QgR3JhcGhpY3NMYXllciosIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3Jh
cGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVj
dCYgY2xpcFJlY3QpIG92ZXJyaWRlOworICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTa2lwTGF5ZXJJbkR1bXAoY29uc3QgR3JhcGhp
Y3NMYXllciosIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xheWVyPiBtX2RvY3VtZW50T3ZlcmxheVJvb3RMYXll
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4gbV92aWV3T3ZlcmxheVJvb3RM
YXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAKaW5kZXggOTc2NmIyNjU1
YjlmYmYwMWUyMDg5YTRiZmZjYmYwYzQ5NTZhZWYxMS4uODZhMzUwNWFjNGQ0OTgwZmIwMDVlNzdi
NGRjMjFhODVkNDM1YmI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2Vy
aWFsaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAK
QEAgLTEwNCwxMCArMTA0LDEwIEBAIHByaXZhdGU6CiAgICAgUGFnZVNlcmlhbGl6ZXImIG1fc2Vy
aWFsaXplcjsKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKIAotICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRUZXh0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBUZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGFwcGVuZEVsZW1lbnQoU3RyaW5nQnVpbGRlciYsIGNvbnN0IEVsZW1lbnQmLCBO
YW1lc3BhY2VzKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEN1c3RvbUF0dHJp
YnV0ZXMoU3RyaW5nQnVpbGRlciYsIGNvbnN0IEVsZW1lbnQmLCBOYW1lc3BhY2VzKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVuZEVuZFRhZyhjb25zdCBFbGVtZW50Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBlbmRUZXh0KFN0cmluZ0J1aWxkZXImLCBjb25zdCBUZXh0Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcHBlbmRFbGVtZW50KFN0cmluZ0J1aWxkZXImLCBjb25zdCBFbGVt
ZW50JiwgTmFtZXNwYWNlcyopIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kQ3VzdG9tQXR0cmli
dXRlcyhTdHJpbmdCdWlsZGVyJiwgY29uc3QgRWxlbWVudCYsIE5hbWVzcGFjZXMqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGVuZEVuZFRhZyhjb25zdCBFbGVtZW50Jikgb3ZlcnJpZGU7CiB9Owog
CiBTZXJpYWxpemVyTWFya3VwQWNjdW11bGF0b3I6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRv
cihQYWdlU2VyaWFsaXplciYgc2VyaWFsaXplciwgRG9jdW1lbnQmIGRvY3VtZW50LCBWZWN0b3I8
Tm9kZSo+KiBub2RlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaAppbmRleCA1YmYyM2YxYzM0
NjE3MTNjZWZhYjdiMjc3ODY1Zjc1NWUyM2YzOTI2Li45M2Y0NDA2NDRiYjc2M2ZhN2RjOGQxN2U0
ODYyZTMyMzVlOWM3NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5oCkBAIC01Nyw4ICs1
Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBlcmZvcm1hbmNlPiBjcmVhdGUoRnJhbWUm
IGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFBlcmZvcm1hbmNlKGZyYW1lKSk7IH0KICAg
ICB+UGVyZm9ybWFuY2UoKTsKIAotICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQZXJmb3JtYW5jZUV2
ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEV2ZW50
VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUGVyZm9ybWFuY2VFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBQZXJmb3JtYW5jZU5hdmlnYXRpb24qIG5hdmlnYXRpb24oKSBjb25zdDsKICAgICBQ
ZXJmb3JtYW5jZVRpbWluZyogdGltaW5nKCkgY29uc3Q7CkBAIC05MSw4ICs5MSw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGVyZm9ybWFuY2UoRnJhbWUmKTsKIAotICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAgICAgYm9vbCBpc1Jlc291cmNlVGlt
aW5nQnVmZmVyRnVsbCgpOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8UGVyZm9ybWFuY2VOYXZpZ2F0
aW9uPiBtX25hdmlnYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3Bl
bmRhYmxlVGltZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCmlu
ZGV4IGEwMWRkNWUyOTY4ZmM0M2EwZDIyMTk0OTkyMThmMDJjMDg4NTdjYTMuLmE2NTE1OGYyNGIw
MzZjZGI5YmRiOTFhNjYzODkwYmE0ODgzMGY2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVu
ZGFibGVUaW1lci5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbCgp
OyAvLyBFcXVpdmFsZW50IHRvIFRpbWVyQmFzZTo6c3RvcCgpLCB3aG9zZSBuYW1lIGNvbmZsaWN0
cyB3aXRoIEFjdGl2ZURPTU9iamVjdDo6c3RvcCgpLgogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCBmaXJlZCgpIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGZpcmVkKCkgb3ZlcnJpZGUgPSAw
OwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxF
dmVudERlbHRhRmlsdGVyLmgKaW5kZXggNWYyYTRiMjFhNWM3MzA4N2Y1ODNiYWFkMmEwYzZjNjRl
NmMwOGYyZi4uZGRkMDYwYzIyZDg3NjBlYzkyMTFiNDI2ZjkzZDJkMzYxNzI0MThlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oCkBAIC01OSw5ICs1OSw5
IEBAIGVudW0gY2xhc3MgRG9taW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uIHsKIGNsYXNzIEJh
c2ljV2hlZWxFdmVudERlbHRhRmlsdGVyIGZpbmFsIDogcHVibGljIFdoZWVsRXZlbnREZWx0YUZp
bHRlciB7CiBwdWJsaWM6CiAgICAgQmFzaWNXaGVlbEV2ZW50RGVsdGFGaWx0ZXIoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbURlbHRhKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBiZWdpbkZpbHRlcmluZ0RlbHRhcygpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBlbmRGaWx0ZXJpbmdEZWx0YXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUZyb21EZWx0YShjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luRmls
dGVyaW5nRGVsdGFzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRGaWx0ZXJpbmdEZWx0YXMoKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBEb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb24g
ZG9taW5hbnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaAppbmRleCBhOWEzMGYxZTI0
ZGFmYTk2YTI0MGIwOTBmODE3ZWE5NjUwNDg1MzY0Li5hZjIyZDJmYTExYWRjNmYxMTg4ZTk4NjM0
ODYyN2E5MzU2ZmI2MjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9JbXBsaWNpdEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0ltcGxpY2l0QW5pbWF0aW9uLmgKQEAgLTQ5LDIxICs0OSwyMSBAQCBwdWJsaWM6CiAgICAgQ1NT
UHJvcGVydHlJRCB0cmFuc2l0aW9uUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zaXRp
b25Qcm9wZXJ0eTsgfQogICAgIENTU1Byb3BlcnR5SUQgYW5pbWF0aW5nUHJvcGVydHkoKSBjb25z
dCB7IHJldHVybiBtX2FuaW1hdGluZ1Byb3BlcnR5OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25B
bmltYXRpb25FbmQoZG91YmxlIGVsYXBzZWRUaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgc3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGVuZEFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgb25BbmltYXRp
b25FbmQoZG91YmxlIGVsYXBzZWRUaW1lKSBvdmVycmlkZTsKKyAgICBib29sIHN0YXJ0QW5pbWF0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhdXNlQW5pbWF0aW9u
KGRvdWJsZSB0aW1lT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZEFuaW1hdGlvbigpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwg
UmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0
eWxlKiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEFuaW1hdGVkU3R5bGUoUmVmUHRyPFJlbmRlclN0
eWxlPiYgYW5pbWF0ZWRTdHlsZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBhbmltYXRlKENvbXBvc2l0
ZUFuaW1hdGlvbiosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0
eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1h
dGVkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShSZWZQdHI8UmVu
ZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXQoUmVuZGVyU3R5bGUqIHRvKTsKIAogICAgIGJvb2wgY29tcHV0ZUV4dGVudE9mVHJhbnNmb3Jt
QW5pbWF0aW9uKExheW91dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0T3Zl
cnJpZGRlbihib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgb3ZlcnJpZGRlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fb3ZlcnJpZGRlbjsgfQorICAgIGJvb2wgb3ZlcnJpZGRlbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3ZlcnJpZGRlbjsgfQogCi0gICAgdmlydHVhbCBib29sIGFm
ZmVjdHNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGFm
ZmVjdHNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wg
aGFzU3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2Zyb21TdHlsZSAmJiBtX3RvU3R5bGU7IH0KIApA
QCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJsZW5kUHJvcGVydHlWYWx1ZUlu
U3R5bGUoQ1NTUHJvcGVydHlJRCwgUmVuZGVyU3R5bGUqKTsKIAotICAgIHZpcnR1YWwgZG91Ymxl
IHRpbWVUb05leHRTZXJ2aWNlKCkgb3ZlcnJpZGU7CisgICAgZG91YmxlIHRpbWVUb05leHRTZXJ2
aWNlKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgYm9vbCBhY3RpdmUoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZTsgfQogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wgYikgeyBtX2FjdGl2ZSA9IGI7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5o
CmluZGV4IGY3MDBlYWYzODRiMmRkMjI3N2Y5Mzc1MjJjMjUwZmNjZjVkNjA5NmIuLjg0OTc3ZDZj
ZjBhZWI0YTUxNzI3NmI2MTIzM2QxYjU5M2U1Zjc0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaApAQCAtNDUsOCArNDUsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEtleWZyYW1lQW5pbWF0aW9uKGFu
aW1hdGlvbiwgcmVuZGVyZXIsIGluZGV4LCBjb21wb3NpdGVBbmltYXRpb24sIHVuYW5pbWF0ZWRT
dHlsZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBhbmltYXRlKENvbXBvc2l0ZUFuaW1h
dGlvbiosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBS
ZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5
bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0cjxS
ZW5kZXJTdHlsZT4mKSBvdmVycmlkZTsKKyAgICBib29sIGFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0
aW9uKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJl
bmRlclN0eWxlKiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHls
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0cjxSZW5kZXJTdHls
ZT4mKSBvdmVycmlkZTsKIAogICAgIGJvb2wgY29tcHV0ZUV4dGVudE9mVHJhbnNmb3JtQW5pbWF0
aW9uKExheW91dFJlY3QmKSBjb25zdCBvdmVycmlkZTsKIApAQCAtNjEsMjMgKzYxLDIzIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFVuYW5pbWF0ZWRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZSkgeyBtX3VuYW5pbWF0ZWRTdHlsZSA9IHN0eWxlOyB9CiAgICAgUmVuZGVyU3R5bGUq
IHVuYW5pbWF0ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5hbmltYXRlZFN0eWxlLmdldCgp
OyB9CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSB0aW1lVG9OZXh0U2VydmljZSgpIG92ZXJyaWRlOwor
ICAgIGRvdWJsZSB0aW1lVG9OZXh0U2VydmljZSgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB2b2lkIG9uQW5pbWF0aW9uU3RhcnQoZG91YmxlIGVsYXBzZWRUaW1lKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgb25BbmltYXRpb25JdGVyYXRpb24oZG91YmxlIGVsYXBz
ZWRUaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgb25BbmltYXRpb25FbmQoZG91Ymxl
IGVsYXBzZWRUaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3RhcnRBbmltYXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1h
dGlvbihkb3VibGUgdGltZU9mZnNldCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuZEFu
aW1hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgb25BbmltYXRpb25TdGFydChkb3VibGUgZWxh
cHNlZFRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgb25BbmltYXRpb25JdGVyYXRpb24oZG91Ymxl
IGVsYXBzZWRUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIG9uQW5pbWF0aW9uRW5kKGRvdWJsZSBl
bGFwc2VkVGltZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdGFydEFuaW1hdGlvbihkb3VibGUgdGlt
ZU9mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9m
ZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRBbmltYXRpb24oKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBvdmVycmlkZUFuaW1hdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzdW1lT3ZlcnJpZGRlbkFuaW1hdGlvbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIG92
ZXJyaWRlQW5pbWF0aW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzdW1lT3ZlcnJpZGRlbkFu
aW1hdGlvbnMoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgc2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVu
ZXIoRG9jdW1lbnQ6Okxpc3RlbmVyVHlwZSBpbkxpc3RlbmVyVHlwZSkgY29uc3Q7CiAgICAgYm9v
bCBzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiwgZG91YmxlIGVsYXBzZWRU
aW1lKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBhZmZlY3RzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGNvbXB1dGVFeHRlbnRPZkFuaW1hdGlvbkZvck1h
dHJpeEFuaW1hdGlvbihjb25zdCBGbG9hdFJlY3QmIHJlbmRlcmVyQm94LCBMYXlvdXRSZWN0Jikg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIuaAppbmRleCA3OTZhMmEyZjY0YzI5NTRlOWQ0M2ZkMThiMDljODM2NGQ1ZDE5
MTYyLi4xOGY5Y2IyODUzZGJlMGIzZTJhZTI3ZTIzMWU0ZGY4N2ZmNmIyNzc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5oCkBA
IC04Myw5ICs4Myw5IEBAIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IEhpZ2hsaWdodChTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyJiwgVHlwZSwgUmV0YWluUHRyPERESGlnaGxpZ2h0UmVmPiwg
UGFzc1JlZlB0cjxSYW5nZT4pOwogCiAgICAgICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKLSAg
ICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBH
cmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhh
c2UsIGNvbnN0IEZsb2F0UmVjdCYgaW5DbGlwKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBm
bG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICB2b2lkIG5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4
dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3QmIGluQ2xpcCkg
b3ZlcnJpZGU7CisgICAgICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICAgICAgdm9pZCBkaWRGaW5pc2hGYWRlT3V0QW5pbWF0aW9uKCk7CiAKQEAgLTk3
LDEyICs5NywxMiBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICAvLyBQYWdlT3ZlcmxheTo6Q2xp
ZW50Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9QYWdlKFBhZ2VPdmVybGF5Jiwg
UGFnZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9QYWdlKFBhZ2VPdmVy
bGF5JiwgUGFnZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChQYWdlT3Zl
cmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2Nyb2xsRnJh
bWUoUGFnZU92ZXJsYXkmLCBGcmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZU92ZXJsYXlE
ZXN0cm95ZWQoUGFnZU92ZXJsYXkmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxNb3ZlVG9QYWdl
KFBhZ2VPdmVybGF5JiwgUGFnZSopIG92ZXJyaWRlOworICAgIHZvaWQgZGlkTW92ZVRvUGFnZShQ
YWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlk
ZTsKKyAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNjcm9sbEZyYW1lKFBhZ2VPdmVybGF5Jiwg
RnJhbWUmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlT3ZlcmxheUlmTmVlZGVkKCk7CiAg
ICAgdm9pZCBoYW5kbGVDbGljayhjb25zdCBJbnRQb2ludCYsIEhpZ2hsaWdodCYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvV2hlZWxFdmVudERlbHRhRmlsdGVyTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9XaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMuaAppbmRl
eCBhMDllZGE3ZjU2NWY2ZjZlMzI1OWRjMmI5OGQ4NDYyZTk0MThiYTg4Li5jYWU2YjMyMjQ3YmU4
OWQ3YmZlZDY5NDE3YmM0OWRmNjhiMDMwMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9XaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL21hYy9XaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMuaApAQCAtMzksOSArMzksOSBAQCBjbGFz
cyBXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMgZmluYWwgOiBwdWJsaWMgV2hlZWxFdmVudERlbHRh
RmlsdGVyIHsKIHB1YmxpYzoKICAgICBXaGVlbEV2ZW50RGVsdGFGaWx0ZXJNYWMoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRGVsdGEoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luRmlsdGVyaW5nRGVsdGFzKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGVuZEZpbHRlcmluZ0RlbHRhcygpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlRnJvbURlbHRhKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5G
aWx0ZXJpbmdEZWx0YXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZEZpbHRlcmluZ0RlbHRhcygp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJldGFpblB0cjxfTlNTY3JvbGxpbmdQcmVkb21p
bmFudEF4aXNGaWx0ZXI+IG1fcHJlZG9taW5hbnRBeGlzRmlsdGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5o
CmluZGV4IGRiOTMzZDI4ZmFkMjZkMDhiOWY1ZDJhMWUxMjUyMThjZWJiNTBmOGMuLmFiYjRhNTRh
YWNiMzA0ZGY5ZDc4OGRlMWExYjNlMjg3M2QxMWUxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAg
LTc3LDQzICs3Nyw0MyBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0
aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBi
b29sIHByb2dyYW1tYXRpY1Njcm9sbCwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVB
c1RleHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
d2lsbENvbW1pdFRyZWUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB3aWxsQ29tbWl0VHJlZSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBub25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbkRpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9ub25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbkRpcnR5OyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1Zpc2li
bGVTbG93UmVwYWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKGNvbnN0IEZyYW1lVmlldyYp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0ZpeGVk
UG9zaXRpb25MYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBoYXNWaXNpYmxlU2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhjb25zdCBG
cmFtZVZpZXcmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGZyYW1lVmlld0xheW91dFVwZGF0ZWQoRnJhbWVWaWV3Jikg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGZyYW1lVmlld1Jvb3RM
YXllckRpZENoYW5nZShGcmFtZVZpZXcmKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgZnJhbWVWaWV3Tm9uRmFzdFNjcm9sbGFibGVSZWdpb25DaGFuZ2VkKEZyYW1l
VmlldyYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZnJhbWVWaWV3TGF5b3V0
VXBkYXRlZChGcmFtZVZpZXcmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZy
YW1lVmlld1Jvb3RMYXllckRpZENoYW5nZShGcmFtZVZpZXcmKSBvdmVycmlkZTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZyYW1lVmlld05vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZChG
cmFtZVZpZXcmKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBy
ZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3JiwgY29uc3QgSW50UG9pbnQmKSBv
dmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcmLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xs
aW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBw
YXJlbnRJRCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRldGFj
aEZyb21TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZUlEKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgY2xlYXJTdGF0ZVRyZWUoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5
cGUsIFNjcm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCBwYXJlbnRJRCkg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZXRhY2hGcm9tU3RhdGVUcmVlKFNj
cm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclN0
YXRlVHJlZSgpIG92ZXJyaWRlOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZp
ZXdwb3J0Q29uc3RyYWludHMmLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB1cGRhdGVWaWV3cG9ydENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2Rl
SUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWludHMmLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7
CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHVwZGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZShTY3JvbGxpbmdOb2RlSUQsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFw
aGljc0xheWVyKiBzY3JvbGxlZENvbnRlbnRzTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJT
Y3JvbGxpbmdMYXllciwgR3JhcGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9s
bGluZ0dlb21ldHJ5KiA9IG51bGxwdHIpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB1cGRhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlELCBH
cmFwaGljc0xheWVyKiBzY3JvbGxMYXllciwgR3JhcGhpY3NMYXllciogc2Nyb2xsZWRDb250ZW50
c0xheWVyLCBjb25zdCBTY3JvbGxpbmdHZW9tZXRyeSogPSBudWxscHRyKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHVwZGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdO
b2RlSUQsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxl
ZENvbnRlbnRzTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIGNvdW50ZXJTY3JvbGxpbmdMYXllciwgR3Jh
cGhpY3NMYXllciogaW5zZXRDbGlwTGF5ZXIsIGNvbnN0IFNjcm9sbGluZ0dlb21ldHJ5KiA9IG51
bGxwdHIpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCwgR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIs
IEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGVkQ29udGVudHNMYXllciwgY29uc3QgU2Nyb2xsaW5nR2Vv
bWV0cnkqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzUnVi
YmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvcikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9yKSBvdmVycmlk
ZTsKIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgYm9vbCBpc1Njcm9sbFNuYXBJ
blByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBzeW5jQ2hpbGRQb3NpdGlvbnMoY29uc3QgTGF5b3V0UmVjdCYgdmlld3Bv
cnRSZWN0KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2Nyb2xs
YWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYsIFNjcm9sbGJh
ck9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN5bmNDaGls
ZFBvc2l0aW9ucyhjb25zdCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxiYXJMYXllckRpZENoYW5n
ZShTY3JvbGxhYmxlQXJlYSYsIFNjcm9sbGJhck9yaWVudGF0aW9uKSBvdmVycmlkZTsKIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNv
bnMoU3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25zKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyhTeW5jaHJvbm91c1Njcm9s
bGluZ1JlYXNvbnMpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlVHJlZVN0
YXRlQ29tbWl0KCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAppbmRleCAyM2IwNWI4YWJmODcxNTY3N2ZkOWI5YmI5
NmQ1NmI5ZTlhZGZlNWUyLi41MzhhYjk4YTdiNTZlMWU0MzI3OGNiNWE3OTViMzZlODE3ZTAxNTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25z
dHJhaW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
bnN0cmFpbnRzLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiBvdGhlcikgY29uc3Qg
eyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIENv
bnN0cmFpbnRUeXBlIGNvbnN0cmFpbnRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRml4
ZWRQb3NpdGlvbkNvbnN0cmFpbnQ7IH07CisgICAgQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGaXhlZFBvc2l0aW9uQ29uc3RyYWludDsgfTsK
IAogICAgIEZsb2F0UmVjdCBtX3ZpZXdwb3J0UmVjdEF0TGFzdExheW91dDsKICAgICBGbG9hdFBv
aW50IG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsKQEAgLTE4Myw3ICsxODMsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50cyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFN0aWNreVBvc2l0aW9uQ29uc3RyYWludDsgfTsKKyAgICBDb25z
dHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0aWNr
eVBvc2l0aW9uQ29uc3RyYWludDsgfTsKIAogICAgIGZsb2F0IG1fbGVmdE9mZnNldDsKICAgICBm
bG9hdCBtX3JpZ2h0T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1N0YXRlRml4ZWROb2RlLmgKaW5kZXggOThjYjBjYTEwNWJjOWJhNTNm
OTdkMjliYjZiZDZhNDE1MTIxMWNmOS4uODc3ZTBhMjM4NTdmZGVkNTQ4ZTJiOGRhMzUxYzVhN2Uz
ODIzNjgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVGaXhlZE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZUZpeGVkTm9kZS5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIFNjcm9sbGlu
Z1N0YXRlRml4ZWROb2RlIGZpbmFsIDogcHVibGljIFNjcm9sbGluZ1N0YXRlTm9kZSB7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZT4gY3JlYXRlKFNjcm9s
bGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKLSAgICB2aXJ0dWFsIFJlZjxTY3Jv
bGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYpIG92ZXJyaWRlOworICAg
IFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGluZ1N0YXRlVHJlZSYpIG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUoKTsKIApAQCAtNTYs
OSArNTYsOSBAQCBwcml2YXRlOgogICAgIFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlKFNjcm9sbGlu
Z1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAgICAgU2Nyb2xsaW5nU3RhdGVGaXhlZE5v
ZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGUmLCBTY3JvbGxpbmdTdGF0ZVRyZWUmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25z
dCBMYXlvdXRSZWN0JiB2aWV3cG9ydFJlY3QpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY0xheWVy
UG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgdmlld3BvcnRSZWN0KSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwg
aW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGaXhlZFBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cyBtX2NvbnN0cmFpbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZUZyYW1lU2Ny
b2xsaW5nTm9kZS5oCmluZGV4IGQ1N2QxZmQ5ZjcwYTg2YzkyYTkwYWUzMWM3NWE3OTUyZmNkNjlj
YWEuLjQ1OWI2N2M0ZWIxZjA4MDE2NDBkZmRkMWE2YTY4NWE1ZDExYzg3ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxp
bmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVGcmFtZVNjcm9sbGluZ05vZGUuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSBmaW5hbCA6IHB1YmxpYyBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZAogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU+IGNyZWF0ZShTY3JvbGxpbmdTdGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwog
Ci0gICAgdmlydHVhbCBSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBjbG9uZShTY3JvbGxpbmdTdGF0
ZVRyZWUmKSBvdmVycmlkZTsKKyAgICBSZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBjbG9uZShTY3Jv
bGxpbmdTdGF0ZVRyZWUmKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgflNjcm9sbGluZ1N0YXRl
RnJhbWVTY3JvbGxpbmdOb2RlKCk7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB2b2lkIHNldFNjcm9sbGJhclBhaW50ZXJzRnJvbVNjcm9sbGJhcnMoU2Nyb2xsYmFy
KiB2ZXJ0aWNhbFNjcm9sbGJhciwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50
IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nU3RhdGVG
cmFtZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oCmluZGV4IDczYWFhMzk1MmM4ZTdl
MTIwMmQ3YzgyZDk3NDc2YzczYWI0OGVjNzQuLjMxYzAxYjAyMmI4M2NiZWM3NjgyYjU0ZmQ3MzYz
YWFhMDYxZjFiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaApAQCAt
MzYsNyArMzYsNyBAQCBjbGFzcyBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSA6
IHB1YmxpYyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+IGNyZWF0ZShTY3JvbGxp
bmdTdGF0ZVRyZWUmLCBTY3JvbGxpbmdOb2RlSUQpOwogCi0gICAgdmlydHVhbCBSZWY8U2Nyb2xs
aW5nU3RhdGVOb2RlPiBjbG9uZShTY3JvbGxpbmdTdGF0ZVRyZWUmKSBvdmVycmlkZTsKKyAgICBS
ZWY8U2Nyb2xsaW5nU3RhdGVOb2RlPiBjbG9uZShTY3JvbGxpbmdTdGF0ZVRyZWUmKSBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgflNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKCk7
CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIGNvbnN0IExheWVyUmVwcmVzZW50YXRp
b24mIHNjcm9sbGVkQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsZWRDb250
ZW50c0xheWVyOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JvbGxlZENvbnRlbnRz
TGF5ZXIoY29uc3QgTGF5ZXJSZXByZXNlbnRhdGlvbiYpOwogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGlu
Z05vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZUlEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmgKaW5kZXggMDkxZWZkMWZhZmFjMjk4NjUzNGZjYTZkOWM4ZTExNjQ1ODAyZWU2NC4u
YWNhZjAyMDI5ODhkZGY2M2U0YWMzMjZhM2RhMjZiMTMxZGUwMDA1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIGJvb2wgZXhwZWN0c1doZWVs
RXZlbnRUZXN0VHJpZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0c1doZWVsRXZlbnRUZXN0
VHJpZ2dlcjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RXhwZWN0c1doZWVsRXZlbnRU
ZXN0VHJpZ2dlcihib29sKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkdW1wUHJvcGVydGllcyhUZXh0
U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wUHJvcGVy
dGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiBwcm90
ZWN0ZWQ6CiAgICAgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ1N0YXRlVHJl
ZSYsIFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTdGlja3lOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaApp
bmRleCBjOWU3OTM1YTQ3OGUwNjY2OTJjMmRiZGFiY2ViMDQ5ZDYyNDgzNWFjLi4wODMzNzU5OTQw
OTlhYmNkNDE5NTE2NGVkNDIxMjQ1MGE0NDU5NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUgZmluYWwgOiBwdWJsaWMg
U2Nyb2xsaW5nU3RhdGVOb2RlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFNjcm9sbGluZ1N0
YXRlU3RpY2t5Tm9kZT4gY3JlYXRlKFNjcm9sbGluZ1N0YXRlVHJlZSYsIFNjcm9sbGluZ05vZGVJ
RCk7CiAKLSAgICB2aXJ0dWFsIFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25lKFNjcm9sbGlu
Z1N0YXRlVHJlZSYpIG92ZXJyaWRlOworICAgIFJlZjxTY3JvbGxpbmdTdGF0ZU5vZGU+IGNsb25l
KFNjcm9sbGluZ1N0YXRlVHJlZSYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB+U2Nyb2xsaW5n
U3RhdGVTdGlja3lOb2RlKCk7CiAKQEAgLTU2LDkgKzU2LDkgQEAgcHJpdmF0ZToKICAgICBTY3Jv
bGxpbmdTdGF0ZVN0aWNreU5vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlJiwgU2Nyb2xsaW5nTm9kZUlE
KTsKICAgICBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUoY29uc3QgU2Nyb2xsaW5nU3RhdGVTdGlj
a3lOb2RlJiwgU2Nyb2xsaW5nU3RhdGVUcmVlJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3luY0xh
eWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgdmlld3BvcnRSZWN0
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN5bmNMYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGNv
bnN0IExheW91dFJlY3QmIHZpZXdwb3J0UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIG1fY29u
c3RyYWludHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCmluZGV4IDkyYjAxZjAx
N2UyNTgzYjMwNjQ1MmY1MDg3NTFiMjQxMTgyNGU5YTcuLjVjMzU1OTlmYzQ3M2VmODRmYjk4ZDBi
N2IyOTY4Mjc0MzQwZjVjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmgKQEAgLTQw
LDE3ICs0MCwxNyBAQCBjbGFzcyBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlIDogcHVi
bGljIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBv
dmVycmlkZTsKICAgICAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIHdo
ZW4gd2Ugc3VwcG9ydCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZXMgYXMgY2hpbGRyZW4uCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Ny
b2xsaW5nVHJlZU5vZGUmIC8qY2hhbmdlZE5vZGUqLywgY29uc3QgRmxvYXRSZWN0JiAvKmZpeGVk
UG9zaXRpb25SZWN0Ki8sIGNvbnN0IEZsb2F0U2l6ZSYgLypjdW11bGF0aXZlRGVsdGEqLykgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiAvKmNoYW5nZWROb2RlKi8sIGNvbnN0IEZsb2F0UmVjdCYgLypm
aXhlZFBvc2l0aW9uUmVjdCovLCBjb25zdCBGbG9hdFNpemUmIC8qY3VtdWxhdGl2ZURlbHRhKi8p
IG92ZXJyaWRlIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbFBvc2l0aW9uV2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3Qg
RmxvYXRQb2ludCYpIG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgPSAwOworICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Nyb2xs
UG9zaXRpb25XaXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGUgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3Bv
cnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxl
KSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdh
dGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0
ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgZG91YmxlIHNjYWxlKSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCB1cGRhdGVMYXllcnNB
ZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGUgeyB9CiAKICAg
ICBTeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFzb25z
KCkgY29uc3QgeyByZXR1cm4gbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnM7IH0KICAgICBi
b29sIHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkgY29uc3Qg
eyByZXR1cm4gbV9zeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnM7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oCmluZGV4IDA3Yzg5NmM4MDM5MDZlZWExOGNmMWY2YjdkNjc0YzcxODVhMzk3NWEuLjMxYzk3
MWMyZDQyNjdkZmFhZTI3NjhmNmUxNjRhYmI5MDlmOTk1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aApAQCAtNDIsMTAgKzQyLDEwIEBAIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIDog
cHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZSgpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRl
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJl
ZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBj
b25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgPSAw
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5oCmluZGV4IDZiYzgwMWI3MGU1NjA0OTQwMDk2N2RiMWZm
MzhmY2QyODNmMjg1ZjAuLjE5ZjE5ODg5Y2Q3Yzk3ZTNjN2EwYzZiMzA5ODM3YjAwY2RiNDI3OGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xs
aW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5oCkBAIC00NSwyMSArNDUsMjEgQEAgY2xhc3MgVGhyZWFkZWRTY3JvbGxpbmdU
cmVlIDogcHVibGljIFNjcm9sbGluZ1RyZWUgewogcHVibGljOgogICAgIHZpcnR1YWwgflRocmVh
ZGVkU2Nyb2xsaW5nVHJlZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdE5ld1RyZWVTdGF0
ZShzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb21taXROZXdUcmVlU3RhdGUoc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1N0YXRlVHJlZT4p
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FuIGJlIGNhbGxl
ZCBmcm9tIGFueSB0aHJlYWQuIFdpbGwgdHJ5IHRvIGhhbmRsZSB0aGUgd2hlZWwgZXZlbnQgb24g
dGhlIHNjcm9sbGluZyB0aHJlYWQuCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSB3aGVlbCBl
dmVudCBjYW4gYmUgaGFuZGxlZCBvbiB0aGUgc2Nyb2xsaW5nIHRocmVhZCBhbmQgZmFsc2UgaWYg
dGhlCiAgICAgLy8gZXZlbnQgbXVzdCBiZSBzZW50IGFnYWluIHRvIHRoZSBXZWJDb3JlIGV2ZW50
IGhhbmRsZXIuCi0gICAgdmlydHVhbCBFdmVudFJlc3VsdCB0cnlUb0hhbmRsZVdoZWVsRXZlbnQo
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgRXZlbnRSZXN1bHQgdHJ5
VG9IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFs
aWRhdGUoKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFRocmVhZGVkU2Ny
b2xsaW5nVHJlZShBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yKik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgU2V0T3JTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbiA9
IFN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbGlu
Z1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Ny
b2xsUG9zaXRpb24sIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24gPSBTeW5jU2Nyb2xs
aW5nTGF5ZXJQb3NpdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5k
aWNlc0RpZENoYW5nZShTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2ln
bmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBoYW5k
bGVXaGVlbEV2ZW50UGhhc2UoUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2UpIG92ZXJyaWRlOwpAQCAt
NjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGJvb2wgaXNUaHJlYWRlZFNjcm9sbGluZ1RyZWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc1RocmVhZGVkU2Nyb2xsaW5nVHJlZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFJlZlB0cjxBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
PiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5o
CmluZGV4IGExMjAwNzI1ZTM5YjYyYzVjYTIyMzJiZDc5MDI0ZDdhNzYxYTU3NTUuLmU0MmU3N2Q3
Y2ViOTYzYzRmYzNmZTU4NGI4NjNhMDgyMzllZDI5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuaApAQCAtMzksMTggKzM5LDE4IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSopOwogICAgIHZpcnR1YWwgflNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcygpOwogCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgU2Nyb2xsaW5nTm9kZUlEIGF0
dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3Tm9k
ZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2hGcm9tU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNsZWFyU3RhdGVUcmVlKCkgb3ZlcnJpZGU7CisgICAgU2Nyb2xsaW5nTm9kZUlE
IGF0dGFjaFRvU3RhdGVUcmVlKFNjcm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3
Tm9kZUlELCBTY3JvbGxpbmdOb2RlSUQgcGFyZW50SUQpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0
YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQpIG92ZXJyaWRlOworICAgIHZvaWQgY2xl
YXJTdGF0ZVRyZWUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9y
dENvbnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWlu
dHMmLCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVWaWV3cG9ydENv
bnN0cmFpbmVkTm9kZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IFZpZXdwb3J0Q29uc3RyYWludHMm
LCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJs
ZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNj
cm9sbGFibGVBcmVhJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKEZyYW1lVmlldyYsIGNvbnN0IEludFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgYm9vbCByZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUoRnJhbWVWaWV3JiwgY29u
c3QgSW50UG9pbnQmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U2Nyb2xsaW5nU3RhdGVUcmVlPiBtX3Njcm9sbGluZ1N0YXRlVHJlZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdDb29yZGluYXRvcklPUy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
SU9TLmgKaW5kZXggMGY5MTBiNjY3YmI2N2FkMzFhZTViMzEwNDM0MWQ3M2YyNzRkYzk2Yy4uZDRi
NGI4Mzc5NWZiNDViZjQyZDY4ODA4OTkyMjE0MGUzNmExNzY5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9ySU9TLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
SU9TLmgKQEAgLTQzLDE1ICs0MywxNSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JJT1MoUGFnZSopOwogICAgIHZpcnR1YWwgflNjcm9sbGluZ0Nvb3JkaW5hdG9y
SU9TKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1p
dFRyZWVTdGF0ZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRUcmVlU3RhdGVJ
Zk5lZWRlZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSGFuZGxlIHRoZSB3aGVlbCBldmVudCBvbiB0
aGUgc2Nyb2xsaW5nIHRocmVhZC4gUmV0dXJucyB3aGV0aGVyIHRoZSBldmVudCB3YXMgaGFuZGxl
ZCBvciBub3QuCi0gICAgdmlydHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3Jiwg
Y29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIGhhbmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2
ZW50Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVk
dWxlVHJlZVN0YXRlQ29tbWl0KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbW1pdFRyZWVTdGF0
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MuaAppbmRleCA0
MjZjYmM5NDg0NmE4ZmI5NDYxNmE1MThlYzAxYjJjNzNmM2YzODM4Li5hNzc2YjMyNTVhNzA1OTI0
N2U5NmMyZDI4OWMzZTAzNWVkYTNlYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlSU9TLmgKQEAgLTQ0LDIwICs0NCwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUyhTY3JvbGxpbmdUcmVlJiwgU2Nyb2xsaW5nTm9k
ZUlEKTsKIAogICAgIC8vIFNjcm9sbGluZ1RyZWVOb2RlIG1lbWJlciBmdW5jdGlvbnMuCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9k
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0
IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9k
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgRmxvYXRQb2ludCBzY3JvbGxQ
b3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3Np
dGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVy
cmlkZTsKKyAgICBGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbldpdGhvdXRDb250ZW50RWRnZUNvbnN0cmFpbnRzKGNv
bnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXll
cnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3Qs
IGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0Fm
dGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgZG91YmxlIHNjYWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxheWVy
c0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2lu
dCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBGbG9hdFBvaW50IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtYXhpbXVtU2Ny
b2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50IG1pbmltdW1TY3Jv
bGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0UG9pbnQgbWF4aW11bVNjcm9s
bFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVD
aGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlSU9TLmgKaW5kZXggMTYx
ZjA1NzEyY2VmMjljMjQxOTNmNTQxMGVmOTFjMDBlOWJlM2QxYy4uOWY3MzNmZjQ2NjNmNTZiZGIx
NWIxYWQ4MmY3ZWRkY2UxNGYxYTM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUlPUy5oCkBAIC00MiwyNSArNDIsMjUgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZUlPUz4gY3JlYXRlKEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IqKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlSU9TKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgY29tbWl0TmV3VHJlZVN0YXRlKHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxp
bmdTdGF0ZVRyZWU+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdE5ld1RyZWVTdGF0ZShzdGQ6
OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPikgb3ZlcnJpZGU7CiAKICAgICAvLyBObyB3
aGVlbCBldmVudHMgb24gaU9TCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBFdmVudFJl
c3VsdCB0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGUgeyByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7IH0KKyAgICB2b2lkIGhhbmRsZVdoZWVs
RXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgeyB9CisgICAgRXZlbnRS
ZXN1bHQgdHJ5VG9IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92
ZXJyaWRlIHsgcmV0dXJuIERpZE5vdEhhbmRsZUV2ZW50OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVJT1MoQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvciopOwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGluZ1RyZWVJT1MoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1Njcm9sbGluZ1RyZWVJT1Mo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8U2Nyb2xsaW5nVHJlZU5vZGU+IGNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05v
ZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8U2Nyb2xs
aW5nVHJlZU5vZGU+IGNyZWF0ZVNjcm9sbGluZ1RyZWVOb2RlKFNjcm9sbGluZ05vZGVUeXBlLCBT
Y3JvbGxpbmdOb2RlSUQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGluZ1Ry
ZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xs
UG9zaXRpb24sIFNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24gPSBTeW5jU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZURpZFNj
cm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBT
ZXRPclN5bmNTY3JvbGxpbmdMYXllclBvc2l0aW9uID0gU3luY1Njcm9sbGluZ0xheWVyUG9zaXRp
b24pIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5n
ZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVk
IHZlcnRpY2FsKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpeGVkUG9zaXRp
b25SZWN0KCkgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0KCkgb3Zl
cnJpZGU7CiAKICAgICBSZWZQdHI8QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcj4gbV9zY3JvbGxp
bmdDb29yZGluYXRvcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCmluZGV4IDc0NzYyNzc0NzEx
MTk1YmVmNzNlMjIyMzIxYWJlZDAyMTdlNTdhMTMuLmE5NzUxM2RkODBmNGE2YWIyYzU2YjdjY2Y2
YzViNmM5MjY4OWI5MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCkBAIC00MywxNSArNDMsMTUg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjKFBhZ2UqKTsK
ICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdDb29yZGluYXRvck1hYygpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpIG92
ZXJyaWRlOworICAgIHZvaWQgY29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKSBvdmVycmlkZTsKIAog
ICAgIC8vIEhhbmRsZSB0aGUgd2hlZWwgZXZlbnQgb24gdGhlIHNjcm9sbGluZyB0aHJlYWQuIFJl
dHVybnMgd2hldGhlciB0aGUgZXZlbnQgd2FzIGhhbmRsZWQgb3Igbm90LgotICAgIHZpcnR1YWwg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVu
dCYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcmLCBjb25z
dCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVk
dWxlVHJlZVN0YXRlQ29tbWl0KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNvbW1pdFRyZWVTdGF0
ZSgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgKaW5kZXggMmFkMTZlYjIzMGE2MTNkNDZmNzhm
OGQwNzczOTM4YTRjODIxMGI1YS4uNmMxZjg4OWYzZGRhMmI0ZGQzNzE2MGI4NWUzNjczNDk5Y2Iz
OTBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5oCkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZShTY3JvbGxpbmdUcmVlJiwgU2Nyb2xs
aW5nTm9kZUlEKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25z
dCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKSBvdmVycmlkZTsKIAogICAgIEZpeGVkUG9zaXRpb25WaWV3cG9y
dENvbnN0cmFpbnRzIG1fY29uc3RyYWludHM7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fbGF5
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVNYWMuaAppbmRleCAwZGU3
ZTZmYWJjOTk0MGVmOWJiZjBhNDAzYWI1YTk3OWRjYzk4NDYwLi4zMjJjMWJlMzQ5ODVhMDBkMjM4
Y2ZkYjI1ZDVkYTk1OTI5MTVlNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxp
bmdOb2RlTWFjLmgKQEAgLTQ4LDkgKzQ4LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbGVhc2VS
ZWZlcmVuY2VzVG9TY3JvbGxiYXJQYWludGVyc09uVGhlTWFpblRocmVhZCgpOwogCiAgICAgLy8g
U2Nyb2xsaW5nVHJlZU5vZGUgbWVtYmVyIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCZWZvcmVDaGls
ZHJlbihjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRl
OwogCiAgICAgLy8gU2Nyb2xsQ29udHJvbGxlciBtZW1iZXIgZnVuY3Rpb25zLgogICAgIGJvb2wg
YWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVNYWMuaAppbmRleCA1ZGNkYTBhZTcyMTliOTZlNjkyNTdhNGJmOWFiNjVmODZmZTYw
NzkxLi4wZTExYzA1ODBiYWM0MDE5ZWZhNDY1NmRiMjQxNTZhMTlmOTY0MTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZU1hYy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlTWFjLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgU2Nyb2xsaW5nVHJlZU1hYyA6IHB1YmxpYyBUaHJlYWRl
ZFNjcm9sbGluZ1RyZWUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZU1h
Yz4gY3JlYXRlKEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IqKTsKIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxTY3JvbGxpbmdUcmVlTm9kZT4gY3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xs
aW5nTm9kZVR5cGUsIFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxT
Y3JvbGxpbmdUcmVlTm9kZT4gY3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoU2Nyb2xsaW5nTm9kZVR5
cGUsIFNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CiAKICAgICAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oCmluZGV4IDcwNDg3ZWQ3YWZiNzRkNmU1YjJmYTk2MjYxMTk2OTMxZDUyYjc5
YzguLmU2NjgzZjZlZTM4MTUxMTY4Y2Y0YzgwNzJjMzMxMzI0OGY1ZDQ2YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oCkBAIC00Nyw4ICs0Nyw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU2Ny
b2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5j
ZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBG
bG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVE
ZWx0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBTY3Jv
bGxpbmdTdGF0ZU5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5j
ZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBG
bG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVE
ZWx0YSkgb3ZlcnJpZGU7CiAKICAgICBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMg
bV9jb25zdHJhaW50czsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9sYXllcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0NhbGN1bGF0aW9uVmFsdWUuaAppbmRleCA0YjBkOTc5MjI0ZDBhZDc2
OTA3YTg3ZmQwYjZjMjg3ZWNkMWRiMzQ4Li4zY2Y1Yjc2NDVmMWY1ZDRlYjdlODc4YzE2OWYwMjNi
MmJlZjViODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DYWxjdWxhdGlv
blZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ2FsY3VsYXRpb25WYWx1ZS5o
CkBAIC04MSw4ICs4MSw4IEBAIHB1YmxpYzoKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWU7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZs
b2F0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD
YWxjRXhwcmVzc2lvbk5vZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBldmFsdWF0ZShm
bG9hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGNFeHBy
ZXNzaW9uTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZmxvYXQgbV92YWx1ZTsKIH07CkBA
IC05NCw4ICs5NCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBMZW5ndGgmIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBmbG9hdCBldmFs
dWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ2FsY0V4cHJlc3Npb25Ob2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
ZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBDYWxjRXhwcmVzc2lvbk5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIExlbmd0aCBtX2xlbmd0aDsKIH07CkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogICAg
IENhbGNPcGVyYXRvciBnZXRPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0b3I7IH0K
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGZsb2F0IGV2YWx1YXRlKGZsb2F0IG1heFZhbHVlKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxjRXhw
cmVzc2lvbk5vZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBldmFsdWF0ZShmbG9hdCBt
YXhWYWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENhbGNF
eHByZXNzaW9uTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPENh
bGNFeHByZXNzaW9uTm9kZT4gbV9sZWZ0U2lkZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2FsY0V4
cHJlc3Npb25Ob2RlPiBtX3JpZ2h0U2lkZTsKQEAgLTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAg
ICAgZmxvYXQgcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3Byb2dyZXNzOyB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCBtYXhWYWx1ZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2FsY0V4cHJlc3Npb25O
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgZXZhbHVhdGUoZmxvYXQgbWF4VmFsdWUp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDYWxjRXhwcmVzc2lv
bk5vZGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExlbmd0aCBtX2Zyb207CiAgICAgTGVuZ3Ro
IG1fdG87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9DbG9ja0dlbmVyaWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5oCmluZGV4IDI3MWUxMDhl
NjZmMTBiZjM5YjkwZTJhMWRkZDNlMDJlZTBlMmM3YTQuLmZjZTM2NzQ5M2IyNzVhNjI1M2IxMzg4
ZjUwYTNlZmQ2ZDJhZTVjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ns
b2NrR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nsb2NrR2VuZXJpYy5o
CkBAIC0zNSwxNSArMzUsMTUgQEAgcHVibGljOgogICAgIENsb2NrR2VuZXJpYygpOwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIGRvdWJsZSBjdXJyZW50VGlt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFBsYXlSYXRlKGRvdWJs
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgcGxheVJhdGUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3JhdGU7IH0KKyAgICB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSkgb3ZlcnJp
ZGU7CisgICAgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yYXRl
OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3J1bm5pbmc7IH0KKyAgICB2b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3J1bm5pbmc7IH0KIAogICAgIGRvdWJsZSBub3coKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9ESW50ZXJ2YWxUcmVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZhbFRyZWUuaAppbmRleCA3ZmFmNjY0
YmJjMTA0ZDRkOWMyMTgyYTU4OTcyNzRlNTllNzJkNTk4Li5mOGE0MDg1NmFhZmE2YjBhYjVmMDM3
MmZiNjliYTZiZjI5Mjk3MjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
T0RJbnRlcnZhbFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RJbnRlcnZh
bFRyZWUuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEludGVy
dmFsVHlwZShsb3csIGhpZ2gsIGRhdGEpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBjaGVj
a0ludmFyaWFudHMoKSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgY2hlY2tJbnZhcmlhbnRzKCkg
Y29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghUE9EUmVkQmxhY2tUcmVlPEludGVy
dmFsVHlwZT46OmNoZWNrSW52YXJpYW50cygpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZWFyY2hGb3JPdmVybGFw
c0Zyb208QWRhcHRlclR5cGU+KG5vZGUtPnJpZ2h0KCksIGFkYXB0ZXIpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVOb2RlKEludGVydmFsTm9kZSogbm9kZSkgb3ZlcnJpZGUKKyAg
ICBib29sIHVwZGF0ZU5vZGUoSW50ZXJ2YWxOb2RlKiBub2RlKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgLy8gV291bGQgdXNlIGNvbnN0IFQmLCBidXQgbmVlZCB0byByZWFzc2lnbiB0aGlzIHJl
ZmVyZW5jZSBpbiB0aGlzCiAgICAgICAgIC8vIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUE9EUmVkQmxhY2tUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QT0RSZWRCbGFja1RyZWUuaAppbmRleCBmYzE2ZDczMzhiNzUwODQxNjBlZDBmZTMxYjU2
NTAxOGIyMzQ3Njc1Li44MTExOTc2MDhlZDZkZGQ4OTMzMDMwOTkzNjgwOGRkMmQxYWYyZGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RSZWRCbGFja1RyZWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RSZWRCbGFja1RyZWUuaApAQCAtNjc3LDcgKzY3
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIENvdW50ZXIoKQogICAgICAgICAgICAgOiBtX2NvdW50
KDApIHsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdChjb25zdCBUJikgb3ZlcnJpZGUg
eyArK21fY291bnQ7IH0KKyAgICAgICAgdm9pZCB2aXNpdChjb25zdCBUJikgb3ZlcnJpZGUgeyAr
K21fY291bnQ7IH0KICAgICAgICAgaW50IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsg
fQogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdGlvblNtb290aC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5p
bWF0aW9uU21vb3RoLmgKaW5kZXggNzVmMjlhNjIwMDgxNzlkMTU5NjdmNTM3MjMwOTJjZTNkODFh
MmY0OS4uYTIzYjMzNDUwZGU0NTU0ZDJiNTdlOGM5NmM5NDNjZjI0YWNlNzAwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uU21vb3RoLmgKQEAgLTU1LDEy
ICs1NSwxMiBAQCBwdWJsaWM6CiAgICAgfTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3Rl
cCwgZmxvYXQgbXVsdGlwbGllcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
KSBvdmVycmlkZTsKKyAgICBib29sIHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RvcCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlVmlzaWJsZUxlbmd0aHMoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnJlbnRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGU7CiAjaWYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikKLSAgICB2
aXJ0dWFsIHZvaWQgc2VydmljZUFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vydmlj
ZUFuaW1hdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgUGVyQXhpc0RhdGEg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JTbW9v
dGguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yU21vb3RoLmgKaW5k
ZXggNDFhMTg2YWU0MDdmN2MxMjE0NWIwNWU4N2MwNzdlZGMzYjhhYmZjOS4uNGM2YWMwMzU4NjIx
ODY1YzEzOGIxNmIzM2I0OWI1N2IyODIyN2Q5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3JTbW9vdGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvclNtb290aC5oCkBAIC00NSwxNyArNDUsMTcgQEAgcHVibGljOgog
ICAgIGV4cGxpY2l0IFNjcm9sbEFuaW1hdG9yU21vb3RoKFNjcm9sbGFibGVBcmVhJik7CiAgICAg
dmlydHVhbCB+U2Nyb2xsQW5pbWF0b3JTbW9vdGgoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzY3Jv
bGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBm
bG9hdCBtdWx0aXBsaWVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZz
ZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29s
IHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0
ZXAsIGZsb2F0IG11bHRpcGxpZXIpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXRX
aXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKIAogI2lmICFVU0Uo
UkVRVUVTVF9BTklNQVRJT05fRlJBTUVfVElNRVIpCi0gICAgdmlydHVhbCB2b2lkIGNhbmNlbEFu
aW1hdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VydmljZVNjcm9sbEFuaW1h
dGlvbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbEFuaW1hdGlvbnMoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNlcnZpY2VTY3JvbGxBbmltYXRpb25zKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdpbGxFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAppbmRleCA3ODg3ZmJhNTA5NWY4YWQz
ODgwNjU1NTU1YTdlYWI1ZTVlMjk5Yjk5Li43ZDdkOWU4ODMyNGQwYTdiYTIzMTdmZDU0ZmU2YjI5
ZDZjZTFjYmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCkBAIC02NSwxMSAr
NjUsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbFZpZXcoKTsKIAogICAgIC8vIFNj
cm9sbGFibGVBcmVhIGZ1bmN0aW9ucy4KLSAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9s
bGJhck9yaWVudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxP
ZmZzZXQoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoU2Nyb2xs
YmFyU3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUpIG92ZXJyaWRlOworICAgIGludCBzY3JvbGxTaXpl
KFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsT2Zm
c2V0KFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxPZmZzZXQmKSBvdmVycmlkZTsK
KyAgICBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgc2Nyb2xsYmFyU3R5bGVDaGFuZ2VkKFNjcm9sbGJhclN0eWxlLCBib29sIGZvcmNlVXBkYXRl
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlVGhhdENvbnRlbnRBcmVh
V2lsbFBhaW50KCkgY29uc3Q7CiAKQEAgLTkwLDggKzkwLDggQEAgcHVibGljOgogCiAgICAgLy8g
SWYgdGhlIHNjcm9sbCB2aWV3IGRvZXMgbm90IHVzZSBhIG5hdGl2ZSB3aWRnZXQsIHRoZW4gaXQg
d2lsbCBoYXZlIGNyb3NzLXBsYXRmb3JtIFNjcm9sbGJhcnMuIFRoZXNlIGZ1bmN0aW9ucwogICAg
IC8vIGNhbiBiZSB1c2VkIHRvIG9idGFpbiB0aG9zZSBzY3JvbGxiYXJzLgotICAgIHZpcnR1YWwg
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9s
bGJhci5nZXQoKTsgfQorICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQorICAgIFNj
cm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Zl
cnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CiAgICAgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIo
Y29uc3QgV2lkZ2V0KiBjaGlsZCkgY29uc3QgeyByZXR1cm4gaG9yaXpvbnRhbFNjcm9sbGJhcigp
ID09IGNoaWxkIHx8IHZlcnRpY2FsU2Nyb2xsYmFyKCkgPT0gY2hpbGQ7IH0KIAogICAgIHZvaWQg
cG9zaXRpb25TY3JvbGxiYXJMYXllcnMoKTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRTY3JvbGxiYXJDcmVhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNj
cm9sbGJhck92ZXJsYXlTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSBvdmVycmlkZTsKIAogICAgIC8vIEJ5IGRl
ZmF1bHQgeW91IG9ubHkgcmVjZWl2ZSBwYWludCBldmVudHMgZm9yIHRoZSBhcmVhIHRoYXQgaXMg
dmlzaWJsZS4gSW4gdGhlIGNhc2Ugb2YgdXNpbmcgYQogICAgIC8vIHRpbGVkIGJhY2tpbmcgc3Rv
cmUsIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHNldCwgc28gdGhhdCB0aGUgdmlldyBwYWludHMgdGhl
IGVudGlyZSBjb250ZW50cy4KQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gSW4g
dGhlIHNpdHVhdGlvbiB0aGUgY2xpZW50IGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2Nyb2xsaW5n
IChpZS4gd2l0aCBhIHRpbGVkIGJhY2tpbmcgc3RvcmUpIGl0IGlzIHBvc3NpYmxlIHRvIHVzZQog
ICAgIC8vIHRoZSBzZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCBpbnN0ZWFkIGZvciB0aGUgbWFp
bmZyYW1lLCB0aG91Z2ggdGhpcyBtdXN0IGJlIHVwZGF0ZWQgbWFudWFsbHksIGUuZyBqdXN0IGJl
Zm9yZSByZXN1bWluZyB0aGUgcGFnZQogICAgIC8vIHdoaWNoIHVzdWFsbHkgd2lsbCBoYXBwZW4g
d2hlbiBwYW5uaW5nLCBwaW5jaGluZyBhbmQgcm90YXRpb24gZW5kcywgb3Igd2hlbiBzY2FsZSBv
ciBwb3NpdGlvbiBhcmUgY2hhbmdlZCBtYW51YWxseS4KLSAgICB2aXJ0dWFsIEludFNpemUgdmlz
aWJsZVNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVn
YWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkuc2l6ZSgpOyB9CisgICAgSW50U2l6ZSB2aXNpYmxl
U2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZpc2libGVDb250ZW50UmVjdChMZWdhY3lJ
T1NEb2N1bWVudFZpc2libGVSZWN0KS5zaXplKCk7IH0KIAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKICAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoY29u
c3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0KSB7IG1fZml4ZWRWaXNpYmxlQ29udGVudFJl
Y3QgPSB2aXNpYmxlQ29udGVudFJlY3Q7IH0KQEAgLTIxOSwxNSArMjE5LDE1IEBAIHB1YmxpYzoK
IAogICAgIC8vIEZ1bmN0aW9ucyBmb3IgZ2V0dGluZy9zZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBk
b2N1bWVudCBjb250YWluZWQgaW5zaWRlIHRoZSBTY3JvbGxWaWV3IChhcyBhbiBJbnRTaXplIG9y
IGFzIGluZGl2aWR1YWwgd2lkdGggYW5kIGhlaWdodAogICAgIC8vIHZhbHVlcykuCi0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OyAvLyBBbHdheXMgYXQgbGVhc3QgYXMgYmlnIGFzIHRoZSB2aXNpYmxlV2lkdGgoKS92aXNpYmxl
SGVpZ2h0KCkuCisgICAgV0VCQ09SRV9FWFBPUlQgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25z
dCBvdmVycmlkZTsgLy8gQWx3YXlzIGF0IGxlYXN0IGFzIGJpZyBhcyB0aGUgdmlzaWJsZVdpZHRo
KCkvdmlzaWJsZUhlaWdodCgpLgogICAgIGludCBjb250ZW50c1dpZHRoKCkgY29uc3QgeyByZXR1
cm4gY29udGVudHNTaXplKCkud2lkdGgoKTsgfQogICAgIGludCBjb250ZW50c0hlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKICAgICAvLyBGdW5jdGlvbnMgZm9y
IHF1ZXJ5aW5nIHRoZSBjdXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9pbnQs
IGEgc2l6ZSwgb3IgYXMgaW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCi0gICAgdmlydHVhbCBT
Y3JvbGxQb3NpdGlvbiBzY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHZp
c2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KS5sb2NhdGlvbigp
OyB9CisgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCku
bG9jYXRpb24oKTsgfQogCi0gICAgdmlydHVhbCBTY3JvbGxQb3NpdGlvbiBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsgLy8gVGhlIG1heGltdW0gcG9zaXRpb24gd2UgY2Fu
IGJlIHNjcm9sbGVkIHRvLgorICAgIFNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlv
bigpIGNvbnN0IG92ZXJyaWRlOyAvLyBUaGUgbWF4aW11bSBwb3NpdGlvbiB3ZSBjYW4gYmUgc2Ny
b2xsZWQgdG8uCiAKICAgICAvLyBBZGp1c3QgdGhlIHBhc3NlZCBpbiBzY3JvbGwgcG9zaXRpb24g
dG8ga2VlcCBpdCBiZXR3ZWVuIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHBvc2l0aW9ucy4KICAg
ICBTY3JvbGxQb3NpdGlvbiBhZGp1c3RTY3JvbGxQb3NpdGlvbldpdGhpblJhbmdlKGNvbnN0IFNj
cm9sbFBvc2l0aW9uJikgY29uc3Q7CkBAIC0yNjAsNyArMjYwLDcgQEAgcHVibGljOgogICAgIC8v
IHJlbGF0aXZlIHRvIHRoZSB2ZXJ5IHRvcCBvZiB0aGUgdmlldy4KICAgICBXRUJDT1JFX0VYUE9S
VCBTY3JvbGxQb3NpdGlvbiBkb2N1bWVudFNjcm9sbFBvc2l0aW9uUmVsYXRpdmVUb1ZpZXdPcmln
aW4oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBvdmVyaGFuZ0Ftb3VudCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgY2FjaGVDdXJyZW50U2Nyb2xsUG9zaXRpb24oKSB7IG1fY2FjaGVkU2Nyb2xs
UG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbigpOyB9CiAgICAgU2Nyb2xsUG9zaXRpb24gY2FjaGVk
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NhY2hlZFNjcm9sbFBvc2l0aW9uOyB9
CkBAIC0zMTUsMTMgKzMxNSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc09mZnNjcmVlbigpIGNv
bnN0OwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gb3VyIGZyYW1lIHJlY3QgY2hhbmdlcyAob3IgdGhl
IHJlY3Qvc2Nyb2xsIHBvc2l0aW9uIG9mIGFuIGFuY2VzdG9yIGNoYW5nZXMpLgotICAgIHZpcnR1
YWwgdm9pZCBmcmFtZVJlY3RzQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVSZWN0
c0NoYW5nZWQoKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBk
YXRlIG91ciBzY3JvbGxiYXJzIGFuZCBub3RpZnkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUu
Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAg
Ly8gV2lkZ2V0IG92ZXJyaWRlIHRvIG5vdGlmeSBvdXIgY29udGVudHMgb2YgYSBjbGlwcmVjdCBj
aGFuZ2UuCi0gICAgdmlydHVhbCB2b2lkIGNsaXBSZWN0Q2hhbmdlZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGb3IgcGxhdGZvcm1z
IHRoYXQgbmVlZCB0byBoaXQgdGVzdCBzY3JvbGxiYXJzIGZyb20gd2l0aGluIHRoZSBlbmdpbmUn
cyBldmVudCBoYW5kbGVycyAobGlrZSBXaW4zMikuCiAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXJB
dFBvaW50KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCk7CkBAIC0zNDUsMTMgKzM0NSwxMyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlLiBIYW5kbGVzIHBhaW50
aW5nIG9mIHRoZSBjb250ZW50cyBvZiB0aGUgdmlldyBhcyB3ZWxsIGFzIHRoZSBzY3JvbGxiYXJz
LgotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBw
YWludFNjcm9sbGJhcnMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAg
Ly8gV2lkZ2V0IG92ZXJyaWRlcyB0byBlbnN1cmUgdGhhdCBvdXIgY2hpbGRyZW4ncyB2aXNpYmls
aXR5IHN0YXR1cyBpcyBrZXB0IHVwIHRvIGRhdGUgd2hlbiB3ZSBnZXQgc2hvd24gYW5kIGhpZGRl
bi4KLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBoaWRlKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFBhcmVudFZpc2libGUoYm9vbCkgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaG93KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBoaWRlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQYXJl
bnRWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwogICAgIAogICAgIC8vIFBhbiBzY3JvbGxpbmcuCiAg
ICAgc3RhdGljIGNvbnN0IGludCBub1BhblNjcm9sbFJhZGl1cyA9IDE1OwpAQCAtMzYxLDE4ICsz
NjEsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzUG9pbnRJblNjcm9sbGJhckNv
cm5lcihjb25zdCBJbnRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxiYXJDb3JuZXJQ
cmVzZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsYmFyKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXco
Y29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3Qg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRQ
b2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRG
cm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3VG9TY3JvbGxiYXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92
ZXJyaWRlOworICAgIEludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmll
dyhjb25zdCBTY3JvbGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAg
IEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjYWxj
dWxhdGVBbmRQYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1Njcm9sbFZpZXcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9s
bE9mZnNldENoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldChjb25zdCBTY3JvbGxPZmZzZXQmIG9sZE9m
ZnNldCwgY29uc3QgU2Nyb2xsT2Zmc2V0JiBuZXdPZmZzZXQpOwogCkBAIC0zODQsNyArMzg0LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25z
dCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdmFpbGFibGVDb250ZW50U2l6ZUNoYW5nZWQoQXZhaWxh
YmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBhdmFpbGFibGVDb250ZW50
U2l6ZUNoYW5nZWQoQXZhaWxhYmxlU2l6ZUNoYW5nZVJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGFkZGVkT3JSZW1vdmVkU2Nyb2xsYmFyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkZWxlZ2F0ZXNTY3JvbGxpbmdEaWRDaGFuZ2UoKSB7IH0KIApAQCAtMzk0LDcgKzM5NCw3IEBA
IHByb3RlY3RlZDoKICAgICBib29sIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wsIGJvb2wq
IGNvbnRlbnRTaXplQWZmZWN0ZWQgPSAwKTsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3Jv
bGxDb3JuZXIoKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3Qo
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5l
clJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCiAgICAgLy8gU2Nyb2xsIHRoZSBjb250
ZW50IGJ5IGJsaXR0aW5nIHRoZSBwaXhlbHMuCiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRl
bnRzRmFzdFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJl
Y3RUb1Njcm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpAQCAtNDIwLDcgKzQyMCw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsT2Zmc2V0Q2hhbmdlZFZpYVBsYXRm
b3JtV2lkZ2V0SW1wbChjb25zdCBTY3JvbGxPZmZzZXQmLCBjb25zdCBTY3JvbGxPZmZzZXQmKSB7
IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0SW50
ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNTY3JvbGxiYXJzLCBWaXNpYmxlQ29udGVu
dFJlY3RCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCB2aXNpYmxlQ29udGVu
dFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2li
bGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9S
VCBJbnRSZWN0IHVub2JzY3VyZWRDb250ZW50UmVjdEludGVybmFsKFZpc2libGVDb250ZW50UmVj
dEluY2x1ZGVzU2Nyb2xsYmFycyA9IEV4Y2x1ZGVTY3JvbGxiYXJzKSBjb25zdDsKIAogICAgIHZv
aWQgY29tcGxldGVVcGRhdGVzQWZ0ZXJTY3JvbGxUbyhjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IDI0OTFiOWM3NGM5NzY1ZjY1
ZWVlZDZhNWUyYzg1ZjNhMTQ2ZmU2Y2QuLjFiODQxMTI5ODBlNjlkM2M5NmI3NjhlOWI4N2NhNTg4
YmUzNGI4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFByb3BvcnRpb24oaW50IHZp
c2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHAp
IHsgbV9wcmVzc2VkUG9zID0gcDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKQEAgLTExMiwxOCArMTEyLDE4IEBAIHB1
YmxpYzoKIAogICAgIFNjcm9sbGJhclRoZW1lJiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhl
bWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICBib29sIHN1cHByZXNzSW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
dXBwcmVzc0ludmFsaWRhdGlvbjsgfQogICAgIHZvaWQgc2V0U3VwcHJlc3NJbnZhbGlkYXRpb24o
Ym9vbCBzKSB7IG1fc3VwcHJlc3NJbnZhbGlkYXRpb24gPSBzOyB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVDaGFuZ2VkKCkgeyB9CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRvQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
SW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJl
Y3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1Zp
ZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRQb2lu
dCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5p
bmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgY29u
dmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdm9pZCBtb3ZlVGh1bWIoaW50IHBvcywgYm9vbCBkcmFnZ2luZ0RvY3VtZW50ID0gZmFs
c2UpOwogCkBAIC0xODQsNyArMTg0LDcgQEAgcHJvdGVjdGVkOgogICAgIGZsb2F0IG1fb3BhY2l0
eSB7IDEgfTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFdlYWtQdHJGYWN0b3J5PFNjcm9sbGJh
cj4gbV93ZWFrUHRyRmFjdG9yeTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAppbmRleCA4NDg5N2RmOGE1ZjkxNDE2ZmFlZmNiNWQ2
ODk4YjA2NDIzMWE3YmM4Li42NWQ5ODlmZTkyZTU1MjhiMTc0NDRiYzAyMDA3Y2FjYmYyZTFlOWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9z
aXRlLmgKQEAgLTQwLDE1ICs0MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6CiAg
ICAgLy8gSW1wbGVtZW50IFNjcm9sbGJhclRoZW1lIGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9v
bCBwYWludChTY3JvbGxiYXImLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3Jv
bGxiYXImLCBjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlUGFydChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
aW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHRy
YWNrUG9zaXRpb24oU2Nyb2xsYmFyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tM
ZW5ndGgoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
Q29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZXJSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNj
cm9sbFZpZXcmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zl
cmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50
UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICBib29sIHBhaW50KFNjcm9sbGJhciYsIEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOworICAg
IFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXImLCBjb25zdCBJbnRQb2ludCYpIG92ZXJy
aWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCkg
b3ZlcnJpZGU7CisgICAgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyJikgb3ZlcnJpZGU7Cisg
ICAgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIGludCB0cmFja0xlbmd0aChTY3JvbGxi
YXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3JiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVy
dGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UaW1lci5oCmlu
ZGV4IDc1MWIwZDcyMThjMDliOWU5NDNiNmMyZGRiZTIwNDlkZTUzNTExZDguLjYxY2Y2ZTVlZjVk
ZjhlYmZmMzM2NGVjZDM4YzU0ODU3ZjQ4ODI4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGltZXIuaApA
QCAtMTI4LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGZpcmVkKCkgb3ZlcnJpZGUKKyAgICB2b2lkIGZpcmVkKCkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIG1fZnVuY3Rpb24oKTsKICAgICB9CkBAIC0xODQsNyArMTg0LDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIFRpbWVyQmFzZTo6aXNBY3RpdmU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCB2b2lkIGZpcmVkKCkgb3ZlcnJpZGUKKyAgICB2b2lkIGZpcmVkKCkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGlmIChtX3Nob3VsZFJlc3RhcnRXaGVuVGltZXJGaXJlcykgewogICAgICAgICAg
ICAgbV9zaG91bGRSZXN0YXJ0V2hlblRpbWVyRmlyZXMgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uVHJpZ2dlci5oCmluZGV4IDMw
NmMwNWNmMGNjMzUxY2I3NWM5Mzc3ZjYzMGQzMzljNThiM2U0M2IuLmZjYTQ1YzEwZDIxMDRmMDVl
ZGViYjc4ODAwMTRhMjYzYTY1YjFlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9BbmltYXRpb25UcmlnZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYW5pbWF0aW9uL0FuaW1hdGlvblRyaWdnZXIuaApAQCAtNzEsNyArNzEsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5BdXRvQW5pbWF0aW9uVHJpZ2dlcigpIHsgfQogCi0gICAgdmly
dHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQW5pbWF0aW9uVHJpZ2dlciYgb3RoZXIpIG92ZXJy
aWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG90aGVyLmlzQXV0b0FuaW1hdGlvblRyaWdn
ZXIoKTsKICAgICB9CkBAIC04Miw3ICs4Miw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgUGFzc1JlZlB0cjxBbmltYXRpb25UcmlnZ2VyPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1dG9BbmltYXRpb25U
cmlnZ2VyKTsKICAgICB9CkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
flNjcm9sbEFuaW1hdGlvblRyaWdnZXIoKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEFuaW1hdGlvblRyaWdnZXImIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBBbmltYXRpb25UcmlnZ2VyJiBvdGhlcikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmICghb3RoZXIuaXNTY3JvbGxBbmltYXRpb25UcmlnZ2VyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IG1fZW5kVmFsdWUgPSBlbmRWYWx1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFBhc3NSZWZQdHI8
QW5pbWF0aW9uVHJpZ2dlcj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxBbmltYXRpb25UcmlnZ2VyKG1fc3RhcnRWYWx1ZSwg
bV9lbmRWYWx1ZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5p
bWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmgKaW5kZXggMjQ4NmE5Mzc1NmU2ZDJlMzRhMzMyMWZiNTMz
MjY0MWY2MDQ4YWI2OC4uM2ExMjQ1ODZjZTJlODEyOTUyOTgwMDI5NzcyMDBlNjNhOTQ1YWU3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0
aW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgfkxpbmVh
clRpbWluZ0Z1bmN0aW9uKCkgeyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGltaW5nRnVuY3Rpb24mIG90aGVyKSBvdmVycmlkZQorICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBy
ZXR1cm4gb3RoZXIuaXNMaW5lYXJUaW1pbmdGdW5jdGlvbigpOwogICAgIH0KQEAgLTc4LDcgKzc4
LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRp
bWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUGFzc1JlZlB0cjxUaW1p
bmdGdW5jdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBMaW5lYXJUaW1pbmdGdW5jdGlvbik7CiAgICAgfQpAQCAtMTIzLDcgKzEy
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24o
KSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5j
dGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChvdGhlci5pc0N1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb24oKSkgewogICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJU
aW1pbmdGdW5jdGlvbiogY3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvbio+KCZvdGhlcik7CkBAIC0xNzMsNyArMTczLDcgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBjbG9uZSgpIGNv
bnN0IG92ZXJyaWRlCisgICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uKG1fdGltaW5nRnVuY3Rpb25QcmVzZXQsIG1feDEsIG1feTEsIG1feDIs
IG1feTIpKTsKICAgICB9CkBAIC0xOTksNyArMTk5LDcgQEAgcHVibGljOgogICAgIAogICAgIHZp
cnR1YWwgflN0ZXBzVGltaW5nRnVuY3Rpb24oKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUaW1pbmdGdW5jdGlvbiYgb3RoZXIpIG92ZXJyaWRlCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiBvdGhlcikgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGlmIChvdGhlci5pc1N0ZXBzVGltaW5nRnVuY3Rpb24oKSkgewogICAgICAgICAg
ICAgY29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3Rl
cHNUaW1pbmdGdW5jdGlvbio+KCZvdGhlcik7CkBAIC0yMjIsNyArMjIyLDcgQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFRpbWluZ0Z1bmN0aW9uPiBj
bG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUGFzc1JlZlB0cjxUaW1pbmdGdW5jdGlvbj4gY2xv
bmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBT
dGVwc1RpbWluZ0Z1bmN0aW9uKG1fc3RlcHMsIG1fc3RlcEF0U3RhcnQpKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nl
c3Nvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9EU1BLZXJuZWxQcm9j
ZXNzb3IuaAppbmRleCA4YjY5Y2YzZmQ3NTFhODg5ZjI4NDQ4MjRiNGY5ODZlZWMxZTc4NmU2Li4x
NDM5M2Q4NzAyNzc3ZDJlZGI3MTA1Zjc2MDUzMDk5ZmVhNWY2MmMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0RTUEtlcm5lbFByb2Nlc3Nvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvRFNQS2VybmVsUHJvY2Vzc29yLmgK
QEAgLTU1LDE1ICs1NSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8
QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgpID0gMDsKIAogICAgIC8vIEF1ZGlvUHJvY2Vz
c29yIG1ldGhvZHMKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB1bmluaXRpYWxpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRpb24sIHNp
emVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROdW1iZXJPZkNoYW5uZWxzKHVuc2lnbmVk
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX251bWJlck9mQ2hhbm5lbHM7IH0KKyAgICB2b2lkIGluaXRp
YWxpemUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgcHJvY2Vzcyhjb25zdCBBdWRpb0J1cyogc291cmNlLCBBdWRpb0J1cyogZGVzdGluYXRp
b24sIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldE51bWJlck9mQ2hhbm5lbHModW5zaWduZWQpIG92ZXJyaWRl
OworICAgIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX251bWJlck9mQ2hhbm5lbHM7IH0KIAotICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBkb3Vi
bGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+PiBtX2tlcm5lbHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9FcXVhbFBvd2VyUGFubmVyLmgKaW5kZXggZDI5YTZl
NzBmZDVlZWI4OGE3NzI1ZmY0ODE0ZjMxNDg1M2MzYTZlMi4uNjM0ZjE3Yzc1Y2U0ZWY2M2JlYzlj
MWZkNTRkNjY3MDA1MzM0NzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vRXF1YWxQb3dlclBhbm5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0VxdWFsUG93ZXJQYW5uZXIuaApAQCAtMzUsMTIgKzM1LDEyIEBAIGNsYXNzIEVxdWFsUG93
ZXJQYW5uZXIgOiBwdWJsaWMgUGFubmVyIHsKIHB1YmxpYzoKICAgICBFcXVhbFBvd2VyUGFubmVy
KGZsb2F0IHNhbXBsZVJhdGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhbihkb3VibGUgYXppbXV0
aCwgZG91YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1cyog
b3V0cHV0QnVmLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIHBh
bihkb3VibGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0
QnVzLCBBdWRpb0J1cyogb3V0cHV0QnVmLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXNldCgpIG92ZXJyaWRlIHsgbV9pc0ZpcnN0UmVuZGVy
ID0gdHJ1ZTsgfQorICAgIHZvaWQgcmVzZXQoKSBvdmVycmlkZSB7IG1faXNGaXJzdFJlbmRlciA9
IHRydWU7IH0KIAotICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIDA7IH0KKyAgICBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAwOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gRm9yIHNtb290aGluZyAvIGRlLXppcHBl
cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5l
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURlBhbm5lci5oCmluZGV4IGQ5
NmE3NmZlMmVhMzgxZTRjYzc4ZThjMjJiNDhhMjNmNjJkNjkwNTMuLmJmNWVlZmFhNWU0YzZkMmJm
MTdhOTkwMDMwNzQxNjVjNmU0MzNhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZQYW5uZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGUGFubmVyLmgKQEAgLTM4LDE2ICszOCwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
SFJURlBhbm5lcigpOwogCiAgICAgLy8gUGFubmVyCi0gICAgdmlydHVhbCB2b2lkIHBhbihkb3Vi
bGUgYXppbXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBB
dWRpb0J1cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhbihkb3VibGUgYXpp
bXV0aCwgZG91YmxlIGVsZXZhdGlvbiwgY29uc3QgQXVkaW9CdXMqIGlucHV0QnVzLCBBdWRpb0J1
cyogb3V0cHV0QnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlc2V0KCkgb3ZlcnJpZGU7CiAKICAgICBzaXplX3QgZmZ0U2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IGZmdFNpemVGb3JTYW1wbGVSYXRlKG1fc2FtcGxlUmF0ZSk7IH0KICAgICBzdGF0aWMgc2l6ZV90
IGZmdFNpemVGb3JTYW1wbGVSYXRlKGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgZmxvYXQgc2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCi0gICAgdmlydHVhbCBk
b3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBsYXRl
bmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIC8vIEdpdmVuIGFuIGF6aW11dGggYW5nbGUgaW4gdGhlIHJhbmdlIC0xODAgLT4g
KzE4MCwgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyBhemltdXRoIGluZGV4IGZvciB0aGUgZGF0
YWJhc2UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9y
bU1lZGlhU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1N
ZWRpYVNlc3Npb24uaAppbmRleCBjNjNjOWI3Zjc1MTg5MThiYTg1NGNhNjgzM2YwOTJiMzUwYjZh
Y2VhLi4wMmJlZjEwZjExYWIwYWNmZjAxNzM1MjRhZTJiMTVmZDVhYzAyMjlmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgK
QEAgLTEzMiwxMCArMTMyLDEwIEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgLy8gTWVkaWFQbGF5YmFja1RhcmdldENsaWVudAotICAgIHZpcnR1
YWwgdm9pZCBzZXRQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3Zl
cnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxl
RGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRQ
bGF5VG9QbGF5YmFja1RhcmdldChib29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
Y3VzdG9tUGxheWJhY2tBY3Rpb25TZWxlY3RlZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0
UGxheWJhY2tUYXJnZXQoUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UoYm9vbCkgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChib29sKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIGN1c3RvbVBsYXliYWNrQWN0aW9uU2VsZWN0ZWQoKSBvdmVy
cmlkZSB7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aAppbmRleCBlZDBjMzZiYzIwYTFlNmY2NDVmNzAwMDZlYTBlZjAwMWQzMGZlYTZhLi5kNWRlYWY4
NGI0NTAyOTMyYjJhYjQwOWRjYzZmYWQ2ZTQ0YTg3OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIu
aApAQCAtMTA5LDE2ICsxMDksMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNlc3Npb25T
dGF0ZSgpOwogCiAgICAgLy8gUmVtb3RlQ29tbWFuZExpc3RlbmVyQ2xpZW50Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZFJlY2VpdmVSZW1vdGVDb250cm9sQ29tbWFuZChQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6UmVtb3RlQ29udHJvbENvbW1hbmRUeXBlKSBvdmVycmlkZTsKIAog
ICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBhdWRp
b0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGF1
ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGF1ZGlv
SGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgYXVkaW9P
dXRwdXREZXZpY2VDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTeXN0ZW1TbGVlcExpc3Rl
bmVyCi0gICAgdmlydHVhbCB2b2lkIHN5c3RlbVdpbGxTbGVlcCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzeXN0ZW1EaWRXYWtlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzeXN0ZW1XaWxs
U2xlZXAoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN5c3RlbURpZFdha2UoKSBvdmVycmlkZTsKIAog
ICAgIFNlc3Npb25SZXN0cmljdGlvbnMgbV9yZXN0cmljdGlvbnNbUGxhdGZvcm1NZWRpYVNlc3Np
b246OldlYkF1ZGlvICsgMV07CiAgICAgVmVjdG9yPFBsYXRmb3JtTWVkaWFTZXNzaW9uKj4gbV9z
ZXNzaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9B
dWRpb0Rlc3RpbmF0aW9uSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3Mv
QXVkaW9EZXN0aW5hdGlvbklPUy5oCmluZGV4IDgxMjQ4N2EzM2ZmMGE4YzYzYWVhNGEwY2M3ZDQ3
ODk2NzZjZmUzYTMuLmI1NDdiNmRjNjU4ZTQ3YmYyZjdkMDgwMjk1MzJiODU2NzRjNDk4YjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb0Rlc3RpbmF0
aW9uSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvRGVz
dGluYXRpb25JT1MuaApAQCAtNDgsMTAgKzQ4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb25m
aWd1cmUoKTsKIAogICAgIC8vIEF1ZGlvRGVzdGluYXRpb24KLSAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlkZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQot
ICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3Ao
KSBvdmVycmlkZTsKKyAgICBib29sIGlzUGxheWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQ
bGF5aW5nOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fc2FtcGxlUmF0ZTsgfQogCiAgICAgLy8gRGVmYXVsdE91dHB1dFVuaXQgY2FsbGJhY2sKICAg
ICBzdGF0aWMgT1NTdGF0dXMgaW5wdXRQcm9jKHZvaWQqIHVzZXJEYXRhLCBBdWRpb1VuaXRSZW5k
ZXJBY3Rpb25GbGFncyosIGNvbnN0IEF1ZGlvVGltZVN0YW1wKiwgVUludDMyIGJ1c051bWJlciwg
VUludDMyIG51bWJlck9mRnJhbWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdl
cklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL01lZGlhU2Vzc2lvbk1h
bmFnZXJJT1MuaAppbmRleCA4YzIyM2E2OGRhMjE1NjNlZDc5OGMyNzVjZWRhOGJjOTQ5NzhmZjI1
Li41MmVhMWMxYzc1NDJiMjA4MTJlOTVmMWExNjk5YjdlNTZjNjRkMTNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvTWVkaWFTZXNzaW9uTWFuYWdlcklPUy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9NZWRpYVNlc3Npb25NYW5h
Z2VySU9TLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1lZGlhU2Vz
c2lvbk1hbmFnZXJpT1MoKTsKIAogICAgIHZvaWQgZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFi
bGVEaWRDaGFuZ2UoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzV2lyZWxlc3NUYXJnZXRzQXZhaWxh
YmxlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNXaXJlbGVzc1RhcmdldHNBdmFpbGFibGUoKSBv
dmVycmlkZTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKGJvb2wgaXNT
dXNwZW5kZWRVbmRlckxvY2spOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spOwogCkBAIC01NiwxNiArNTYsMTYgQEAgcHJp
dmF0ZToKIAogICAgIE1lZGlhU2Vzc2lvbk1hbmFnZXJpT1MoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBzZXNzaW9uV2lsbEJlZ2luUGxheWJhY2soUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vzc2lvbldpbGxFbmRQbGF5YmFjayhQbGF0Zm9ybU1lZGlh
U2Vzc2lvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgc2Vzc2lvbldpbGxCZWdpblBsYXliYWNrKFBs
YXRmb3JtTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXNzaW9uV2lsbEVuZFBs
YXliYWNrKFBsYXRmb3JtTWVkaWFTZXNzaW9uJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCB1
cGRhdGVOb3dQbGF5aW5nSW5mbygpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCByZXNldFJlc3Ry
aWN0aW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzZXRSZXN0cmljdGlvbnMoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb25maWd1cmVXaXJlTGVzc1RhcmdldE1vbml0b3Jpbmco
KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbmZpZ3VyZVdpcmVMZXNzVGFyZ2V0TW9uaXRvcmluZygp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNlc3Npb25DYW5Mb2FkTWVkaWEoY29uc3Qg
UGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNlc3Npb25D
YW5Mb2FkTWVkaWEoY29uc3QgUGxhdGZvcm1NZWRpYVNlc3Npb24mKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKICAgICBSZXRhaW5QdHI8V2ViTWVkaWFTZXNzaW9uSGVscGVyPiBtX29iamNPYnNlcnZl
cjsKICAgICBib29sIG1faXNJbkJhY2tncm91bmQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmgKaW5k
ZXggOWU4NjlkMGI4ZGFlZDRmNjk5MmIzZDkzZDY4OGZiMmNhYjllNjczYS4uMThiMTBhYmViZDVk
YTQ5NTFjMDllMTk2ZjRlMzcyMDQxMWZiYzc2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9EZXN0aW5hdGlvbk1hYy5oCkBAIC01MiwxMCAr
NTIsMTAgQEAgcHJpdmF0ZToKICAgICBPU1N0YXR1cyByZW5kZXIoVUludDMyIG51bWJlck9mRnJh
bWVzLCBBdWRpb0J1ZmZlckxpc3QqIGlvRGF0YSk7CiAgICAgdm9pZCBzZXRJc1BsYXlpbmcoYm9v
bCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1BsYXlpbmcoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2lzUGxheWluZzsgfQotICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQorICAgIHZvaWQgc3RhcnQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKKyAgICBib29sIGlzUGxheWlu
ZygpIG92ZXJyaWRlIHsgcmV0dXJuIG1faXNQbGF5aW5nOyB9CisgICAgZmxvYXQgc2FtcGxlUmF0
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2FtcGxlUmF0ZTsgfQogCiAgICAgQXVkaW9V
bml0IG1fb3V0cHV0VW5pdDsKICAgICBBdWRpb0lPQ2FsbGJhY2smIG1fY2FsbGJhY2s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZERlY29kZXJDRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWREZWNvZGVyQ0YuaAppbmRleCAzZjA3YjlhOTVk
MWRkYTk3ZGY1MTZjOWQ1OWM1OTY0MDUxNjQ5NWM2Li41NzY2MjJlYmNlYTJkNTliZWM4OWQzZDdm
MjRlOWQzMDNkMWJmNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9L
ZXllZERlY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0tleWVkRGVj
b2RlckNGLmgKQEAgLTM1LDI1ICszNSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBL
ZXllZERlY29kZXJDRiBmaW5hbCA6IHB1YmxpYyBLZXllZERlY29kZXIgewogcHVibGljOgogICAg
IEtleWVkRGVjb2RlckNGKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7Ci0gICAgdmlydHVh
bCB+S2V5ZWREZWNvZGVyQ0YoKSBvdmVycmlkZTsKKyAgICB+S2V5ZWREZWNvZGVyQ0YoKSBvdmVy
cmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqJiwgc2l6ZV90Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGRlY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZGVjb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVJbnQzMihjb25zdCBTdHJpbmcmIGtl
eSwgaW50MzJfdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVJbnQ2NChjb25z
dCBTdHJpbmcmIGtleSwgaW50NjRfdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkZWNv
ZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgZGVjb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICBib29sIGRlY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCB1aW50OF90KiYsIHNpemVfdCYpIG92ZXJyaWRlOworICAgIGJvb2wgZGVjb2RlQm9vbChjb25z
dCBTdHJpbmcmIGtleSwgYm9vbCYpIG92ZXJyaWRlOworICAgIGJvb2wgZGVjb2RlVUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCB1aW50MzJfdCYpIG92ZXJyaWRlOworICAgIGJvb2wgZGVjb2RlSW50
MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QmKSBvdmVycmlkZTsKKyAgICBib29sIGRlY29k
ZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBk
ZWNvZGVGbG9hdChjb25zdCBTdHJpbmcmIGtleSwgZmxvYXQmKSBvdmVycmlkZTsKKyAgICBib29s
IGRlY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBkZWNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBib29sIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBiZWdp
bk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRPYmplY3Qo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBiZWdpbkFycmF5KGNvbnN0IFN0cmluZyYg
a2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYmVnaW5BcnJheUVsZW1lbnQoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBiZWdpbkFycmF5KGNv
bnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKKyAgICBib29sIGJlZ2luQXJyYXlFbGVtZW50KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGVuZEFycmF5KCkgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBt
X3Jvb3REaWN0aW9uYXJ5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9LZXllZEVuY29kZXJDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvS2V5ZWRFbmNv
ZGVyQ0YuaAppbmRleCBhOTI4YzQ5NmVkYjgzYTFiNGM1YTA0NWMwMjM3NzA2ZmVkN2U5NjQxLi5m
YzU4ZmI2NWRmZWVkZmMyNTViNWU5YzdhMmVjNzhhZTZhZTk1MjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9LZXllZEVuY29kZXJDRi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NmL0tleWVkRW5jb2RlckNGLmgKQEAgLTM3LDI1ICszNywyNSBAQCBwdWJs
aWM6CiAgICAgS2V5ZWRFbmNvZGVyQ0YoKTsKICAgICB+S2V5ZWRFbmNvZGVyQ0YoKTsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlzaEVuY29kaW5n
KCkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGZpbmlz
aEVuY29kaW5nKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGVuY29k
ZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwgc2l6ZV90KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtl
eSwgdWludDMyX3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVJbnQzMihjb25z
dCBTdHJpbmcmIGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuY29k
ZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZW5jb2RlRmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0IFN0cmluZyYga2V5LCBkb3VibGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZW5jb2RlQnl0ZXMoY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpIG92ZXJyaWRlOworICAgIHZvaWQgZW5j
b2RlQm9vbChjb25zdCBTdHJpbmcmIGtleSwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNv
ZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKKyAgICB2b2lk
IGVuY29kZUludDMyKGNvbnN0IFN0cmluZyYga2V5LCBpbnQzMl90KSBvdmVycmlkZTsKKyAgICB2
b2lkIGVuY29kZUludDY0KGNvbnN0IFN0cmluZyYga2V5LCBpbnQ2NF90KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBlbmNvZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBlbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGJlZ2luT2JqZWN0KGNvbnN0IFN0cmluZyYg
a2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmRPYmplY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBiZWdpbkFycmF5KGNv
bnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5BcnJheUVs
ZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBi
ZWdpbkFycmF5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luQXJy
YXlFbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRBcnJheUVsZW1lbnQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGVuZEFycmF5KCkgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gbV9yb290RGljdGlvbmFyeTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvVGhlbWVDb2NvYS5oCmluZGV4IDZiYTAyMzZmNTgzNGVjYjM5MDE2MzA2Y2Mz
NTdkNmE2NzE3NTNkZTYuLmRjNTE4NDcwZDZjYjU2YWI3NTQ2MTEyMWUwYmUzYTRkYjcyNzdhZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1RoZW1lQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9UaGVtZUNvY29hLmgKQEAgLTM1LDcg
KzM1LDcgQEAgcHVibGljOgogICAgIFRoZW1lQ29jb2EoKSB7IH0KICAgICB2aXJ0dWFsIH5UaGVt
ZUNvY29hKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd05hbWVkSW1hZ2UoY29uc3QgU3Ry
aW5nJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBkcmF3TmFtZWRJbWFnZShjb25zdCBTdHJpbmcmLCBHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jb2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCmluZGV4IDUwMWU0
ZGU4OWNiN2M2MWIwNDI3ZDc5ZTczZDJiZjZjOTAzMGMxMWEuLjc0OWJkZTUwYmU1ZTIwYzUwNTRm
MDM2NWNkMTdmY2E3MzIyMmJhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1dlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1l
bnQuaApAQCAtNTYsMjggKzU2LDI4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBIVE1M
VmlkZW9FbGVtZW50KiB2aWRlb0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRWxlbWVu
dC5nZXQoKTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIoUGxhdGZvcm1MYXllciopOwogICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29yZTo6
RXZlbnQqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50KFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRl
OwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJik7
CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgb3ZlcnJpZGUK
ICAgICAgICAge3JldHVybiBzdGF0aWNfY2FzdDxXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhp
cykgPT0gJnJoczt9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcGxheSgpIG92
ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBwYXVzZSgpIG92ZXJyaWRl
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUoKSBvdmVy
cmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBv
dmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkg
b3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNlZWtUb1RpbWUoZG91
YmxlIHRpbWUpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmYXN0
U2Vlayhkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFZp
ZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNl
bGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3Qg
aW5kZXgpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBmdWxsc2Ny
ZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBiZWdpblNjcnViYmluZygpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZW5kU2NydWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWVr
VG9UaW1lKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZh
c3RTZWVrKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJl
Z2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBi
ZWdpblNjYW5uaW5nQmFja3dhcmQoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGVuZFNjYW5uaW5nKCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXF1ZXN0
RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvTGF5ZXJGcmFtZShG
bG9hdFJlY3QpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9MYXll
ckdyYXZpdHkoVmlkZW9HcmF2aXR5KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4
KSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZChIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVv
RWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9s
bGJhclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhl
bWVFZmwuaAppbmRleCA0N2EwNzM4ZTQ5MTg4YzkwY2FlZDQ2NDhkMjk5MGE3YzZmNTA4NjNhLi5j
NGI4ODE4NGQ3MmVkMGNkMTY2ZDVkYWYyZDY5N2ZjNDg1ZDdhMWZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaApAQCAtMzksMjUgKzM5LDI1
IEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lRWZsIGZpbmFsIDogcHVibGljIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlIHsKIHB1YmxpYzoKICAgICB+U2Nyb2xsYmFyVGhlbWVFZmwoKTsKIAotICAgIHZp
cnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3Vs
YXJTY3JvbGxiYXIpIG92ZXJyaWRlOworICAgIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFNjcm9sbGJhclRoaWNrbmVzcyhpbnQgdGhpY2tuZXNzKSB7IG1fc2Nyb2xsYmFyVGhpY2tuZXNz
ID0gdGhpY2tuZXNzOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc092ZXJs
YXlTY3JvbGxiYXJzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzT3ZlcmxheVNj
cm9sbGJhcnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFy
Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc1RodW1iKFNjcm9sbGJh
ciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wpIG92
ZXJyaWRlOworICAgIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCkgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHRyYWNr
UmVjdChTY3JvbGxiYXImLCBib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICBpbnQgbWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQm
LCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIHZvaWQgdW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXImKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxvYWRUaGVt
ZUlmTmVlZGVkKFNjcm9sbGJhciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZERlY29kZXJHbGliLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L0tleWVkRGVjb2RlckdsaWIuaAppbmRleCA5Y2U4OGUxMGM4OGU5NzE3OTQxOThjOGVlNjU4ZDhi
ODUwNzYxMzYwLi5hZWUzNjkyY2FiNzUxMDE3MWNhOWYyMTEzNjllMjYxYWVhMDMzODViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL0tleWVkRGVjb2RlckdsaWIuaApAQCAt
MzgsMjUgKzM4LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEtleWVkRGVjb2Rlckds
aWIgZmluYWwgOiBwdWJsaWMgS2V5ZWREZWNvZGVyIHsKIHB1YmxpYzoKICAgICBLZXllZERlY29k
ZXJHbGliKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCk7Ci0gICAgdmlydHVhbCB+S2V5ZWRE
ZWNvZGVyR2xpYigpIG92ZXJyaWRlOworICAgIH5LZXllZERlY29kZXJHbGliKCkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGRlY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCB1aW50OF90KiYsIHNpemVfdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBkZWNvZGVCb29sKGNvbnN0IFN0cmluZyYga2V5LCBib29sJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGRlY29kZVVJbnQzMihjb25zdCBTdHJpbmcmIGtleSwgdWludDMyX3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGlu
dDMyX3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlSW50NjQoY29uc3QgU3Ry
aW5nJiBrZXksIGludDY0X3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlRmxv
YXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGRlY29kZURvdWJsZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGRlY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgYm9vbCBkZWNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgdWlu
dDhfdComLCBzaXplX3QmKSBvdmVycmlkZTsKKyAgICBib29sIGRlY29kZUJvb2woY29uc3QgU3Ry
aW5nJiBrZXksIGJvb2wmKSBvdmVycmlkZTsKKyAgICBib29sIGRlY29kZVVJbnQzMihjb25zdCBT
dHJpbmcmIGtleSwgdWludDMyX3QmKSBvdmVycmlkZTsKKyAgICBib29sIGRlY29kZUludDMyKGNv
bnN0IFN0cmluZyYga2V5LCBpbnQzMl90Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkZWNvZGVJbnQ2
NChjb25zdCBTdHJpbmcmIGtleSwgaW50NjRfdCYpIG92ZXJyaWRlOworICAgIGJvb2wgZGVjb2Rl
RmxvYXQoY29uc3QgU3RyaW5nJiBrZXksIGZsb2F0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBkZWNv
ZGVEb3VibGUoY29uc3QgU3RyaW5nJiBrZXksIGRvdWJsZSYpIG92ZXJyaWRlOworICAgIGJvb2wg
ZGVjb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGVuZE9iamVjdCgpIG92ZXJyaWRlOworICAgIGJvb2wgYmVnaW5PYmpl
Y3QoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kT2JqZWN0KCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBlbmRBcnJheSgpIG92ZXJyaWRlOworICAgIGJvb2wgYmVnaW5BcnJheShjb25zdCBT
dHJpbmcmIGtleSkgb3ZlcnJpZGU7CisgICAgYm9vbCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJy
aWRlOworICAgIHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRB
cnJheSgpIG92ZXJyaWRlOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRj4g
Ym9vbCBkZWNvZGVTaW1wbGVWYWx1ZShjb25zdCBTdHJpbmcmIGtleSwgVCYgcmVzdWx0LCBGIGdl
dEZ1bmN0aW9uKTsKICAgICBIYXNoTWFwPFN0cmluZywgR1JlZlB0cjxHVmFyaWFudD4+IGRpY3Rp
b25hcnlGcm9tR1ZhcmlhbnQoR1ZhcmlhbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dsaWIvS2V5ZWRFbmNvZGVyR2xpYi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2xpYi9LZXllZEVuY29kZXJHbGliLmgKaW5kZXggM2EzMGY0YzA2MmZjYzUxNTRkMjE1YjQx
MmQxNzAwMzc2NjMxZTlkYy4uMmQ3YjFjMzRmNzE5YjI0ODY3NzI2MjI1ZTEzYjk3NzQyZDJjYjNi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJH
bGliLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9LZXllZEVuY29kZXJHbGli
LmgKQEAgLTM5LDI1ICszOSwyNSBAQCBwdWJsaWM6CiAgICAgS2V5ZWRFbmNvZGVyR2xpYigpOwog
ICAgIH5LZXllZEVuY29kZXJHbGliKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBmaW5pc2hFbmNvZGluZygpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVCeXRlcyhjb25zdCBTdHJpbmcmIGtleSwg
Y29uc3QgdWludDhfdCosIHNpemVfdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuY29k
ZUJvb2woY29uc3QgU3RyaW5nJiBrZXksIGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBlbmNvZGVVSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIHVpbnQzMl90KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5jb2RlSW50MzIoY29uc3QgU3RyaW5nJiBrZXksIGludDMyX3QpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJpbmcmIGtleSwg
aW50NjRfdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuY29kZUZsb2F0KGNvbnN0IFN0
cmluZyYga2V5LCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuY29kZURvdWJs
ZShjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZW5jb2RlU3RyaW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCB1aW50OF90Kiwg
c2l6ZV90KSBvdmVycmlkZTsKKyAgICB2b2lkIGVuY29kZUJvb2woY29uc3QgU3RyaW5nJiBrZXks
IGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgZW5jb2RlVUludDMyKGNvbnN0IFN0cmluZyYga2V5
LCB1aW50MzJfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNvZGVJbnQzMihjb25zdCBTdHJpbmcm
IGtleSwgaW50MzJfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNvZGVJbnQ2NChjb25zdCBTdHJp
bmcmIGtleSwgaW50NjRfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmNvZGVGbG9hdChjb25zdCBT
dHJpbmcmIGtleSwgZmxvYXQpIG92ZXJyaWRlOworICAgIHZvaWQgZW5jb2RlRG91YmxlKGNvbnN0
IFN0cmluZyYga2V5LCBkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgZW5jb2RlU3RyaW5nKGNv
bnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBiZWdpbk9iamVjdChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGVuZE9iamVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5PYmplY3QoY29uc3Qg
U3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kT2JqZWN0KCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGVuZEFycmF5RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBl
bmRBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5BcnJheShjb25zdCBTdHJpbmcmIGtl
eSkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbkFycmF5RWxlbWVudCgpIG92ZXJyaWRlOworICAg
IHZvaWQgZW5kQXJyYXlFbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRBcnJheSgpIG92
ZXJyaWRlOwogCiAgICAgR1ZhcmlhbnRCdWlsZGVyIG1fdmFyaWFudEJ1aWxkZXI7CiAgICAgVmVj
dG9yPEdWYXJpYW50QnVpbGRlciosIDE2PiBtX3ZhcmlhbnRCdWlsZGVyU3RhY2s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaApp
bmRleCAyNTY5NzY1ZWVlZTUzZTgzMDY5YmEzZTZlZDc4ZDJiNDJlOGE0MzcxLi4zYmM5N2VkNzAy
YWIwNGFkYmUxNDE1YWRmOWJlMzUyOThkZmFkZGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLSAgICB2aXJ0dWFsIEF1ZGlv
VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Ns
aWVudDsgfQorICAgIEF1ZGlvVHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5oCmluZGV4IGNmNWI0YzgxMDlhMzA3YTA4YWRjNGZjMTFlMmI0MjlkM2U0
NmRjODMuLjc0OTNjNmE0YmZiODYzZDk3NjM3YzQ5YzQ2NGNjMzdhZTc4ZTBhMDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTIxLDYz
ICsxMjEsNjMgQEAgcHVibGljOgogI2VuZGlmCiAgICAgdmlydHVhbCB+Qml0bWFwSW1hZ2UoKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICAvLyBGbG9hdFNpemUgZHVlIHRvIG92ZXJyaWRlLgotICAgIHZpcnR1YWwgRmxv
YXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIEludFNpemUgc2l6ZVJlc3BlY3RpbmdPcmllbnRhdGlvbihJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSkgY29u
c3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgZ2V0SG90U3BvdChJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgdW5zaWduZWQgZGVjb2RlZFNpemUoKSBjb25zdCB7IHJldHVybiBtX2RlY29kZWRTaXplOyB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICAvLyBJdCBtYXkgbG9vayB1bnVzdWFsIHRoYXQgdGhlcmUgaXMgbm8gc3RhcnQgYW5pbWF0aW9u
IGNhbGwgYXMgcHVibGljIEFQSS4gVGhpcyBpcyBiZWNhdXNlCiAgICAgLy8gd2Ugc3RhcnQgYW5k
IHN0b3AgYW5pbWF0aW5nIGxhemlseS4gQW5pbWF0aW9uIGJlZ2lucyB3aGVuZXZlciBzb21lb25l
IGRyYXdzIHRoZSBpbWFnZS4gSXQgd2lsbAogICAgIC8vIGF1dG9tYXRpY2FsbHkgcGF1c2Ugb25j
ZSBhbGwgb2JzZXJ2ZXJzIG5vIGxvbmdlciB3YW50IHRvIHJlbmRlciB0aGUgaW1hZ2UgYW55d2hl
cmUuCi0gICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVzZXRBbmltYXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltYXRp
b24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCisg
ICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCkgb3ZlcnJpZGU7CiAKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFn
ZSBmb3JtYXRzLgogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5T
SW1hZ2UoKSBvdmVycmlkZTsKKyAgICBOU0ltYWdlKiBnZXROU0ltYWdlKCkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdldFRJ
RkZSZXByZXNlbnRhdGlvbigpIG92ZXJyaWRlOworICAgIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVz
ZW50YXRpb24oKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKENHKQotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgQ0dJbWFnZVJlZiBnZXRDR0ltYWdlUmVmKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBDR0ltYWdlUmVmIGdldEZpcnN0Q0dJbWFnZVJlZk9mU2l6ZShjb25zdCBJbnRTaXpl
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZ2V0Q0dJbWFn
ZUFycmF5KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgQ0dJbWFnZVJlZiBnZXRDR0lt
YWdlUmVmKCkgb3ZlcnJpZGU7CisgICAgQ0dJbWFnZVJlZiBnZXRGaXJzdENHSW1hZ2VSZWZPZlNp
emUoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBn
ZXRDR0ltYWdlQXJyYXkoKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQot
ICAgIHZpcnR1YWwgYm9vbCBnZXRIQklUTUFQKEhCSVRNQVApIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBnZXRIQklUTUFQT2ZTaXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUqKSBvdmVycmlk
ZTsKKyAgICBib29sIGdldEhCSVRNQVAoSEJJVE1BUCkgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRI
QklUTUFQT2ZTaXplKEhCSVRNQVAsIGNvbnN0IEludFNpemUqKSBvdmVycmlkZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZpcnR1YWwgR2RrUGl4YnVmKiBnZXRHZGtQaXhidWYo
KSBvdmVycmlkZTsKKyAgICBHZGtQaXhidWYqIGdldEdka1BpeGJ1ZigpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShFRkwpCi0gICAgdmlydHVhbCBFdmFzX09iamVjdCogZ2V0RXZh
c09iamVjdChFdmFzKikgb3ZlcnJpZGU7CisgICAgRXZhc19PYmplY3QqIGdldEV2YXNPYmplY3Qo
RXZhcyopIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFBhc3NOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW1h
Z2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlIHsgcmV0
dXJuIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KGN1cnJlbnRGcmFtZSgpKTsgfQorICAgIFBhc3NO
YXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIG92ZXJyaWRlOworICAg
IEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25Gb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZSB7
IHJldHVybiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChjdXJyZW50RnJhbWUoKSk7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZTsKKyAg
ICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBib29sIGlzQW5pbWF0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291
bnQgPiAxOyB9CisgICAgYm9vbCBpc0FuaW1hdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9mcmFtZUNvdW50ID4gMTsgfQogICAgIAogICAgIGJvb2wgY2FuQW5pbWF0ZSgpOwogCkBAIC0x
ODcsNyArMTg3LDcgQEAgcHVibGljOgogICAgIHNpemVfdCBjdXJyZW50RnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRGcmFtZTsgfQogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJv
b2wgaXNCaXRtYXBJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBi
b29sIGlzQml0bWFwSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICB2b2lkIHVwZGF0ZVNpemUoSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpIGNvbnN0OwogICAgIHZvaWQgZGV0ZXJtaW5lTWluaW11bVN1
YnNhbXBsaW5nTGV2ZWwoKSBjb25zdDsKQEAgLTIwMyw5ICsyMDMsOSBAQCBwcm90ZWN0ZWQ6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgQml0bWFwSW1hZ2UoSW1hZ2VPYnNlcnZlciogPSAwKTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyY2VT
aXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgSW50
U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92ZXJyaWRlOworICAgIHZvaWQgZHJh
d0ZyYW1lTWF0Y2hpbmdTb3VyY2VTaXplKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVj
dCYgZHN0UmVjdCwgY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3IpIG92
ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBv
c2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
ZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24pIG92ZXJyaWRlOwogCiAjaWYgVVNF
KFdJTkdESSkKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5U
cmFuc2Zvcm0sCkBAIC0yMzcsNyArMjM3LDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGNhY2hlLiBJ
ZiB8ZGVzdHJveUFsbHwgaXMgZmFsc2UsIHdlIG9ubHkgZGVsZXRlIGZyYW1lcyB1cCB0byB0aGUg
Y3VycmVudAogICAgIC8vIG9uZTsgdGhpcyBpcyB1c2VkIHdoaWxlIGFuaW1hdGluZyBsYXJnZSBp
bWFnZXMgdG8ga2VlcCBtZW1vcnkgZm9vdHByaW50CiAgICAgLy8gbG93IHdpdGhvdXQgcmVkZWNv
ZGluZyB0aGUgd2hvbGUgaW1hZ2Ugb24gZXZlcnkgZnJhbWUuCi0gICAgdmlydHVhbCB2b2lkIGRl
c3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIGRlc3Ryb3lBbGwgPSB0cnVlKSBvdmVycmlkZTsK
IAogICAgIC8vIElmIHRoZSBpbWFnZSBpcyBsYXJnZSBlbm91Z2gsIGNhbGxzIGRlc3Ryb3lEZWNv
ZGVkRGF0YSgpIGFuZCBwYXNzZXMKICAgICAvLyB8ZGVzdHJveUFsbHwgYWxvbmcuCkBAIC0yNjEs
NyArMjYxLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIEFuaW1hdGlvbi4KICAgICBpbnQgcmVwZXRp
dGlvbkNvdW50KGJvb2wgaW1hZ2VLbm93blRvQmVDb21wbGV0ZSk7ICAvLyB8aW1hZ2VLbm93blRv
QmVDb21wbGV0ZXwgc2hvdWxkIGJlIHNldCBpZiB0aGUgY2FsbGVyIGtub3dzIHRoZSBlbnRpcmUg
aW1hZ2UgaGFzIGJlZW4gZGVjb2RlZC4KICAgICBib29sIHNob3VsZEFuaW1hdGUoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oQ2F0Y2hVcEFuaW1hdGlvbiA9IENhdGNoVXApIG92
ZXJyaWRlOworICAgIHZvaWQgc3RhcnRBbmltYXRpb24oQ2F0Y2hVcEFuaW1hdGlvbiA9IENhdGNo
VXApIG92ZXJyaWRlOwogICAgIHZvaWQgYWR2YW5jZUFuaW1hdGlvbigpOwogCiAgICAgLy8gRnVu
Y3Rpb24gdGhhdCBkb2VzIHRoZSByZWFsIHdvcmsgb2YgYWR2YW5jaW5nIHRoZSBhbmltYXRpb24u
IFdoZW4KQEAgLTI4MCwxOCArMjgwLDE4IEBAIHByb3RlY3RlZDoKICAgICAvLyBjaGFuZ2VkLgog
ICAgIHZvaWQgY2hlY2tGb3JTb2xpZENvbG9yKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWF5Rmls
bFdpdGhTb2xpZENvbG9yKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBzb2xpZENvbG9y
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBtYXlGaWxsV2l0aFNvbGlkQ29sb3IoKSBvdmVy
cmlkZTsKKyAgICBDb2xvciBzb2xpZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiAhQVNT
RVJUX0RJU0FCTEVECi0gICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSBvdmVycmlkZTsK
KyAgICBib29sIG5vdFNvbGlkQ29sb3IoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXJUaW1lcigpOwogICAgIHZvaWQgc3RhcnRUaW1lcihkb3VibGUgZGVsYXkp
OwogCi0gICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBJbWFnZVNv
dXJjZSBtX3NvdXJjZTsKICAgICBtdXRhYmxlIEludFNpemUgbV9zaXplOyAvLyBUaGUgc2l6ZSB0
byB1c2UgZm9yIHRoZSBvdmVyYWxsIGltYWdlICh3aWxsIGp1c3QgYmUgdGhlIHNpemUgb2YgdGhl
IGZpcnN0IGltYWdlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Nyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Dcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDhhZWJiYzU3MzcxNDYwY2I3
ZGIzMzQwODRmMTQ0ZGRkZWQ0NzMwYTcuLjllYzliMjA5NTg1ZDVkYjg2YTU1NjBkMzFhODcwNDM0
ZjkwOTEwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Ny
b3NzZmFkZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuaApAQCAtNDEsMjIgKzQxLDIyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2Uo
ZnJvbUltYWdlLCB0b0ltYWdlLCBwZXJjZW50YWdlLCBjcm9zc2ZhZGVTaXplLCBzaXplKSk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemUoY29uc3QgRmxvYXRTaXpl
Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIHVzZXNDb250YWluZXJTaXplKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRp
dmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2b2lkIHNldENvbnRhaW5lclNpemUoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGUgeyB9
CisgICAgYm9vbCB1c2VzQ29udGFpbmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBoYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgRmxvYXRTaXplIHNpemUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2Nyb3NzZmFkZVNpemU7IH0KKyAgICBGbG9hdFNpemUgc2l6ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3Jvc3NmYWRlU2l6ZTsgfQogCiBwcm90ZWN0ZWQ6
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAg
IHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJu
KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29u
c3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOwogCiAgICAgQ3Jvc3NmYWRlR2VuZXJhdGVk
SW1hZ2UoSW1hZ2UmIGZyb21JbWFnZSwgSW1hZ2UmIHRvSW1hZ2UsIGZsb2F0IHBlcmNlbnRhZ2Us
IGNvbnN0IEZsb2F0U2l6ZSYgY3Jvc3NmYWRlU2l6ZSwgY29uc3QgRmxvYXRTaXplJik7CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGR1bXAoVGV4dFN0
cmVhbSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZHJhd0Nyb3NzZmFkZShHcmFw
aGljc0NvbnRleHQmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2x5Z29uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFBvbHlnb24uaAppbmRleCBlODY5YThjMmQyNGU2YmY3MjVjMDU1NDliMzBiMzE1ZDM3MDU3
MWUyLi5hZWFlZjI1ZDZkYmYwODdkZDMyMjIwMjA5YWFjNTVkZDcwMjg5YWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvbHlnb24uaApAQCAtOTQsMTMg
Kzk0LDEzIEBAIHB1YmxpYzoKIGNsYXNzIEZsb2F0UG9seWdvbkVkZ2UgOiBwdWJsaWMgVmVydGV4
UGFpciB7CiAgICAgZnJpZW5kIGNsYXNzIEZsb2F0UG9seWdvbjsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDEoKSBjb25zdCBvdmVycmlkZQorICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHZlcnRleDEoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fcG9seWdvbik7CiAgICAgICAgIHJldHVybiBtX3BvbHlnb24tPnZlcnRleEF0KG1fdmVy
dGV4SW5kZXgxKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRl
eDIoKSBjb25zdCBvdmVycmlkZQorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDIoKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcG9seWdvbik7CiAgICAgICAgIHJl
dHVybiBtX3BvbHlnb24tPnZlcnRleEF0KG1fdmVydGV4SW5kZXgyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDBjMDM4ZDk5
NjJmNTQxYTBlNGUyNWEwZDY4MmVlYWYxM2ZiMzRjMjUuLjAyNzVhYWI2NmYzMGQwMWM0ZGJkZmYw
ZTRiMjY3NTNiNmY1ZmYzZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzUsMzEgKzM1LDMxIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgR2VuZXJhdGVkSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewogcHVibGljOgot
ICAgIHZpcnR1YWwgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRh
aW5lclNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKSBvdmVycmlkZSB7IG1fc2l6ZSA9IHNpemU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZl
SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5n
dGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRDb250YWluZXJTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkgb3ZlcnJp
ZGUgeyBtX3NpemUgPSBzaXplOyB9CisgICAgYm9vbCB1c2VzQ29udGFpbmVyU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNSZWxhdGl2ZUhlaWdo
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2lj
SGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3NpemU7IH0KKyAg
ICBGbG9hdFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQogCiAg
ICAgLy8gQXNzdW1lIHRoYXQgZ2VuZXJhdGVkIGNvbnRlbnQgaGFzIG5vIGRlY29kZWQgZGF0YSB3
ZSBuZWVkIHRvIHdvcnJ5IGFib3V0Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0
YShib29sIC8qZGVzdHJveUFsbCovID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkZXN0
cm95RGVjb2RlZERhdGEoYm9vbCAvKmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJp
ZGUgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRy
YW5zZm9ybSwKKyAgICB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
JiBkc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBC
bGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGUgPSAwOworICAg
IHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAgICAgIGNv
bnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0
ZU9wZXJhdG9yLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRl
ID0gMDsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZh
dGl2ZS4KLSAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBHZW5lcmF0ZWRJbWFnZSgp
IHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0dlbmVyYXRlZEltYWdlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNHZW5lcmF0ZWRJbWFnZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEZsb2F0U2l6ZSBtX3NpemU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGll
bnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhZGllbnRJbWFn
ZS5oCmluZGV4IDkyNTA5ZmIxZWM1MmM0ZjczMjE0ODdlNDhiOGVmYzY4MjNjNWUxZjcuLjA2Mzk2
MzAzMmYxYWY2ZmU1YmQyYmNhMTQyZTgyODBlNzZiMzI3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudEltYWdlLmgKQEAgLTQ2LDE1ICs0NiwxNSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+R3JhZGllbnRJbWFnZSgpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAorICAgIHZvaWQg
ZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuVHJhbnNmb3JtLAogICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgQmxlbmRNb2RlKSBvdmVycmlkZTsKIAogICAgIEdyYWRpZW50SW1hZ2Uo
UGFzc1JlZlB0cjxHcmFkaWVudD4sIGNvbnN0IEZsb2F0U2l6ZSYpOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgYm9vbCBpc0dyYWRpZW50SW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNHcmFkaWVudEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAg
ICAgUmVmUHRyPEdyYWRpZW50PiBtX2dyYWRpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4gbV9jYWNoZWRJbWFnZUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXgg
ODkxOGQzODFlNmVmNzk3NzhiYzQ0OGFiZGI3ZTZkYmY1YzBjZWZkMC4uYmZlYTQyZGJlOTg2NzE0
YjQ1YmYwMGE2ZGVkYzJlZmVmZDMyY2FiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTQ4
LDggKzQ4LDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBy
ZW5kZXJTdHlsZSgpIHsgcmV0dXJuIG1fcmVuZGVyU3R5bGU7IH0KIAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGU7CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQ
RVIpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIm
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCBvcGFjaXR5KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDFhNGExN2UzNDdkZmZjMzMxY2NmZWQzN2IwODAy
NmVlMTlmNzU2OTMuLjgzNWY5NmEzMzcwNzE4OTZjOTE2ODFjYmU1NzNhOTlhMTNhMzc3NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgK
QEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAg
IHN0ZDo6dW5pcXVlX3B0cjxBbmltYXRpb25WYWx1ZT4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRBbmltYXRpb25WYWx1
ZT4oKnRoaXMpOwogICAgIH0KQEAgLTEyNiw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1hdGlvblZhbHVlPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZT4oKnRoaXMpOwogICAgIH0KQEAgLTE1NCw3ICsxNTQs
NyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgc3RkOjp1bmlxdWVf
cHRyPEFuaW1hdGlvblZhbHVlPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxGaWx0ZXJBbmltYXRpb25WYWx1ZT4oKnRoaXMpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXJVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0xheWVyVXBkYXRlci5oCmluZGV4IGY3OTVkNjU2ZDUwZGRhZjUyOWJhODZhNWY2NjczZmU5
OWZkZWNkYmUuLjgxNTIwM2Y5NWRhNWFhNGViYjcyZmM5YmNkMzgyZmJkMDNkYjUzZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXll
clVwZGF0ZXIuaApAQCAtNTYsMTIgKzU2LDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcmVlbkRp
ZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05f
RlJBTUVfRElTUExBWV9NT05JVE9SKQotICAgIHZpcnR1YWwgUmVmUHRyPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBj
b25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVE
aXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IG92ZXJyaWRlOwog
I2VuZGlmCiAKIHByaXZhdGU6CiAjaWYgVVNFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FX0RJU1BM
QVlfTU9OSVRPUikKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheVJlZnJlc2hGaXJlZChkb3VibGUg
dGltZXN0YW1wKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BsYXlSZWZyZXNoRmlyZWQoZG91Ymxl
IHRpbWVzdGFtcCkgb3ZlcnJpZGU7CiAgICAgR3JhcGhpY3NMYXllclVwZGF0ZXJDbGllbnQmIG1f
Y2xpZW50OwogI2VuZGlmCiAgICAgYm9vbCBtX3NjaGVkdWxlZCB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlLmgKaW5kZXggZjgwODRiYjFjNjhjY2MxNGY1MTJiMjBlOThlYjNjNDA4MjNjYTVkNC4u
MzYzYmVjMjcyNTlmMThhNjBmZjFiMjcyYzMwYzRjMjdjZGI0ZjA4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZSgpIHsgfQogCiAgICAgdm9pZCBzZXRDbGllbnQoSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9Ci0gICAgdmlydHVhbCBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50KiBjbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2NsaWVudDsgfQorICAgIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQqIGNsaWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICBlbnVtIE1vZGUg
ewogICAgICAgICBEaXNhYmxlZCwKQEAgLTY5LDkgKzY5LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5
QXRvbTsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZW1wdHlBdG9tOyB9Ci0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBBdG9taWNTdHJpbmcgbGFi
ZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBBdG9taWNTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KKyAgICBB
dG9taWNTdHJpbmcgaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBlbXB0eUF0b207IH0KICAg
ICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkg
Y29uc3QgeyByZXR1cm4gZW1wdHlBdG9tOyB9CiAKICAgICB2aXJ0dWFsIGludCB0ZXh0VHJhY2tJ
bmRleCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL05hbWVkSW1hZ2VHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKaW5kZXggZDlm
MGFjMWYzMTZjODc2M2ZhYjc3ODM0ZGUxMjkyMjk2YjNlOGE3ZS4uYWNiYmFhMGRiYzA2ZDEwYmRm
ZWJhYjAzZDQ1NmQ4MWU2MjczMTYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQxLDE0
ICs0MSwxNCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdQYXR0
ZXJuKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwg
Y29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRS
ZWN0JiBkc3RSZWN0LCBCbGVuZE1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhdyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2Ny
aXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJu
VHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFj
aW5nLCBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBCbGVuZE1v
ZGUpIG92ZXJyaWRlOwogCiAgICAgTmFtZWRJbWFnZUdlbmVyYXRlZEltYWdlKFN0cmluZyBuYW1l
LCBjb25zdCBGbG9hdFNpemUmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNOYW1l
ZEltYWdlR2VuZXJhdGVkSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaXNOYW1lZEltYWdlR2VuZXJhdGVkSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0mKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IFN0cmluZyBtX25hbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKaW5kZXggMjRmMDliYWZlZTc0OWU0MWFkNGYwOTYy
ZDExNzUxMTZhMzQwOGIzZi4uZmVkMzQ5YTdiMzcyOGY1MDI3YzgyZTdhMTBjMzUyN2QwZjU5MzVk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFj
a1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1Ry
YWNrUHJpdmF0ZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2b2lk
IHNldENsaWVudChWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0g
Y2xpZW50OyB9Ci0gICAgdmlydHVhbCBWaWRlb1RyYWNrUHJpdmF0ZUNsaWVudCogY2xpZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KKyAgICBWaWRlb1RyYWNrUHJpdmF0
ZUNsaWVudCogY2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jbGllbnQ7IH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgKaW5kZXggMmQxNzg4
NWYxNzhjZWUzZjQyZjJmNjIxYzU1YTFmYmZkYTI2NWZlNS4uMTU3N2I1OTM3YjJiODE2MjI5NDQw
MTQzNzE2OWI1YzM5YTY4MWEzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNl
UHJvdmlkZXJBVkZPYmpDLmgKQEAgLTY0LDggKzY0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGNy
ZWF0ZU1peCgpOwogCiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlcgotICAgIHZpcnR1YWwgdm9p
ZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHByb3ZpZGVJbnB1dChBdWRpb0J1cyosIHNpemVfdCBmcmFt
ZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQqKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyB2b2lkIGluaXRDYWxsYmFjayhN
VEF1ZGlvUHJvY2Vzc2luZ1RhcFJlZiwgdm9pZCosIHZvaWQqKik7CiAgICAgc3RhdGljIHZvaWQg
ZmluYWxpemVDYWxsYmFjayhNVEF1ZGlvUHJvY2Vzc2luZ1RhcFJlZik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCBhMWM3MWIxNDY5
YTg2NDUzMmMxZjlkMzhjNTM0Y2I4YmEwZjEwNzc0Li40MmExM2ExNGI5NDk0NmMwMDFjODViMDM2
YWJjMDYyZjRjYzYxZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDLmgKQEAgLTQ2LDggKzQ2LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYpOwogICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzS2V5U3lzdGVtQW5kTWltZVR5cGUoY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8Q0RNU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92
ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKENE
TVNlc3Npb25DbGllbnQqKSBvdmVycmlkZTsKIAogICAgIENETSogY2RtKCkgY29uc3QgeyByZXR1
cm4gbV9jZG07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oCmluZGV4IGU0NjBhOTY3NWM0ZTZmODFjNWRlZjNjZGJmMDdl
NjVjNmIyNmM5NWYuLmZmNDJmYTJmNDRmOWQ2ZmYxZTg1NzMyZWI1YjdlNWU1MWFiYTczOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2
YXRlQVZGLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgcHVibGljOgogCiAgICAgfkluYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCi0gICAgdmlydHVhbCBLaW5kIGtpbmQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBpZCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2aXJ0dWFsIEF0b21pY1N0cmlu
ZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOyB9CisgICAgS2luZCBraW5kKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5kOyB9CisgICAgQXRvbWljU3RyaW5nIGlkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIEF0b21pY1N0cmluZyBpbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbkJh
bmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOyB9CiAgICAgdm9pZCBzZXRJbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpIHsgbV9pbkJhbmRN
ZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFsdWU7IH0KIAogI2lmIEVOQUJMRShEQVRBQ1VF
X1ZBTFVFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmgK
aW5kZXggNGE4ZWU5MDhiOGVlZDlkYzFkMTFiOTllMmU1OGQzNmQ0MzRkYjdiNi4uYjQxYjNiYWJk
N2FhM2E4MzFiNDU1YWM1MDZkZWE5Zjg5NjEzNDk4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC01MSw5ICs1MSw5IEBAIGNsYXNzIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZSB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRigpOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldE1vZGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6TW9kZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRNb2RlKEluYmFuZFRleHRUcmFja1ByaXZhdGU6Ok1vZGUpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faW5kZXg7IH0KKyAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1faW5kZXg7IH0KICAgICB2b2lkIHNldFRleHRUcmFja0luZGV4KGludCBpbmRleCkgeyBt
X2luZGV4ID0gaW5kZXg7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7CkBAIC03
NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRy
YWNrQ2F0ZWdvcnkoKSBjb25zdCA9IDA7CiAgICAgCi0gICAgdmlydHVhbCBNZWRpYVRpbWUgc3Rh
cnRUaW1lVmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYVRpbWUoMSwgNCk7
IH0KKyAgICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBNZWRpYVRpbWUoMSwgNCk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCByZWFkTmF0aXZlU2Ft
cGxlQnVmZmVyKENGQXJyYXlSZWYgbmF0aXZlU2FtcGxlcywgQ0ZJbmRleCwgUmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+JiwgTWVkaWFUaW1lJiwgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiYpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oCmluZGV4IGM5ODViODk1MTBhZTRiZTgyZWFlOTVhYTU2OGJkYjM3MmYwNjg2ZjkuLjI4ZTZi
MmRmZWU3ODkwZTBlNGM5MDhhYjViYjE2NGIwNmM1MDBkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgKQEAgLTE1MCw1NiArMTUw
LDU2IEBAIHByb3RlY3RlZDoKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbj4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigpOyB9CiAKICAgICAvLyBNZWRpYVBsYXllclByaXZhdGVQcml2YXRlSW50ZXJmYWNlIG92
ZXJyaWRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKICNpZiBFTkFC
TEUoTUVESUFfU09VUkNFKQotICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYsIE1l
ZGlhU291cmNlUHJpdmF0ZUNsaWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZChjb25zdCBT
dHJpbmcmLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKSBvdmVycmlkZTsKICNlbmRpZgogI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgdm9pZCBsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYp
IG92ZXJyaWRlIHsgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpGb3JtYXRFcnJvcik7IH0K
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCkgb3ZlcnJpZGUgPSAwOwotCi0g
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1BsYXkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3Zl
cnJpZGU7Ci0KLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fY2FjaGVkSGFzVmlkZW87IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2NhY2hlZEhhc0F1ZGlvOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFZpc2libGUoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb25N
ZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50
TWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZWVrKGNv
bnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWVrV2l0aFRvbGVy
YW5jZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Vm9sdW1lKGZsb2F0KSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc0Ns
b3NlZENhcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jYWNoZWRIYXNDYXB0aW9u
czsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgb3Zl
cnJpZGUgPSAwOwotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3Jr
U3RhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX25ldHdvcmtTdGF0ZTsgfQotICAgIHZp
cnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQotICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1heE1lZGlh
VGltZVNlZWthYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgbWlu
TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5p
cXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJp
ZGUgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFByZWxvYWQoTWVkaWFQbGF5ZXI6OlByZWxvYWQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
IGNvbnN0IG92ZXJyaWRlID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRSZW5kZXJp
bmdTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTWFpbnRh
aW5Bc3BlY3RSYXRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTWFpbnRhaW5B
c3BlY3RSYXRpbzsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJh
dGlvKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBl
IG1vdmllTG9hZFR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZUZvclJlbmRlcmluZygpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVs
bHNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5u
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgY2FuY2VsTG9h
ZCgpIG92ZXJyaWRlID0gMDsKKworICAgIHZvaWQgcHJlcGFyZVRvUGxheSgpIG92ZXJyaWRlOwor
ICAgIFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0IG92ZXJyaWRlID0gMDsKKwor
ICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVycmlkZTsKKwor
ICAgIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFz
VmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZEhhc1ZpZGVvOyB9CisgICAg
Ym9vbCBoYXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY2FjaGVkSGFzQXVkaW87
IH0KKyAgICB2b2lkIHNldFZpc2libGUoYm9vbCkgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIGR1
cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIGN1cnJlbnRN
ZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBzZWVrKGNvbnN0IE1lZGlh
VGltZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXVzZWQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFZvbHVtZShmbG9hdCkgb3ZlcnJpZGUgPSAwOworICAgIGJv
b2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZEhh
c0NhcHRpb25zOyB9CisgICAgdm9pZCBzZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoYm9vbCkgb3Zl
cnJpZGUgPSAwOworICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZXR3b3JrU3RhdGU7IH0KKyAgICBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWFk
eVN0YXRlOyB9CisgICAgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTWVkaWFUaW1lIG1pbk1lZGlhVGltZVNlZWthYmxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7
CisgICAgdm9pZCBwYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZSA9IDA7CisgICAgdm9pZCBzZXRQcmVsb2FkKE1lZGlh
UGxheWVyOjpQcmVsb2FkKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGJvb2wgc3VwcG9ydHNBY2Nl
bGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlID0gMDsKKyAgICB2b2lkIGFjY2VsZXJh
dGVkUmVuZGVyaW5nU3RhdGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRNYWlu
dGFpbkFzcGVjdFJhdGlvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRNYWludGFp
bkFzcGVjdFJhdGlvOyB9CisgICAgdm9pZCBzZXRTaG91bGRNYWludGFpbkFzcGVjdFJhdGlvKGJv
b2wpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRl
OworCisgICAgTWVkaWFQbGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgcHJlcGFyZUZvclJlbmRlcmluZygpIG92ZXJyaWRlOworCisg
ICAgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1
cHBvcnRzU2Nhbm5pbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdW5z
aWduZWQgbG9uZyBsb25nIGZpbGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdG90YWxC
eXRlcygpOyB9CiAKICAgICAvLyBSZXF1aXJlZCBpbnRlcmZhY2VzIGZvciBjb25jcmV0ZSBkZXJp
dmVkIGNsYXNzZXMuCkBAIC0yMzUsNyArMjM1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybVBhdXNlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja1BsYXlhYmls
aXR5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9z
aXRpdmVUb2xlcmFuY2UpID0gMDsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgPSAwOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgPSAwOwogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRy
PFBsYXRmb3JtVGltZVJhbmdlcz4gcGxhdGZvcm1CdWZmZXJlZFRpbWVSYW5nZXMoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgcGxhdGZvcm1NYXhUaW1lU2Vla2FibGUoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBNZWRpYVRpbWUgcGxhdGZvcm1NaW5UaW1lU2Vla2FibGUoKSBj
b25zdCA9IDA7CkBAIC0yNTEsNyArMjUxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBjcmVhdGVWaWRlb0xheWVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95VmlkZW9M
YXllcigpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgPSAwOworICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNv
bnN0IG92ZXJyaWRlID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZXh0UmVuZGVyZXIo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc0xheWVyUmVuZGVyZXIoKSBjb25zdCA9
IDA7CkBAIC0yOTYsMTIgKzI5NiwxMiBAQCBwcm90ZWN0ZWQ6CiAKICAgICBNZWRpYVBsYXllciog
cGxheWVyKCkgeyByZXR1cm4gbV9wbGF5ZXI7IH0KIAotICAgIHZpcnR1YWwgU3RyaW5nIGVuZ2lu
ZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkFWRm91bmRhdGlvbiI7IH0K
LSAgICB2aXJ0dWFsIGxvbmcgcGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBhc3NldEVycm9yQ29kZSgpOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkFWRm91bmRhdGlvbiI7IH0KKyAgICBsb25nIHBsYXRm
b3JtRXJyb3JDb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYXNzZXRFcnJvckNvZGUoKTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHRyYWNrTW9kZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHRyYWNrTW9kZUNoYW5nZWQoKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05T
KQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBub3RpZnlUcmFja01vZGVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHN5bmNocm9uaXplVGV4dFRyYWNrU3RhdGUoKSB7IH0KICNlbmRpZgogICAgIHZv
aWQgcHJvY2Vzc05ld0FuZFJlbW92ZWRUZXh0VHJhY2tzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRj4+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vVmlkZW9UcmFja1ByaXZhdGVBVkYuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9WaWRlb1RyYWNrUHJp
dmF0ZUFWRi5oCmluZGV4IDJmNGJmNzUzNDRmYjQ4N2MwMTRiMDcyOWVmOTA1N2I0YzA4OTA3MTUu
Ljg1OGY0MWM2MThlYWY3OTRlM2U2NTFkMDQxNmEwNTBlZGYxOGE1YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9WaWRlb1RyYWNrUHJp
dmF0ZUFWRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9WaWRlb1RyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNiwxMSArMzYsMTEgQEAgY2xhc3MgVmlk
ZW9UcmFja1ByaXZhdGVBVkYgOiBwdWJsaWMgVmlkZW9UcmFja1ByaXZhdGUgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFZpZGVvVHJhY2tQcml2YXRlQVZGKQogcHVibGljOgogCi0gICAgdmly
dHVhbCBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5kZXg7IH0K
LSAgICB2aXJ0dWFsIEtpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fa2luZDsg
fQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pZDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQorICAgIGludCB0cmFja0luZGV4
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIEtpbmQga2luZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fa2luZDsgfQorICAgIEF0b21pY1N0cmluZyBpZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KKyAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9CisgICAgQXRvbWljU3RyaW5nIGxhbmd1
YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBzZXRLaW5kKEtpbmQga2luZCkgeyBtX2tpbmQgPSBraW5kOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvQ0RN
U2Vzc2lvbkFWRm91bmRhdGlvbkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vY2YvQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbkNGLmgKaW5kZXggMTRlMTJh
NTFmYTc4ZTFjOGVmNmQ0ZmIzODVmYTczZTgwZWZhMmQ1YS4uMWY2NmYxZWE2YWE2YWNiYzllNDQw
YmRmNjZlMGY1ODU3ZTUxZGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0NETVNlc3Npb25BVkZvdW5kYXRpb25DRi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9DRE1TZXNz
aW9uQVZGb3VuZGF0aW9uQ0YuaApAQCAtNDIsMTEgKzQyLDExIEBAIHB1YmxpYzoKICAgICBDRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YqIHBh
cmVudCwgQ0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfkNETVNlc3Npb25BVkZvdW5k
YXRpb25DRigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChDRE1TZXNzaW9uQ2xp
ZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLSAgICB2aXJ0dWFs
IGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNz
aW9uSWQ7IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVl
c3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYg
ZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0
ZW1Db2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUtleXMoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWludDhBcnJh
eT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lz
dGVtQ29kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDbGllbnQoQ0RNU2Vzc2lvbkNsaWVudCog
Y2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisgICAgY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQorICAg
IFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2ln
bmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCB1cGRhdGUoVWludDhBcnJh
eSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJv
ckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGKiBtX3BhcmVudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZDRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKaW5kZXggZmQxMjQ4
Njc2YjI2NWU1ZjRhOGI0ZTZjMmM3NDc1MTBmODNkZDUwYy4uOTBhMTg2MTllMDI3MTZmNzZmMWYw
YmIyOTA2NDRmNGVkNTc3NzY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkNGLmgKQEAgLTQzLDE3ICs0MywxNyBAQCBwdWJsaWM6CiAKICAg
ICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWQ0YoKSB7IH0KIAotICAgIHZpcnR1YWwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNTREgoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5
Rm9yY2VkU3VidGl0bGVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTWFp
blByb2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRWFz
eVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVs
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNEZWZhdWx0KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1NESCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3Vi
dGl0bGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNFYXN5VG9SZWFkKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXRvbWljU3Ry
aW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0RlZmF1bHQoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CiAKICAgICBDYXRlZ29yeSB0ZXh0VHJhY2tD
YXRlZ29yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEluQmFuZDsgfQogICAgIGJvb2wgcmVh
ZE5hdGl2ZVNhbXBsZUJ1ZmZlcihDRkFycmF5UmVmIG5hdGl2ZVNhbXBsZXMsIENGSW5kZXgsIFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYsIE1lZGlhVGltZSYsIENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9jZi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZDRi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgKaW5kZXggZTk2NjkyZmFiM2U3NzQ3MTQ5YjM4M2Q5
ODI0MmVhOTE4MDE2ZDA4Zi4uMGM5YzMzMjY4MGUwYWFlZjlmMjMzM2FkMTU2YzU0YTJjYjBlYjE2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL2NmL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkNGLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL0luYmFuZFRleHRUcmFja1By
aXZhdGVMZWdhY3lBVkNGLmgKQEAgLTQ1LDE3ICs0NSwxNyBAQCBwdWJsaWM6CiAKICAgICB+SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2FjeUFWQ0YoKSB7IH0KIAotICAgIHZpcnR1YWwgSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQXRv
bWljU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBBdG9taWNTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
OjpLaW5kIGtpbmQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ2xvc2VkQ2FwdGlvbnMo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNvbnRhaW5zT25seUZvcmNlZFN1YnRpdGxlcygp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNNYWluUHJvZ3JhbUNvbnRlbnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0
b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEF0b21pY1N0cmluZyBsYW5n
dWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Q2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMZWdh
Y3lDbG9zZWRDYXB0aW9uOyB9CisgICAgQ2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBMZWdhY3lDbG9zZWRDYXB0aW9uOyB9CiAKICAgICBBVkNGUGxh
eWVySXRlbVRyYWNrUmVmIGF2UGxheWVySXRlbVRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5
ZXJJdGVtVHJhY2suZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bkNGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2Yv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAppbmRleCBlNDgyZDE2NGJhOWFlNjBk
MDI5MDY2MThkMmMwY2U2MzlmOWU3MDYzLi43OGNlMzRjOGMzMGMxMGM1NTExMGJiZmM3NDJiNmVk
ODc3MDBlNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vY2YvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uQ0YoTWVkaWFQbGF5ZXIqKTsK
ICAgICB2aXJ0dWFsIH5NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25DRigpOwogCi0gICAg
dmlydHVhbCB2b2lkIHRyYWNrc0NoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYWNrc0No
YW5nZWQoKSBvdmVycmlkZTsKIAogI2lmIEhBVkUoQVZGT1VOREFUSU9OX0xPQURFUl9ERUxFR0FU
RSkKICAgICBib29sIHNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkNGQXNzZXRSZXNv
dXJjZUxvYWRpbmdSZXF1ZXN0UmVmKTsKQEAgLTcyLDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1TZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybVBsYXkoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1QYXVzZSgpOwotICAgIHZp
cnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBN
ZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRWb2x1bWUoZmxvYXQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDbG9zZWRDYXB0aW9u
c1Zpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYpOwpAQCAtODgsOCArODgsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpBc3NldFN0YXR1cyBhc3NldFN0YXR1
cygpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGNoZWNrUGxheWFiaWxpdHkoKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UmF0ZShmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUg
cmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmF0ZShmbG9hdCkgb3ZlcnJpZGU7
CisgICAgZG91YmxlIHJhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2Vl
a1RvVGltZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVG9sZXJh
bmNlLCBjb25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVG9sZXJhbmNlKTsKICAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBwbGF0Zm9ybUJ1ZmZlcmVkVGltZVJhbmdlcygp
IGNvbnN0OwpAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTWVkaWFUaW1l
IHBsYXRmb3JtTWF4VGltZUxvYWRlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkxv
YWRpbmdNZXRhZGF0YSgpOwogICAgIHZpcnR1YWwgdm9pZCBzaXplQ2hhbmdlZCgpOwotICAgIHZp
cnR1YWwgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCByZXF1aXJlc0ltbWVkaWF0ZUNvbXBvc2l0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0OwogCkBA
IC0xMTIsMjQgKzExMiwyNCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBoYXNDb250ZXh0
UmVuZGVyZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzTGF5ZXJSZW5kZXJlcigpIGNv
bnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CiAKICNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBX1YyKQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNy
ZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiwgQ0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYsIENETVNlc3Npb25DbGllbnQqKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBT
dHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
U3RyaW5nIGxhbmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IG92ZXJyaWRlOwogCiAj
aWYgSEFWRShBVkZPVU5EQVRJT05fTUVESUFfU0VMRUNUSU9OX0dST1VQKQogICAgIHZvaWQgcHJv
Y2Vzc01lZGlhU2VsZWN0aW9uT3B0aW9ucygpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q3VycmVudFRleHRUcmFjayhJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGKiBjdXJyZW50VGV4dFRyYWNr
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJyZW50VGV4dFRyYWNrKEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYqKSBvdmVycmlkZTsKKyAgICBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGKiBjdXJyZW50VGV4dFRyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGxv
bmcgYXNzZXRFcnJvckNvZGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBsb25nIGFzc2V0
RXJyb3JDb2RlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICNpZiAhSEFWRShBVkZPVU5EQVRJ
T05fTEVHSUJMRV9PVVRQVVRfU1VQUE9SVCkKICAgICB2b2lkIHByb2Nlc3NMZWdhY3lDbG9zZWRD
YXB0aW9uc1RyYWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNvcmVBVkNGUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJl
c291cmNlTG9hZGVyLmgKaW5kZXggZDJiZWY4NDgzOWU1MDU5MGU0NDUxNzZmYzExMzdkNmU3MzY5
YjMwMi4uZWFlYzg4MWM3MDdlMzdjZGQxOWQ2NGZjMjdlMDA0YmRiYzA4YTUzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL2NmL1dlYkNv
cmVBVkNGUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vY2YvV2ViQ29yZUFWQ0ZSZXNvdXJjZUxvYWRlci5oCkBAIC01Nyw5
ICs1Nyw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBDYWNoZWRSZXNvdXJjZUNsaWVu
dAotICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
LCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENh
Y2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0V2l0aFJl
c291cmNlKENhY2hlZFJlc291cmNlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9BdWRpb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oCmluZGV4IDE5
NzVmNGQ1ZTAyYzNlYWRlMGNjMDQzZWE2YjVhNzk5ZjQxODQyOWEuLmJiZTg5Y2RkYTEzYjA4MmRj
ZjgzZjAyNWZjYzg1YzQyOGZkYzkxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0F1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNDYs
OCArNDYsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXVkaW9UcmFj
a1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakModHJhY2ssIHBhcmVudCkpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBlbmFibGVkKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
ZXRBc3NldFRyYWNrKEFWQXNzZXRUcmFjayopOwogICAgIEFWQXNzZXRUcmFjayogYXNzZXRUcmFj
aygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkNvbnRl
bnRLZXlTZXNzaW9uLmgKaW5kZXggODZkYzVhYzU5ZGNhZmJjOGJlZGJhNTBhMzMxMDllMTBiZjZm
YzQ4Yi4uNTI2YWEwM2JjNWMxZTA2MTg2NmMwYTAyMWYyYjFkYWM1MmRlOTU2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
U2Vzc2lvbkFWQ29udGVudEtleVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZDb250ZW50S2V5U2Vzc2lv
bi5oCkBAIC00OCwxMCArNDgsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzQXZhaWxh
YmxlKCk7CiAKICAgICAvLyBDRE1TZXNzaW9uCi0gICAgdmlydHVhbCBDRE1TZXNzaW9uVHlwZSB0
eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVBVkNvbnRlbnRLZXlTZXNzaW9u
OyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8VWludDhBcnJheT4gZ2VuZXJhdGVLZXlSZXF1ZXN0KGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXREYXRhLCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJfdCYgc3lzdGVtQ29k
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VLZXlzKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJlZlB0cjxVaW50OEFycmF5
PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0
ZW1Db2RlKSBvdmVycmlkZTsKKyAgICBDRE1TZXNzaW9uVHlwZSB0eXBlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gQ0RNU2Vzc2lvblR5cGVBVkNvbnRlbnRLZXlTZXNzaW9uOyB9CisgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50
OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQm
IGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVs
ZWFzZUtleXMoKSBvdmVycmlkZTsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiBrZXksIFJl
ZlB0cjxVaW50OEFycmF5PiYgbmV4dE1lc3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUs
IHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKIAogICAgIC8vIENETVNlc3Npb25NZWRp
YVNvdXJjZUFWRk9iakMKICAgICB2b2lkIGFkZFBhcnNlcihBVlN0cmVhbURhdGFQYXJzZXIgKikg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbkFWRm91
bmRhdGlvbk9iakMuaAppbmRleCAwZWIxMjVjMTA3NDE4NjJlZWQzMTJkZGExNWI3YTg5MDUyYWFj
NDBiLi43MmU5YmY3ZDIwNjViODRlNjlmYzMwNzViNTlhODc1YmI2YzJmYTZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1T
ZXNzaW9uQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVkZvdW5kYXRpb25PYmpDLmgKQEAg
LTQyLDEyICs0MiwxMiBAQCBwdWJsaWM6CiAgICAgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMo
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyogcGFyZW50LCBDRE1TZXNzaW9uQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB+Q0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakMoKSB7IH0KIAot
ICAgIHZpcnR1YWwgQ0RNU2Vzc2lvblR5cGUgdHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIENETVNl
c3Npb25UeXBlQVZGb3VuZGF0aW9uT2JqQzsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQo
Q0RNU2Vzc2lvbkNsaWVudCogY2xpZW50KSBvdmVycmlkZSB7IG1fY2xpZW50ID0gY2xpZW50OyB9
Ci0gICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fc2Vzc2lvbklkOyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8VWludDhBcnJheT4gZ2Vu
ZXJhdGVLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFVpbnQ4QXJyYXkqIGluaXRE
YXRhLCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1
aW50MzJfdCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VL
ZXlzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIENETVNlc3Npb25UeXBlIHR5cGUo
KSBvdmVycmlkZSB7IHJldHVybiBDRE1TZXNzaW9uVHlwZUFWRm91bmRhdGlvbk9iakM7IH0KKyAg
ICB2b2lkIHNldENsaWVudChDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9j
bGllbnQgPSBjbGllbnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVmUHRyPFVpbnQ4QXJyYXk+IGdl
bmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0
RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFzZUtleXMoKSBv
dmVycmlkZTsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRyPFVpbnQ4QXJyYXk+
JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3Rl
bUNvZGUpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQyogbV9wYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9D
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgKaW5kZXggNDU2N2Y0MjgyNTY5MjQxZDI2MWYwYjAy
ODE0NjMwN2JmM2JhZDE0MC4uMWRjYjJhMGI0ZjEyMzViYWZhMmU4ZjZhYjNiYjQyOWIxY2QwMTY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvQ0RNU2Vzc2lvbkFWU3RyZWFtU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETVNlc3Npb25BVlN0cmVhbVNl
c3Npb24uaApAQCAtNDYsMTAgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DRE1TZXNz
aW9uQVZTdHJlYW1TZXNzaW9uKCk7CiAKICAgICAvLyBDRE1TZXNzaW9uCi0gICAgdmlydHVhbCBD
RE1TZXNzaW9uVHlwZSB0eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gQ0RNU2Vzc2lvblR5cGVBVlN0
cmVhbVNlc3Npb247IH0KLSAgICB2aXJ0dWFsIFJlZlB0cjxVaW50OEFycmF5PiBnZW5lcmF0ZUtl
eVJlcXVlc3QoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgVWludDhBcnJheSogaW5pdERhdGEsIFN0
cmluZyYgZGVzdGluYXRpb25VUkwsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90
JiBzeXN0ZW1Db2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUtleXMoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlKFVpbnQ4QXJyYXkqLCBSZWZQdHI8VWlu
dDhBcnJheT4mIG5leHRNZXNzYWdlLCB1bnNpZ25lZCBzaG9ydCYgZXJyb3JDb2RlLCB1aW50MzJf
dCYgc3lzdGVtQ29kZSkgb3ZlcnJpZGU7CisgICAgQ0RNU2Vzc2lvblR5cGUgdHlwZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIENETVNlc3Npb25UeXBlQVZTdHJlYW1TZXNzaW9uOyB9CisgICAgUmVmUHRy
PFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBV
aW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hv
cnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVsZWFzZUtleXMoKSBvdmVycmlkZTsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVm
UHRyPFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwg
dWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOwogCiAgICAgLy8gQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQwogICAgIHZvaWQgYWRkUGFyc2VyKEFWU3RyZWFtRGF0YVBhcnNlciopIG92
ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNU2Vzc2lvbk1lZGlh
U291cmNlQVZGT2JqQy5oCmluZGV4IDU0NWQ4NmE5ZWExYTFiYzk3OTFiZmYzMzM2NWE3MDdlNjYx
MjAxM2YuLjQxMjc4ZGRlNzg3NWUwZjg3NWFkOGZmMDc2YmEzYWViNzc1ODJhYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpD
LmgKQEAgLTQ5LDEyICs0OSwxMiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBh
cnNlcihBVlN0cmVhbURhdGFQYXJzZXIqKSA9IDA7CiAKICAgICAvLyBDRE1TZXNzaW9uCi0gICAg
dmlydHVhbCB2b2lkIHNldENsaWVudChDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRl
IHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zZXNzaW9uSWQ7IH0KKyAgICB2b2lkIHNl
dENsaWVudChDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92ZXJyaWRlIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fc2Vzc2lvbklkOyB9CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Q0Vycm9yQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGxheWVyRGlkUmVjZWl2ZUVycm9yKEFWU2Ft
cGxlQnVmZmVyRGlzcGxheUxheWVyICosIE5TRXJyb3IgKiwgYm9vbCYgc2hvdWxkSWdub3JlKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyZXJEaWRSZWNlaXZlRXJyb3IoQVZTYW1w
bGVCdWZmZXJBdWRpb1JlbmRlcmVyICosIE5TRXJyb3IgKiwgYm9vbCYgc2hvdWxkSWdub3JlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGxheWVyRGlkUmVjZWl2ZUVycm9yKEFWU2FtcGxlQnVmZmVyRGlz
cGxheUxheWVyICosIE5TRXJyb3IgKiwgYm9vbCYgc2hvdWxkSWdub3JlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbmRlcmVyRGlkUmVjZWl2ZUVycm9yKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJl
ciAqLCBOU0Vycm9yICosIGJvb2wmIHNob3VsZElnbm9yZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGFkZFNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyopOwogICAgIHZvaWQg
cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMu
aAppbmRleCAwY2FkYWYyMTNhMTI1Y2Q5ZDJmOGUwNzAwMmY2MjgzNDc4ZTdkNzFmLi44OGE5MjJh
NWQ3MGZhMmYzMDdhOTU5NmU5Njg3Y2Q1OWI0NzVlM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmgKQEAgLTQ1LDE5
ICs0NSwxOSBAQCBwdWJsaWM6CiAKICAgICB+SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMo
KSB7IH0KIAotICAgIHZpcnR1YWwgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQ2xvc2VkQ2FwdGlvbnMoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTREgoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRWFzeVRvUmVhZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNEZWZhdWx0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZTo6S2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NESCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgY29udGFpbnNPbmx5Rm9yY2VkU3VidGl0bGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc01haW5Qcm9ncmFtQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNF
YXN5VG9SZWFkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0RlZmF1bHQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gSW5CYW5kOyB9CisgICAgQ2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBJbkJhbmQ7IH0KICAgICAKICAgICBBVk1lZGlhU2VsZWN0
aW9uT3B0aW9uICptZWRpYVNlbGVjdGlvbk9wdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFT
ZWxlY3Rpb25PcHRpb24uZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxl
Z2FjeUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0luYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lBVkZPYmpDLmgKaW5kZXggOTRl
Njc3YjBjZjZlNzljNzQwODNhMDUwMWVmZjE1YTViYjExMzE2MS4uZjM4NWEzZjJjNmIyMDMwZWIy
MmZlM2IyMDI3MWI5OGM5MGY3N2YwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUxlZ2Fj
eUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlTGVnYWN5QVZGT2JqQy5oCkBAIC00Niwx
NyArNDYsMTcgQEAgcHVibGljOgogCiAgICAgfkluYmFuZFRleHRUcmFja1ByaXZhdGVMZWdhY3lB
VkZPYmpDKCkgeyB9CiAKLSAgICB2aXJ0dWFsIEluYmFuZFRleHRUcmFja1ByaXZhdGU6OktpbmQg
a2luZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0Nsb3NlZENhcHRpb25z
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNvbnRhaW5zT25seUZvcmNlZFN1
YnRpdGxlcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc01haW5Qcm9ncmFt
Q29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0Vhc3lUb1JlYWQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJlbCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6S2luZCBraW5kKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc0Nsb3NlZENhcHRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjb250YWluc09ubHlGb3JjZWRTdWJ0aXRsZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzTWFpblByb2dyYW1Db250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Vh
c3lUb1JlYWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNj
b25uZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENhdGVnb3J5IHRleHRUcmFja0NhdGVn
b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGVnYWN5Q2xvc2VkQ2FwdGlvbjsgfQorICAg
IENhdGVnb3J5IHRleHRUcmFja0NhdGVnb3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGVn
YWN5Q2xvc2VkQ2FwdGlvbjsgfQogICAgIAogICAgIEFWUGxheWVySXRlbVRyYWNrICphdlBsYXll
ckl0ZW1UcmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVySXRlbVRyYWNrLmdldCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNYWMuaAppbmRleCA2M2Y1ZDMwZmQ2Y2JiNzM1ZDhiMjY1YWM3NTJmNGYwZmZkNzhlNTgxLi5k
OTMxYzBkZGMyYjU5MTJjMGI0OTAxYzBmMGEwMDYxZjkwNGU3NzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXli
YWNrVGFyZ2V0UGlja2VyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1hYy5oCkBAIC00
Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1lZGlhUGxheWJhY2tUYXJnZXRQ
aWNrZXJNYWMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIo
Y29uc3QgRmxvYXRSZWN0JiwgYm9vbCBjaGVja0FjdGl2ZVJvdXRlLCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihjb25zdCBGbG9hdFJl
Y3QmLCBib29sIGNoZWNrQWN0aXZlUm91dGUsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBzdGFydGluZ01vbml0b3JpbmdQbGF5YmFja1RhcmdldHMoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHN0b3BNb25pdG9yaW5nUGxheWJhY2tUYXJnZXRzKCkgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKaW5kZXggODc4MDg4YzM3M2MzN2VkYWI2ZWZmYWI1MGM5YmRlYjQ4M2E3YzQ4
NS4uZjdmYjFhYzQ2OGIwNjgxMTBlYmEyMzJmMmJjNmZmMDYyNmVmYmEyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaApAQCAtODgsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKICAgICB2b2lkIHNldEFz
c2V0KFJldGFpblB0cjxpZD4pOwotICAgIHZpcnR1YWwgdm9pZCB0cmFja3NDaGFuZ2VkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCB0cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICNpZiBIQVZFKEFW
Rk9VTkRBVElPTl9NRURJQV9TRUxFQ1RJT05fR1JPVVApCiAgICAgUmV0YWluUHRyPEFWUGxheWVy
SXRlbT4gcGxheWVySXRlbSgpIGNvbnN0IHsgcmV0dXJuIG1fYXZQbGF5ZXJJdGVtOyB9CkBAIC0x
MDUsNyArMTA1LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikK
ICAgICBSZXRhaW5QdHI8QVZBc3NldFJlc291cmNlTG9hZGluZ1JlcXVlc3Q+IHRha2VSZXF1ZXN0
Rm9yS2V5VVJJKGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBrZXlBZGRlZCgpIG92
ZXJyaWRlOworICAgIHZvaWQga2V5QWRkZWQoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9p
ZCBwbGF5ZXJJdGVtU3RhdHVzRGlkQ2hhbmdlKGludCk7CkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2FuUGxheUZhc3RSZXZlcnNlRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZv
aWQgY2FuUGxheUZhc3RGb3J3YXJkRGlkQ2hhbmdlKGJvb2wpOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldFNob3VsZEJ1ZmZlckRhdGEoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaG91bGRC
dWZmZXJEYXRhKGJvb2wpIG92ZXJyaWRlOwogCiAjaWYgSEFWRShBVkZPVU5EQVRJT05fVklERU9f
T1VUUFVUKQogICAgIHZvaWQgb3V0cHV0TWVkaWFEYXRhV2lsbENoYW5nZShBVlBsYXllckl0ZW1W
aWRlb091dHB1dCopOwpAQCAtMTM5LDggKzEzOSw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIAog
I2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVRyYWNrTW9k
ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVUZXh0VHJh
Y2tTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5VHJhY2tNb2RlQ2hhbmdlZCgpIG92
ZXJyaWRlOworICAgIHZvaWQgc3luY2hyb25pemVUZXh0VHJhY2tTdGF0ZSgpIG92ZXJyaWRlOwog
I2VuZGlmCiAgICAgCiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDPiBjcmVhdGVXZWFrUHRyKCkgeyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFr
UHRyKCk7IH0KQEAgLTE1Myw3MCArMTUzLDcwIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9v
bCBpc0F2YWlsYWJsZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNhbmNlbExvYWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGxhdGZv
cm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1NZWRp
YSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1TZXRWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9y
bVBsYXkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1QYXVzZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBw
bGF0Zm9ybVNldFZpc2libGUoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybVBsYXko
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtUGF1c2UoKSBvdmVycmlkZTsKKyAgICBNZWRp
YVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vm9s
dW1lKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENsb3NlZENhcHRpb25zVmlzaWJsZShi
b29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgUGxhdGZv
cm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElP
UykgfHwgKFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElPTl9NT0RFKSkK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIoUGxhdGZvcm1MYXllciop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5GcmFtZShGbG9h
dFJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2
aXR5KE1lZGlhUGxheWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlKE1lZGlhUGxheWVyOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5
ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5HcmF2aXR5KE1lZGlhUGxh
eWVyOjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9GdWxsc2NyZWVu
TW9kZShNZWRpYVBsYXllcjo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CiAjZW5kaWYK
IAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIE5TQXJyYXkgKnRpbWVkTWV0YWRhdGEo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBhY2Nlc3NMb2coKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBlcnJvckxvZygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE5TQXJyYXkgKnRpbWVkTWV0YWRhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcg
YWNjZXNzTG9nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGVycm9yTG9nKCkgY29uc3Qg
b3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVk
UmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
TWVkaWFUaW1lIG1lZGlhVGltZUZvclRpbWVWYWx1ZShjb25zdCBNZWRpYVRpbWUmKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVy
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIE1lZGlhVGltZSBtZWRp
YVRpbWVGb3JUaW1lVmFsdWUoY29uc3QgTWVkaWFUaW1lJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
ZG91YmxlIG1heGltdW1EdXJhdGlvblRvQ2FjaGVNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVBVlBsYXllcigpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVBVlBsYXllckl0ZW0oKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZUFW
UGxheWVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVBVlBsYXllckl0ZW0oKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQVZQbGF5ZXJMYXllcigpOwotICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6SXRlbVN0YXR1cyBwbGF5
ZXJJdGVtU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhdHVzIGFzc2V0U3RhdHVzKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBsb25nIGFzc2V0RXJyb3JDb2RlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tQbGF5YWJpbGl0eSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRSYXRlRG91YmxlKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3Vi
bGUgcmF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlQVZBc3NldEZvclVSTChj
b25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uOjpJdGVtU3RhdHVzIHBsYXllckl0ZW1TdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OkFzc2V0U3RhdHVzIGFzc2V0U3RhdHVz
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgbG9uZyBhc3NldEVycm9yQ29kZSgpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgdm9pZCBjaGVja1BsYXlhYmlsaXR5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRSYXRlRG91YmxlKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgZG91YmxlIHJhdGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYgbmVnYXRpdmVUb2xlcmFuY2UsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUb2xlcmFuY2Up
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXMoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IHBsYXRmb3JtQnVmZmVyZWRUaW1lUmFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBNZWRpYVRpbWUgcGxhdGZvcm1NaW5UaW1lU2Vla2FibGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIE1lZGlhVGltZSBwbGF0Zm9ybU1heFRpbWVTZWVrYWJsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTWVkaWFUaW1lIHBsYXRmb3JtRHVyYXRpb24oKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlhVGltZSBwbGF0Zm9ybU1heFRpbWVMb2FkZWQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Mb2FkaW5nTWV0YWRhdGEo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdh
dGl2ZVRvbGVyYW5jZSwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRvbGVyYW5jZSkgb3ZlcnJp
ZGU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXMoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBwbGF0Zm9ybUJ1ZmZlcmVk
VGltZVJhbmdlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBwbGF0Zm9ybU1pblRp
bWVTZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBwbGF0Zm9ybU1heFRp
bWVTZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhVGltZSBwbGF0Zm9ybUR1cmF0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIHBsYXRmb3JtTWF4VGltZUxvYWRl
ZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5Mb2FkaW5nTWV0YWRhdGEoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNpemVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFz
QXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGNyZWF0ZUNvbnRleHRWaWRlb1JlbmRlcmVyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3lDb250ZXh0VmlkZW9SZW5kZXJlcigpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRl
Q29udGV4dFZpZGVvUmVuZGVyZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3lDb250ZXh0
VmlkZW9SZW5kZXJlcigpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVZpZGVv
TGF5ZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveVZpZGVvTGF5ZXIoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVZpZGVvTGF5ZXIoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRlc3Ryb3lWaWRlb0xheWVyKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29u
dGV4dFJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc0xheWVy
UmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0NvbnRleHRSZW5kZXJlcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzTGF5ZXJSZW5kZXJlcigpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZGVvTGF5ZXJHcmF2aXR5KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVWaWRlb0xheWVyR3Jhdml0eSgpIG92ZXJyaWRlOwogCiAgICAg
Ym9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMjI0LDE1ICsyMjQs
MTUgQEAgcHJpdmF0ZToKICAgICBNZWRpYVRpbWUgZ2V0U3RhcnREYXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVzZW50YXRpb24qKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY1RleHRUcmFja0JvdW5kcygpIG92ZXJyaWRl
OworICAgIGJvb2wgcmVxdWlyZXNUZXh0VHJhY2tSZXByZXNlbnRhdGlvbigpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0VGV4dFRyYWNrUmVwcmVzZW50YXRpb24oVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb24qKSBvdmVycmlkZTsKKyAgICB2b2lkIHN5bmNUZXh0VHJhY2tCb3VuZHMoKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRBVlBsYXllckl0ZW0oQVZQbGF5ZXJJdGVtICop
OwogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgVVNFKE1FRElBVE9PTEJPWCkKLSAgICB2aXJ0
dWFsIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBvdmVycmlkZTsK
KyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIHZvaWQgY3JlYXRlSW1hZ2VHZW5lcmF0b3IoKTsKQEAgLTI0Nyw3ICsy
NDcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGFzdEltYWdlKCk7CiAgICAgYm9vbCB2
aWRlb091dHB1dEhhc0F2YWlsYWJsZUZyYW1lKCk7CiAgICAgdm9pZCBwYWludFdpdGhWaWRlb091
dHB1dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFsIFBh
c3NOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3ZlcnJpZGU7Cisg
ICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIHdhaXRGb3JWaWRlb091dHB1dE1lZGlhRGF0YVdpbGxDaGFuZ2UoKTsKIAog
ICAgIHZvaWQgY3JlYXRlT3BlbkdMVmlkZW9PdXRwdXQoKTsKQEAgLTI1OCwxNiArMjU4LDE2IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgdmly
dHVhbCBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gYWRkS2V5KGNvbnN0IFN0cmluZyYs
IGNvbnN0IHVuc2lnbmVkIGNoYXIqLCB1bnNpZ25lZCwgY29uc3QgdW5zaWduZWQgY2hhciosIHVu
c2lnbmVkLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVy
OjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3QoY29uc3QgU3RyaW5nJiwgY29u
c3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBjYW5jZWxLZXlSZXF1ZXN0KGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2Vw
dGlvbiBhZGRLZXkoY29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVk
LCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OworICAgIE1lZGlhUGxheWVyOjpNZWRpYUtleUV4Y2VwdGlvbiBnZW5lcmF0ZUtleVJlcXVlc3Qo
Y29uc3QgU3RyaW5nJiwgY29uc3QgdW5zaWduZWQgY2hhciosIHVuc2lnbmVkKSBvdmVycmlkZTsK
KyAgICBNZWRpYVBsYXllcjo6TWVkaWFLZXlFeGNlcHRpb24gY2FuY2VsS2V5UmVxdWVzdChjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RNU2Vzc2lvbj4gY3Jl
YXRlU2Vzc2lvbihjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgQ0RNU2Vzc2lvbkNsaWVudCopIG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFN0cmluZyBsYW5ndWFnZU9mUHJpbWFyeUF1
ZGlvVHJhY2soKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VPZlByaW1hcnlB
dWRpb1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBIQVZFKEFWRk9VTkRBVElPTl9NRURJ
QV9TRUxFQ1RJT05fR1JPVVApCiAgICAgdm9pZCBwcm9jZXNzTWVkaWFTZWxlY3Rpb25PcHRpb25z
KCk7CkBAIC0yODQsOCArMjg0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NNZXRhZGF0
YVRyYWNrKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGV4dFRyYWNr
KEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUZXh0VHJhY2soKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2N1cnJlbnRUZXh0VHJhY2s7IH0KKyAgICB2b2lkIHNldEN1cnJlbnRUZXh0VHJh
Y2soSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRiopIG92ZXJyaWRlOworICAgIEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkYqIGN1cnJlbnRUZXh0VHJhY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX2N1cnJlbnRUZXh0VHJhY2s7IH0KIAogI2lmICFIQVZFKEFWRk9VTkRBVElPTl9MRUdJQkxF
X09VVFBVVF9TVVBQT1JUKQogICAgIHZvaWQgcHJvY2Vzc0xlZ2FjeUNsb3NlZENhcHRpb25zVHJh
Y2tzKCk7CkBAIC0yOTcsMjQgKzI5NywyNCBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFC
TEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKQotICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRQ
bGF5YmFja1RhcmdldFdpcmVsZXNzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgd2lyZWxlc3NQbGF5YmFja1RhcmdldE5hbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIE1lZGlhUGxheWVyOjpXaXJlbGVzc1BsYXliYWNrVGFyZ2V0VHlwZSB3aXJlbGVzc1BsYXli
YWNrVGFyZ2V0VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgY2FuUGxheVRvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ3VycmVudFBsYXliYWNrVGFyZ2V0V2ly
ZWxlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgd2lyZWxlc3NQbGF5YmFja1Rhcmdl
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6V2lyZWxlc3NQbGF5YmFj
a1RhcmdldFR5cGUgd2lyZWxlc3NQbGF5YmFja1RhcmdldFR5cGUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlk
ZTsKKyAgICBib29sIGNhblBsYXlUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCB1cGRhdGVEaXNhYmxlRXh0ZXJuYWxQbGF5
YmFjaygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAm
JiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92
ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZENhblBsYXlGYXN0Rm9yd2FyZCA/IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSA6IDIuMDsgfQotICAgIHZpcnR1
YWwgZG91YmxlIG1pbkZhc3RSZXZlcnNlUmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
Y2FjaGVkQ2FuUGxheUZhc3RSZXZlcnNlID8gLXN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6
aW5maW5pdHkoKSA6IDAuMDsgfQorICAgIGRvdWJsZSBtYXhGYXN0Rm9yd2FyZFJhdGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZENhblBsYXlGYXN0Rm9yd2FyZCA/IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSA6IDIuMDsgfQorICAgIGRvdWJsZSBtaW5G
YXN0UmV2ZXJzZVJhdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NhY2hlZENhblBsYXlG
YXN0UmV2ZXJzZSA/IC1zdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmluZmluaXR5KCkgOiAw
LjA7IH0KIAotICAgIHZpcnR1YWwgVVJMIHJlc29sdmVkVVJMKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgVVJMIHJlc29sdmVkVVJMKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBwcmVmZXJyZWRBdWRpb0NoYXJhY3RlcmlzdGljcygpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQy5tbQppbmRleCBiY2ViMWNiYzU1MmMyYzIwZTMxNzM2OWI3YWExMTUxNTgwNmYzOWU0Li45
MzA4NzgwMWY4YmRlZmRkNWNjMzk2Mjk5NzIyMmM1NjgxMWEwNjg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0KQEAgLTM4MiwzMSArMzgyLDMxIEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVCht
X2NoYWxsZW5nZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9u
Q2xpZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhl
bnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgdm9pZCByZWZBdXRo
ZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmQXV0
aGVudGljYXRpb25DbGllbnQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBvdmVycmlkZQorICAgIHZvaWQgcmVjZWl2ZWRD
cmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgQ3JlZGVudGlh
bCYgY3JlZGVudGlhbCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2Vu
ZGVyXSB1c2VDcmVkZW50aWFsOmNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkgZm9yQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZFJlcXVlc3RUb0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQorICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0
VG9Db250aW51ZVdpdGhvdXRDcmVkZW50aWFsKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Jikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSBjb250aW51
ZVdpdGhvdXRDcmVkZW50aWFsRm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bV9jaGFsbGVuZ2Uu
Z2V0KCldOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlvbihj
b25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCisgICAgdm9pZCByZWNlaXZl
ZENhbmNlbGxhdGlvbihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gY2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBy
ZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZQorICAgIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9QZXJmb3Jt
RGVmYXVsdEhhbmRsaW5nKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmIChbW21fY2hhbGxlbmdlIHNlbmRlcl0gcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihwZXJmb3JtRGVmYXVsdEhhbmRsaW5nRm9yQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KV0pCiAgICAgICAgICAgICBbW21fY2hhbGxlbmdlIHNlbmRlcl0gcGVyZm9ybURlZmF1
bHRIYW5kbGluZ0ZvckF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm1fY2hhbGxlbmdlLmdldCgpXTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZQorICAgIHZvaWQgcmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgaWYgKFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlV2l0aENoYWxs
ZW5nZTopXSkKICAgICAgICAgICAgIFtbbV9jaGFsbGVuZ2Ugc2VuZGVyXSByZWplY3RQcm90ZWN0
aW9uU3BhY2VBbmRDb250aW51ZVdpdGhDaGFsbGVuZ2U6bV9jaGFsbGVuZ2UuZ2V0KCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCAxYWE1MjliMTE1ZWRiODMzMDg2NDIwMmQ1NzcxYTU0
Yzg2YzBjNjkxLi5kNDllM2IzMTc1YThlOGRlMmY4N2I5NDAxZWQzYTVmNjg4ZjlmOTkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAtNzAsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhZGRBdWRpb1JlbmRlcmVyKEFWU2FtcGxlQnVmZmVyQXVkaW9SZW5kZXJlciopOwogICAgIHZv
aWQgcmVtb3ZlQXVkaW9SZW5kZXJlcihBVlNhbXBsZUJ1ZmZlckF1ZGlvUmVuZGVyZXIqKTsKIAot
ICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdv
cmtTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUpOwogICAgIHZvaWQgc2V0TmV0d29ya1N0YXRlKE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGUpOwogCkBAIC04NywxNCArODcsMTQgQEAgcHVibGljOgogICAgIHZvaWQg
Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpCi0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmlkZW9GdWxsc2NyZWVuRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKFBsYXRmb3JtTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFZpZGVvRnVsbHNjcmVlbkZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCiAgICAgYm9vbCBoYXNTdHJlYW1TZXNzaW9uKCkg
eyByZXR1cm4gbV9zdHJlYW1TZXNzaW9uOyB9CiAgICAgQVZTdHJlYW1TZXNzaW9uICpzdHJlYW1T
ZXNzaW9uKCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiopIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uKikgb3ZlcnJpZGU7CiAg
ICAgQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZGT2JqQyogY2RtU2Vzc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Vzc2lvbjsgfQogICAgIHZvaWQga2V5TmVlZGVkKFVpbnQ4QXJyYXkqKTsKICNlbmRp
ZgpAQCAtMTAzLDg4ICsxMDMsODggQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmlu
ZyYgdXJsKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBTdHJpbmcmIHVy
bCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkKGNv
bnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1
cmwsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopIG92ZXJyaWRlOwogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAgICAgdm9pZCBsb2FkKE1lZGlhU3RyZWFtUHJpdmF0ZSYpIG92ZXJyaWRlOwog
I2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNhbmNlbExvYWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9QbGF5
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHByZXBhcmVUb1BsYXkoKSBvdmVycmlkZTsKKyAg
ICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0
Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBsYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBs
YXkoKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXlJbnRlcm5hbCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXVzZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgcGF1c2VJbnRlcm5hbCgpOwogCi0gICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgcGF1c2VkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Vm9sdW1lKGZsb2F0IHZvbHVtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzTXV0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRNdXRlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZvbHVtZShm
bG9hdCB2b2x1bWUpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNNdXRpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXRNdXRlZChib29sKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBzdXBwb3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIEZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0U2l6
ZSBuYXR1cmFsU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGhhc1Zp
ZGVvKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc0F1ZGlvKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aGFzQXVkaW8oKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxl
KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZShib29sKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgTWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgTWVkaWFUaW1lIHN0YXJ0VGltZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgTWVkaWFUaW1lIGluaXRpYWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVk
aWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1l
IGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgc3RhcnRU
aW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIGluaXRpYWxUaW1lKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVk
aWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFU
aW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNlZWtp
bmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZURvdWJsZShkb3Vi
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1dpdGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBw
b3NpdGl2ZVRocmVzaG9sZCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZWVraW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRSYXRlRG91YmxlKGRvdWJsZSkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHNldFByZXNlcnZlc1BpdGNoKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBzZWVrYWJsZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgbWluTWVkaWFUaW1lU2Vla2FibGUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5n
ZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUg
bWF4TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgbWlu
TWVkaWFUaW1lU2Vla2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
ZGlkTG9hZGluZ1Byb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaXplKGNvbnN0
IEludFNpemUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDdXJyZW50RnJhbWVJbkNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBib29sIGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGhhc0F2YWlsYWJsZVZpZGVvRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
Ly8gY2FsbGVkIHdoZW4gdGhlIHJlbmRlcmluZyBzeXN0ZW0gZmxpcHMgdGhlIGludG8gb3Igb3V0
IG9mIGFjY2VsZXJhdGVkIHJlbmRlcmluZyBtb2RlLgotICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVy
YXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYWNjZWxlcmF0
ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgTWVkaWFQ
bGF5ZXI6Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IE1lZGlhUGxheWVyOjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVyaW5nKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBlbmdp
bmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBTdHJpbmcgbGFu
Z3VhZ2VPZlByaW1hcnlBdWRpb1RyYWNrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGxh
bmd1YWdlT2ZQcmltYXJ5QXVkaW9UcmFjaygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc2l6ZV90IGV4
dHJhTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIHRvdGFsVmlkZW9GcmFtZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxv
bmcgZHJvcHBlZFZpZGVvRnJhbWVzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBs
b25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVRp
bWUgdG90YWxGcmFtZURlbGF5KCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFZp
ZGVvRnJhbWVzKCkgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbG9uZyBkcm9wcGVkVmlkZW9GcmFt
ZXMoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkg
b3ZlcnJpZGU7CisgICAgTWVkaWFUaW1lIHRvdGFsRnJhbWVEZWxheSgpIG92ZXJyaWRlOwogCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAgICB2aXJ0dWFsIGJvb2wgaXND
dXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFyZ2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdp
cmVsZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRXaXJlbGVzc1BsYXliYWNrVGFy
Z2V0KFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlOwogICAgIGJvb2wgd2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMuaAppbmRleCAzZGU5NWEyYjhmN2Y5ZWIzZDg0ZDk0NGY0M2RjNmVkYjg2OTJi
N2FmLi5kYjAwODk2YTI2MWNmODU3M2EzZmJhYWM1OThkNjUyMDhlOTFkODZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC01
OCwxNCArNTgsMTQgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM+PiYgc291cmNlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlQnVmZmVyczsgfQogICAgIGNvbnN0IFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qyo+JiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2VC
dWZmZXJzOyB9CiAKLSAgICB2aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3Qg
Q29udGVudFR5cGUmLCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yU2Vla0NvbXBsZXRlZCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CisgICAgQWRkU3RhdHVzIGFk
ZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOworICAg
IHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRGb3JT
ZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWVrQ29tcGxldGVkKCkgb3ZlcnJp
ZGU7CiAKICAgICBNZWRpYVRpbWUgZHVyYXRpb24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCmluZGV4IDY3ZjgzOGQ5MGI3Y2E1
MTVmZDEwNjZmYzFhMGYzODVmNTA1ODgwZWIuLmExNGM0MWUzZWRlYWI0NjY3NzZkYjI5ZjU1MzVk
MjJjZWJkYzRhNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL091dE9mQmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9PdXRPZkJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTQxLDEwICs0MSwxMCBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3V0T2ZCYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRihwbGF5
ZXIsIHNlbGVjdGlvbikpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0N1
ZShDRkFycmF5UmVmLCBDRkFycmF5UmVmLCBjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRDdWVWYWx1ZXMoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IHByb2Nlc3NDdWUoQ0ZBcnJheVJlZiwgQ0ZBcnJheVJlZiwgY29uc3QgTWVkaWFUaW1lJikgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCByZXNldEN1ZVZhbHVlcygpIG92ZXJyaWRlIHsgfQogICAgIAot
ICAgIHZpcnR1YWwgQ2F0ZWdvcnkgdGV4dFRyYWNrQ2F0ZWdvcnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBPdXRPZkJhbmQ7IH0KKyAgICBDYXRlZ29yeSB0ZXh0VHJhY2tDYXRlZ29yeSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIE91dE9mQmFuZDsgfQogICAgIAogICAgIEFWTWVkaWFTZWxl
Y3Rpb25PcHRpb24qIG1lZGlhU2VsZWN0aW9uT3B0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tZWRp
YVNlbGVjdGlvbk9wdGlvbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggZjk0OGM4NjY3ZWQxZjg0
ZjQyMjk1NDY0MjI5OTJmZjA3MmRkNDVjZS4uNTViMGQxZmJhZTZlMmNjZTBiYzE5ZGVkNGEwZTVl
ZDA5M2EzNWU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5oCkBAIC0xMTIsMTcgKzExMiwxNyBAQCBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMqKTsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGUgb3ZlcnJpZGVzCi0gICAgdmlydHVh
bCB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Kikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmbHVzaEFuZEVucXVldWVOb25EaXNwbGF5
aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0b21pY1N0cmluZyB0cmFj
a0lEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5xdWV1ZVNhbXBsZShQYXNzUmVmUHRy
PE1lZGlhU2FtcGxlPiwgQXRvbWljU3RyaW5nIHRyYWNrSUQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoQXRvbWljU3RyaW5nIHRyYWNrSUQpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKEF0b21pY1N0cmlu
ZyB0cmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFib3J0KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbU1lZGlhU291cmNlKCkgb3ZlcnJpZGU7CisgICAg
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBmbHVzaEFuZEVucXVldWVOb25EaXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRy
PE1lZGlhU2FtcGxlPj4sIEF0b21pY1N0cmluZyB0cmFja0lEKSBvdmVycmlkZTsKKyAgICB2b2lk
IGVucXVldWVTYW1wbGUoUGFzc1JlZlB0cjxNZWRpYVNhbXBsZT4sIEF0b21pY1N0cmluZyB0cmFj
a0lEKSBvdmVycmlkZTsKKyAgICBib29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJp
bmcgdHJhY2tJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJp
bmcgdHJhY2tJRCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZsdXNoQW5kRW5xdWV1ZU5vbkRpc3Bs
YXlpbmdTYW1wbGVzKFZlY3RvcjxSZWZQdHI8TWVkaWFTYW1wbGU+PiwgQVZTYW1wbGVCdWZmZXJB
dWRpb1JlbmRlcmVyKik7CiAgICAgdm9pZCBmbHVzaEFuZEVucXVldWVOb25EaXNwbGF5aW5nU2Ft
cGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEFWU2FtcGxlQnVmZmVyRGlzcGxheUxh
eWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tCmluZGV4IGU4YWVjMzE5NWFkYmMzODFlNTIyMWZiNjJjODhkNGY2YjRjOTNl
ZmIuLmJiNzAwZjM3NWViMTI3MDg1ZTg2YmM2NjRmNmQyMzNmNDAyM2Y5OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCkBA
IC00NDYsMTggKzQ0NiwxOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdG9N
ZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXRQcmVzZW50YXRpb25UaW1lU3RhbXAobV9zYW1wbGUu
Z2V0KCkpKTsgfQotICAgIHZpcnR1YWwgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFt
cChtX3NhbXBsZS5nZXQoKSkpOyB9Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldER1cmF0
aW9uKG1fc2FtcGxlLmdldCgpKSk7IH0KLSAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyB0cmFja0lE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQotICAgIHZpcnR1YWwgc2l6ZV90IHNp
emVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ01TYW1wbGVCdWZmZXJHZXRUb3Rh
bFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFNpemUgcHJl
c2VudGF0aW9uU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBTYW1wbGVGbGFn
cyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGxhdGZvcm1TYW1wbGUgcGxh
dGZvcm1TYW1wbGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBvZmZzZXRUaW1lc3RhbXBzQnko
Y29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpbWVzdGFt
cHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CisgICAgTWVk
aWFUaW1lIHByZXNlbnRhdGlvblRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0b01lZGlh
VGltZShDTVNhbXBsZUJ1ZmZlckdldFByZXNlbnRhdGlvblRpbWVTdGFtcChtX3NhbXBsZS5nZXQo
KSkpOyB9CisgICAgTWVkaWFUaW1lIGRlY29kZVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0b01lZGlhVGltZShDTVNhbXBsZUJ1ZmZlckdldERlY29kZVRpbWVTdGFtcChtX3NhbXBsZS5n
ZXQoKSkpOyB9CisgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdG9NZWRpYVRpbWUoQ01TYW1wbGVCdWZmZXJHZXREdXJhdGlvbihtX3NhbXBsZS5nZXQoKSkp
OyB9CisgICAgQXRvbWljU3RyaW5nIHRyYWNrSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lkOyB9CisgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
Q01TYW1wbGVCdWZmZXJHZXRUb3RhbFNhbXBsZVNpemUobV9zYW1wbGUuZ2V0KCkpOyB9CisgICAg
RmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZTsKKworICAgIFNhbXBs
ZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TYW1wbGUgcGxhdGZv
cm1TYW1wbGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBNZWRpYVRpbWUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFRpbWVzdGFtcHMoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAKICAgICBSZXRhaW5QdHI8Q01TYW1wbGVCdWZmZXJSZWY+
IG1fc2FtcGxlOwogICAgIEF0b21pY1N0cmluZyBtX2lkOwpAQCAtNTYxLDEwICs1NjEsMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbkFWRk9iakM+IGNyZWF0
ZShBVkFzc2V0VHJhY2sqIHRyYWNrKSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFEZXNjcmlw
dGlvbkFWRk9iakModHJhY2spKTsgfQogICAgIHZpcnR1YWwgfk1lZGlhRGVzY3JpcHRpb25BVkZP
YmpDKCkgeyB9CiAKLSAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBjb2RlYygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fY29kZWM7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWRlbygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0F1ZGlv
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0F1ZGlvOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUZXh0OyB9CisgICAgQXRvbWlj
U3RyaW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb2RlYzsgfQorICAgIGJv
b2wgaXNWaWRlbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNWaWRlbzsgfQorICAgIGJv
b2wgaXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBdWRpbzsgfQorICAgIGJv
b2wgaXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RleHQ7IH0KICAgICAKIHBy
b3RlY3RlZDoKICAgICBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQyhBVkFzc2V0VHJhY2sqIHRyYWNr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMu
aAppbmRleCBmNzZjYmE2NjUzZjJjZTgxZWQ5ZDllM2QwNjMyZjdiNTU0NTRjYTkyLi5iMTliM2Fh
NDkwMmE4NzE0MzFkNDkyYTc4ZTNmZmNiYzk2MTM2MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9UcmFja1ByaXZhdGVBVkZP
YmpDKG9wdGlvbikpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29s
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRQbGF5ZXJJdGVtVHJhY2soQVZQbGF5ZXJJdGVtVHJhY2sqKTsKICAgICBBVlBsYXll
ckl0ZW1UcmFjayogcGxheWVySXRlbVRyYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRl
eCBkYjE5NTNmNmQ3MzViNGEyNmFlNjIzNGMxNWQ3YzJjYmMwNjNhMjc2Li5mNDU2ZjBhOTZmMmUy
YmMyNjJkZWFmYzM5ZjUzMmRiOWQ1YjA2ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9WaWRlb1RyYWNrUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1ZpZGVvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAg
LTQ3LDggKzQ3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVv
VHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKHRyYWNrLCBwYXJlbnQpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2VsZWN0ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZWxlY3RlZCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2VsZWN0ZWQoYm9vbCkgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHNldEFzc2V0VHJhY2soQVZBc3NldFRyYWNrKik7CiAgICAgQVZBc3NldFRyYWNrKiBh
c3NldFRyYWNrKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5oCmluZGV4IGVmZjIwMWNkYjE4OTcxNzU4YzJjNmRjNTQ5NWI5NWZl
MDAzZWQwNWMuLjkzMmMxMWYyYTY2YWQ5Yzg1MDIwOTMyNzkxYThiNjgxZDRkYTljN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5oCkBA
IC01Nyw5ICs1Nyw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBDYWNoZWRSZXNvdXJj
ZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCByZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
KiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
YXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZpbmlz
aGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGZ1bGZpbGxSZXF1ZXN0
V2l0aFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggN2I2OTI1OTBj
ZWUwMzhjMTY4NDZiMzFlOGY3ZDM5OTU3ZmZjNjU5ZC4uYTQ2YmEzMTBmMjZkYTMzNDQ2MWY5NWI1
OGJjNTI3MTYyYzFkYmI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTU1LDk5ICs1NSw5OSBAQCBwdWJsaWM6
CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgR3JhcGhpY3NMYXllckNBKFR5cGUsIEdyYXBo
aWNzTGF5ZXJDbGllbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5HcmFwaGljc0xh
eWVyQ0EoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFR5
cGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlhbGl6ZShUeXBlKSBv
dmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TmFtZShjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgUGxhdGZv
cm1MYXllcklEIHByaW1hcnlMYXllcklEKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgUGxhdGZvcm1MYXllcklEIHByaW1hcnlMYXllcklEKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQbGF0Zm9ybUxheWVyKiBwbGF0
Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9y
bUNBTGF5ZXIoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5TGF5ZXIoKTsgfQogCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xh
eWVyKj4mKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGQoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NM
YXllciosIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0xh
eWVyKiBzaWJsaW5nKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJvb2wg
cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdD
aGlsZCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRDaGlsZHJlbihjb25z
dCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGRDaGlsZEFib3ZlKEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcp
IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNz
TGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCkgb3ZlcnJpZGU7CiAKLSAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpIG92ZXJyaWRlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihHcmFwaGljc0xh
eWVyKikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFJlcGxp
Y2F0ZWRMYXllcihHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0UmVwbGljYXRlZExheWVyKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBGbG9h
dFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEFu
Y2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHNPcmlnaW4oY29uc3QgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UG9zaXRpb24oY29u
c3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QW5j
aG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Qm91bmRzT3JpZ2luKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
ZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRl
OwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1RvQm91
bmRzKGJvb2wpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRE
cmF3c0NvbnRlbnQoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzVmlzaWJsZShib29sKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wpIG92ZXJyaWRlOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRVc2VzRGlzcGxheUxpc3REcmF3aW5nKGJv
b2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9v
bCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJv
b2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RHJhd3NDb250ZW50KGJv
b2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNWaXNpYmxl
KGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QWNjZWxlcmF0ZXNE
cmF3aW5nKGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlc0Rp
c3BsYXlMaXN0RHJhd2luZyhib29sKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpIG92
ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzT3Bh
cXVlKGJvb2wpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDb250ZW50c09wYXF1ZShib29sKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSBvdmVycmlkZTsKIAogICAgIC8vIHJldHVy
biB0cnVlIGlmIHdlIHN0YXJ0ZWQgYW4gYW5pbWF0aW9uCi0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0T3BhY2l0eShmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIGJvb2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlv
bnMmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgc2V0QmFja2Ryb3BGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmFja2Ryb3BGaWx0ZXJzUmVjdChj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNldEJh
Y2tkcm9wRmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRCYWNrZHJvcEZpbHRlcnNSZWN0KGNvbnN0IEZsb2F0UmVjdCYp
IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKSBvdmVycmlkZTsKICNl
bmRpZgogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgp
IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3Bs
YXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiwgU2hvdWxkQ2xpcFRvTGF5ZXIgPSBDbGlwVG9MYXll
cikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRz
TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROZWVk
c0Rpc3BsYXkoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE5lZWRzRGlz
cGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmLCBTaG91bGRDbGlwVG9MYXllciA9IENsaXBUb0xh
eWVyKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzTmVlZHNE
aXNwbGF5KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNDbGlwcGluZ1JlY3QoY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBz
ZXRNYXNrc1RvQm91bmRzUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c0NsaXBwaW5nUmVj
dChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzZXRNYXNrc1RvQm91bmRzUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0Jikgb3ZlcnJp
ZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVMYXllclBhdGgo
Y29uc3QgUGF0aCYpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBz
ZXRTaGFwZUxheWVyV2luZFJ1bGUoV2luZFJ1bGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2hhcGVMYXllclBhdGgoY29uc3QgUGF0aCYpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hhcGVMYXllcldpbmRSdWxlKFdpbmRSdWxlKSBvdmVycmlk
ZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhk
b3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHJl
c3VtZUFuaW1hdGlvbnMoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN1c3Bl
bmRBbmltYXRpb25zKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3VtZUFuaW1hdGlvbnMoKSBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBG
bG9hdFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSB0aW1lT2Zmc2V0KSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkgb3ZlcnJp
ZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVW
YWx1ZUxpc3QmLCBjb25zdCBGbG9hdFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lKSBvdmVy
cmlkZTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRzTGF5ZXJGb3JNZWRpYSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtTGF5ZXIqIGNvbnRlbnRz
TGF5ZXJGb3JNZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIq
LCBDb250ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzVG9Tb2xpZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihQbGF0
Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gTm9Db250ZW50c0xheWVyOyB9Cisg
ICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29u
dGVudHNMYXllclB1cnBvc2UgIT0gTm9Db250ZW50c0xheWVyOyB9CiAgICAgCi0gICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2hvd1JlcGFpbnRDb3VudGVyKGJv
b2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVy
KGJvb2wpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvd1JlcGFpbnRD
b3VudGVyKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxv
YXQgYm9yZGVyV2lkdGgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RGVi
dWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgp
IG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEN1c3RvbUFw
cGVhcmFuY2UoQ3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRDdXN0b21BcHBlYXJhbmNlKEN1c3RvbUFwcGVhcmFuY2UpIG92ZXJyaWRlOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGV2aWNlT3JQYWdlU2Nh
bGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBwaXhl
bEFsaWdubWVudE9mZnNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGl4ZWxBbGlnbm1l
bnRPZmZzZXQ7IH0KKyAgICBGbG9hdFNpemUgcGl4ZWxBbGlnbm1lbnRPZmZzZXQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3BpeGVsQWxpZ25tZW50T2Zmc2V0OyB9CiAKICAgICBzdHJ1Y3Qg
Q29tbWl0U3RhdGUgewogICAgICAgICBpbnQgdHJlZURlcHRoIHsgMCB9OwpAQCAtMTYyLDYwICsx
NjIsNjAgQEAgcHVibGljOgogICAgIH07CiAgICAgdm9pZCByZWN1cnNpdmVDb21taXRDaGFuZ2Vz
KGNvbnN0IENvbW1pdFN0YXRlJiwgY29uc3QgVHJhbnNmb3JtU3RhdGUmLCBmbG9hdCBwYWdlU2Nh
bGVGYWN0b3IgPSAxLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlID0g
RmxvYXRQb2ludCgpLCBib29sIGFmZmVjdGVkQnlQYWdlU2NhbGUgPSBmYWxzZSk7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZs
b2F0UmVjdCYsIGJvb2wgdmlld3BvcnRJc1N0YWJsZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
Ym9vbCB2aWV3cG9ydElzU3RhYmxlKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmLCBib29sIHZpZXdwb3J0SXNT
dGFibGUpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmx1c2hDb21wb3NpdGlu
Z1N0YXRlRm9yVGhpc0xheWVyT25seShib29sIHZpZXdwb3J0SXNTdGFibGUpIG92ZXJyaWRlOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHZpc2libGVSZWN0Q2hhbmdlUmVxdWly
ZXNGbHVzaChjb25zdCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KSBjb25zdCBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIHZpc2libGVSZWN0Q2hhbmdlUmVxdWlyZXNGbHVzaChjb25z
dCBGbG9hdFJlY3QmIHZpc2libGVSZWN0KSBjb25zdCBvdmVycmlkZTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0
IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lk
IHNldE9wYWNpdHlJbnRlcm5hbChmbG9hdCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRPcGFjaXR5SW50ZXJuYWwoZmxvYXQpIG92ZXJyaWRlOwogICAgIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgYW5pbWF0aW9uQ2FuQmVBY2NlbGVyYXRlZChjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgYm9vbCBpc0dyYXBoaWNzTGF5ZXJDQSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICBib29sIGlzR3JhcGhpY3NMYXllckNBKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQgb3ZlcnJpZGVzCi0gICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXll
clJlc3BvbmRzVG9MYXlvdXRDaGFuZ2VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2b2lkIHBsYXRmb3JtQ0FMYXllckxheW91dFN1YmxheWVyc09mTGF5ZXIoUGxhdGZv
cm1DQUxheWVyKikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJSZXNwb25k
c1RvTGF5b3V0Q2hhbmdlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJDdXN0b21TdWJsYXllcnNDaGFuZ2Vk
KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFydGVkKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uS2V5
LCBDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uRW5kZWQoY29uc3QgU3RyaW5nJiBhbmltYXRp
b25LZXkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29tcG9zaXRpbmdDb29yZGluYXRlc09yaWVu
dGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBjb250ZW50c09yaWVudGF0aW9uKCk7IH0KLSAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNBTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGNsaXApIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVidWdCb3JkZXJzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsgfQotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgcGxhdGZvcm1DQUxh
eWVySW5jcmVtZW50UmVwYWludENvdW50KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlIHsgcmV0
dXJuIGluY3JlbWVudFJlcGFpbnRDb3VudCgpOyB9CisgICAgQ29tcG9zaXRpbmdDb29yZGluYXRl
c09yaWVudGF0aW9uIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3JpZW50YXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBjb250ZW50c09yaWVudGF0aW9uKCk7IH0KKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwg
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBjbGlwKSBvdmVycmlkZTsKKyAgICBi
b29sIHBsYXRmb3JtQ0FMYXllclNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBw
bGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgaW50IHBsYXRmb3JtQ0FMYXllckluY3JlbWVudFJlcGFpbnRDb3VudChQ
bGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZSB7IHJldHVybiBpbmNyZW1lbnRSZXBhaW50Q291bnQo
KTsgfQogCi0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29udGVudHNPcGFxdWUoKTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBkcmF3c0NvbnRlbnQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJMYXll
ckRpZERpc3BsYXkoUGxhdGZvcm1DQUxheWVyKiBsYXllcikgb3ZlcnJpZGUgeyByZXR1cm4gbGF5
ZXJEaWREaXNwbGF5KGxheWVyKTsgfQotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZh
Y3RvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgZmxvYXQg
cGxhdGZvcm1DQUxheWVyQ29udGVudHNTY2FsZU11bHRpcGxpZXJGb3JOZXdUaWxlcyhQbGF0Zm9y
bUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGJv
b2wgcGxhdGZvcm1DQUxheWVyU2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1D
QUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllclNob3VsZFRlbXBvcmFyaWx5UmV0YWluVGlsZUNvaG9ydHMoUGxhdGZv
cm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBi
b29sIHBsYXRmb3JtQ0FMYXllclVzZUdpYW50VGlsZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gY29udGVudHNPcGFxdWUoKTsgfQorICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250
ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZHJhd3NDb250ZW50KCk7IH0KKyAgICB2b2lk
IHBsYXRmb3JtQ0FMYXllckxheWVyRGlkRGlzcGxheShQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyKSBv
dmVycmlkZSB7IHJldHVybiBsYXllckRpZERpc3BsYXkobGF5ZXIpOyB9CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJTZXROZWVkc1RvUmV2YWxpZGF0ZVRpbGVzKCkgb3Zl
cnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgZmxvYXQgcGxhdGZvcm1DQUxheWVyRGV2aWNlU2Nh
bGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBmbG9hdCBwbGF0
Zm9ybUNBTGF5ZXJDb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKFBsYXRmb3JtQ0FM
YXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1D
QUxheWVyU2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoUGxhdGZvcm1DQUxheWVyKikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG91
bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92
ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGxhdGZvcm1DQUxheWVyVXNlR2lhbnRU
aWxlcygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzQ29tbWl0dGluZ0No
YW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzQ29tbWl0dGluZ0NoYW5nZXM7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaXNVc2luZ0Rpc3BsYXlMaXN0RHJhd2luZyhQbGF0Zm9ybUNBTGF5
ZXIqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3VzZXNEaXNwbGF5TGlzdERyYXdpbmc7IH0K
KyAgICBib29sIGlzQ29tbWl0dGluZ0NoYW5nZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2lzQ29tbWl0dGluZ0NoYW5nZXM7IH0KKyAgICBib29sIGlzVXNpbmdEaXNwbGF5TGlzdERyYXdp
bmcoUGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VzRGlzcGxh
eUxpc3REcmF3aW5nOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0SXNW
aWV3cG9ydENvbnN0cmFpbmVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZXdwb3J0Q29uc3RyYWluZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVmlld3BvcnRD
b25zdHJhaW5lZDsgfQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SXNWaWV3cG9ydENvbnN0
cmFpbmVkKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgaXNWaWV3cG9ydENvbnN0cmFpbmVkKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1ZpZXdwb3J0Q29uc3RyYWluZWQ7IH0KIAotICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgU3RyaW5nIGRpc3BsYXlMaXN0QXNUZXh0KERpc3BsYXlM
aXN0OjpBc1RleHRGbGFncykgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIGRpc3BsYXlMaXN0QXNUZXh0KERpc3BsYXlMaXN0OjpBc1RleHRGbGFncykgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0SXNUcmFja2luZ0Rp
c3BsYXlMaXN0UmVwbGF5KGJvb2wpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgU3RyaW5nIHJlcGxheURpc3BsYXlMaXN0QXNUZXh0KERpc3BsYXlMaXN0OjpBc1RleHRGbGFn
cykgY29uc3Qgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJc1RyYWNraW5n
RGlzcGxheUxpc3RSZXBsYXkoYm9vbCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIHJlcGxheURpc3BsYXlMaXN0QXNUZXh0KERpc3BsYXlMaXN0OjpBc1RleHRGbGFncykgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIGRvdWJsZSBiYWNraW5n
U3RvcmVNZW1vcnlFc3RpbWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JU
IGRvdWJsZSBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBib29sIHNob3VsZFJlcGFpbnRPblNpemVDaGFuZ2Uo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZFJlcGFpbnRP
blNpemVDaGFuZ2UoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
bGF5ZXJEaWREaXNwbGF5KFBsYXRmb3JtQ0FMYXllciopOwogCkBAIC0yNzcsMTIgKzI3NywxMiBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVDbGlwcGluZ1N0cmF0ZWd5KFBsYXRmb3JtQ0FM
YXllciYsIFJlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+JiBzaGFwZU1hc2tMYXllciwgY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldFJl
cGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgYm9vbCBjYW5UaHJvdHRsZUxheWVyRmx1c2go
KSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNhblRocm90dGxlTGF5
ZXJGbHVzaCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGdldERlYnVnQm9yZGVySW5mbyhDb2xvciYsIGZsb2F0JiB3aWR0aCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGR1bXBBZGRpdGlvbmFsUHJvcGVy
dGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCwgTGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IpIGNv
bnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0RGVidWdCb3JkZXJJbmZv
KENvbG9yJiwgZmxvYXQmIHdpZHRoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGR1bXBBZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCwg
TGF5ZXJUcmVlQXNUZXh0QmVoYXZpb3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb21w
dXRlUGl4ZWxBbGlnbm1lbnQoZmxvYXQgY29udGVudHNTY2FsZSwgY29uc3QgRmxvYXRQb2ludCYg
cG9zaXRpb25SZWxhdGl2ZVRvQmFzZSwKICAgICAgICAgRmxvYXRQb2ludCYgcG9zaXRpb24sIEZs
b2F0UG9pbnQzRCYgYW5jaG9yUG9pbnQsIEZsb2F0U2l6ZSYgYWxpZ25tZW50T2Zmc2V0KSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29u
dHJvbGxlci5oCmluZGV4IDY2M2Q4N2ExZDA4YjEzZDViMzRjOGIyMTJjY2UzNWEzN2M5ODIyMGEu
Ljg1NDliYWE0YWEyNjgzZjEyODg5MzYxZTMyNzBmN2E3NzAxZGE0YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaApAQCAt
ODQsOCArODQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaWxlRGVi
dWdCb3JkZXJXaWR0aChmbG9hdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRUaWxlRGVi
dWdCb3JkZXJDb2xvcihDb2xvcik7CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCB2aXNpYmxlUmVj
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmlzaWJsZVJlY3Q7IH0KLSAgICB2aXJ0dWFs
IEZsb2F0UmVjdCBjb3ZlcmFnZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvdmVy
YWdlUmVjdDsgfQorICAgIEZsb2F0UmVjdCB2aXNpYmxlUmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fdmlzaWJsZVJlY3Q7IH0KKyAgICBGbG9hdFJlY3QgY292ZXJhZ2VSZWN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb3ZlcmFnZVJlY3Q7IH0KIAogICAgIHVuc2lnbmVkIGJs
YW5rUGl4ZWxDb3VudCgpIGNvbnN0OwogICAgIHN0YXRpYyB1bnNpZ25lZCBibGFua1BpeGVsQ291
bnRGb3JUaWxlcyhjb25zdCBQbGF0Zm9ybUxheWVyTGlzdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IEludFBvaW50Jik7CkBAIC0xMDEsMjMgKzEwMSwyMyBAQCBwdWJsaWM6CiAgICAgZmxvYXQg
dGlsZURlYnVnQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3RpbGVEZWJ1Z0JvcmRlcldp
ZHRoOyB9CiAgICAgU2Nyb2xsaW5nTW9kZUluZGljYXRpb24gaW5kaWNhdG9yTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kaWNhdG9yTW9kZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTdGFy
dExpdmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kTGl2ZVJlc2l6
ZSgpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBJbnRTaXplIHRpbGVTaXplKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgSW50UmVjdCBib3VuZHNXaXRob3V0TWFyZ2luKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGhhc01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzSG9yaXpvbnRhbE1hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzVmVydGljYWxNYXJnaW5zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBp
bnQgdG9wTWFyZ2luSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgYm90
dG9tTWFyZ2luSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgbGVmdE1h
cmdpbldpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgcmlnaHRNYXJnaW5X
aWR0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVGlsZUNvdmVyYWdlIHRpbGVDb3Zl
cmFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdGlsZUNvdmVyYWdlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIGFkanVzdFRpbGVDb3ZlcmFnZVJlY3QoRmxvYXRSZWN0JiBjb3ZlcmFnZVJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgbmV3U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBwcmV2aW91c1Zpc2li
bGVSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGN1cnJlbnRWaXNpYmxlUmVjdCwgZmxvYXQgY29udGVu
dHNTY2FsZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHVucGFyZW50c09mZnNj
cmVlblRpbGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91bnBhcmVudHNPZmZzY3JlZW5U
aWxlczsgfQotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFi
bGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dp
bmdFbmFibGVkOyB9CisgICAgdm9pZCB3aWxsU3RhcnRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRFbmRMaXZlUmVzaXplKCkgb3ZlcnJpZGU7CisKKyAgICBJbnRTaXplIHRpbGVT
aXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBJbnRSZWN0IGJvdW5kc1dpdGhvdXRNYXJnaW4oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGhhc01hcmdpbnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhhc0hvcml6b250
YWxNYXJnaW5zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNWZXJ0aWNhbE1hcmdpbnMo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgdG9wTWFyZ2luSGVpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgaW50IGJvdHRvbU1hcmdpbkhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGlu
dCBsZWZ0TWFyZ2luV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgcmlnaHRNYXJnaW5X
aWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFRpbGVDb3ZlcmFnZSB0aWxlQ292ZXJhZ2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RpbGVDb3ZlcmFnZTsgfQorICAgIHZvaWQgYWRqdXN0
VGlsZUNvdmVyYWdlUmVjdChGbG9hdFJlY3QmIGNvdmVyYWdlUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBuZXdTaXplLCBjb25zdCBGbG9hdFJlY3QmIHByZXZpb3VzVmlzaWJsZVJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgY3VycmVudFZpc2libGVSZWN0LCBmbG9hdCBjb250ZW50c1NjYWxlKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHVucGFyZW50c09mZnNjcmVlblRpbGVzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV91bnBhcmVudHNPZmZzY3JlZW5UaWxlczsgfQorICAgIGJvb2wgc2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZDsgfQogCiAgICAgSW50UmVjdCBib3Vu
ZHNBdExhc3RSZXZhbGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZHNBdExhc3RSZXZhbGlk
YXRlOyB9CiAgICAgSW50UmVjdCBib3VuZHNBdExhc3RSZXZhbGlkYXRlV2l0aG91dE1hcmdpbigp
IGNvbnN0OwpAQCAtMTQzLDMxICsxNDMsMzEgQEAgcHJpdmF0ZToKICAgICBmbG9hdCB0b3BDb250
ZW50SW5zZXQoKSBjb25zdCB7IHJldHVybiBtX3RvcENvbnRlbnRJbnNldDsgfQogCiAgICAgLy8g
VGlsZWRCYWNraW5nIG1lbWJlciBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCB2b2lkIHNldFZpc2li
bGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHRpbGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JikgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yUG9z
aXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRU
b3BDb250ZW50SW5zZXQoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWZWxv
Y2l0eShjb25zdCBWZWxvY2l0eURhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsYWJpbGl0eShTY3JvbGxhYmlsaXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJlcG9wdWxhdGVSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRJc0luV2luZG93KGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRU
aWxlQ292ZXJhZ2UoVGlsZUNvdmVyYWdlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmV2
YWxpZGF0ZVRpbGVzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlR3JpZEV4dGVudCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGJvb2wgZmxhZykgb3ZlcnJpZGUgeyBtX3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2lu
Z0VuYWJsZWQgPSBmbGFnOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFVucGFyZW50c09mZnNjcmVl
blRpbGVzKGJvb2wgZmxhZykgb3ZlcnJpZGUgeyBtX3VucGFyZW50c09mZnNjcmVlblRpbGVzID0g
ZmxhZzsgfQotICAgIHZpcnR1YWwgZG91YmxlIHJldGFpbmVkVGlsZUJhY2tpbmdTdG9yZU1lbW9y
eSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCB0aWxlQ292ZXJhZ2VSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaXNpYmxlUmVjdChjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvdmVyYWdlUmVjdChjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKKyAgICBib29sIHRpbGVzV291bGRDaGFuZ2VGb3JDb3ZlcmFnZVJlY3QoY29u
c3QgRmxvYXRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUaWxlZFNjcm9sbGlu
Z0luZGljYXRvclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFRvcENvbnRlbnRJbnNldChmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWZWxvY2l0
eShjb25zdCBWZWxvY2l0eURhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbGFiaWxp
dHkoU2Nyb2xsYWJpbGl0eSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwb3B1bGF0ZVJlY3QoY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0VGlsZUNvdmVyYWdlKFRpbGVDb3ZlcmFnZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCByZXZhbGlkYXRlVGlsZXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUmVw
YWludCgpIG92ZXJyaWRlOworICAgIEludFJlY3QgdGlsZUdyaWRFeHRlbnQoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFNjcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoYm9v
bCBmbGFnKSBvdmVycmlkZSB7IG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA9
IGZsYWc7IH0KKyAgICB2b2lkIHNldFVucGFyZW50c09mZnNjcmVlblRpbGVzKGJvb2wgZmxhZykg
b3ZlcnJpZGUgeyBtX3VucGFyZW50c09mZnNjcmVlblRpbGVzID0gZmxhZzsgfQorICAgIGRvdWJs
ZSByZXRhaW5lZFRpbGVCYWNraW5nU3RvcmVNZW1vcnkoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJ
bnRSZWN0IHRpbGVDb3ZlcmFnZVJlY3QoKSBjb25zdCBvdmVycmlkZTsKICNpZiBVU0UoQ0EpCi0g
ICAgdmlydHVhbCBQbGF0Zm9ybUNBTGF5ZXIqIHRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yTGF5ZXIo
KSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUNBTGF5ZXIqIHRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9y
TGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxpbmdN
b2RlSW5kaWNhdGlvbihTY3JvbGxpbmdNb2RlSW5kaWNhdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldEhhc01hcmdpbnMoYm9vbCBtYXJnaW5Ub3AsIGJvb2wgbWFyZ2luQm90dG9t
LCBib29sIG1hcmdpbkxlZnQsIGJvb2wgbWFyZ2luUmlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRNYXJnaW5TaXplKGludCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFpvb21lZE91dENvbnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxv
YXQgem9vbWVkT3V0Q29udGVudHNTY2FsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U2Nyb2xsaW5nTW9kZUluZGljYXRpb24oU2Nyb2xsaW5nTW9kZUluZGljYXRpb24pIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0SGFzTWFyZ2lucyhib29sIG1hcmdpblRvcCwgYm9vbCBtYXJnaW5Cb3R0
b20sIGJvb2wgbWFyZ2luTGVmdCwgYm9vbCBtYXJnaW5SaWdodCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRNYXJnaW5TaXplKGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRab29tZWRPdXRDb250
ZW50c1NjYWxlKGZsb2F0KSBvdmVycmlkZTsKKyAgICBmbG9hdCB6b29tZWRPdXRDb250ZW50c1Nj
YWxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZU1hcmdpbnMoKTsKICAgICB2
b2lkIGNsZWFyWm9vbWVkT3V0VGlsZUdyaWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmgKaW5kZXggNjhlNWJiNDJmMDA3
MmVkYTNlOGRkZTU4ZjM2YmZiN2RiZjkzNzQ2My4uMjgyYzNmMDIwZThmYzE4OGM2NDk4MzQ3YTQ2
N2Y5NDY5YzI1YTViZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvVGlsZUNvdmVyYWdlTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvVGlsZUNvdmVyYWdlTWFwLmgKQEAgLTU4LDExICs1OCwxMSBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgLy8gUGxhdGZvcm1DQUxheWVyQ2xpZW50Ci0gICAgdmlydHVhbCBHcmFw
aGljc0xheWVyOjpDb21wb3NpdGluZ0Nvb3JkaW5hdGVzT3JpZW50YXRpb24gcGxhdGZvcm1DQUxh
eWVyQ29udGVudHNPcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyYXBoaWNz
TGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNUb3BEb3duOyB9Ci0gICAgdmlydHVhbCBib29s
IHBsYXRmb3JtQ0FMYXllckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJEcmF3c0NvbnRlbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
Q0FMYXllclBhaW50Q29udGVudHMoUGxhdGZvcm1DQUxheWVyKiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBwbGF0Zm9ybUNB
TGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIEdyYXBoaWNzTGF5
ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNPcmllbnRhdGlvbiBwbGF0Zm9ybUNBTGF5ZXJDb250
ZW50c09yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gR3JhcGhpY3NMYXllcjo6
Q29tcG9zaXRpbmdDb29yZGluYXRlc1RvcERvd247IH0KKyAgICBib29sIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZvaWQgcGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhQbGF0Zm9ybUNB
TGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICBmbG9hdCBwbGF0Zm9ybUNBTGF5ZXJEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlR3JpZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUdyaWQuaAppbmRleCA1N2JhMDg2MzI2NjY0ODM0
MzZlNTM0ODJkZDg2MDk1NWQyYjlkNGI4Li5mYWYyYjgwNjMwOTkyYjVlNWUyODNkYjQ3ZmNmYWM4
MzU1NGNiMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVHcmlkLmgKQEAgLTE0MCwxNCArMTQwLDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVU
aWxlcyhWZWN0b3I8VGlsZUdyaWQ6OlRpbGVJbmRleD4mIHRvUmVtb3ZlKTsKIAogICAgIC8vIFBs
YXRmb3JtQ0FMYXllckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNBTGF5ZXJQYWlu
dENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJTaG93RGVi
dWdCb3JkZXJzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FM
YXllclNob3dSZXBhaW50Q291bnRlcihQbGF0Zm9ybUNBTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGludCBwbGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxh
dGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBsYXRmb3JtQ0FMYXll
ckNvbnRlbnRzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBsYXRm
b3JtQ0FMYXllckRyYXdzQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVXNpbmdEaXNwbGF5TGlzdERyYXdpbmco
UGxhdGZvcm1DQUxheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUNBTGF5
ZXJQYWludENvbnRlbnRzKFBsYXRmb3JtQ0FMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd0RlYnVn
Qm9yZGVycygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyU2hvd1Jl
cGFpbnRDb3VudGVyKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBw
bGF0Zm9ybUNBTGF5ZXJJbmNyZW1lbnRSZXBhaW50Q291bnQoUGxhdGZvcm1DQUxheWVyKikgb3Zl
cnJpZGU7CisgICAgYm9vbCBwbGF0Zm9ybUNBTGF5ZXJDb250ZW50c09wYXF1ZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1VzaW5nRGlzcGxheUxpc3RE
cmF3aW5nKFBsYXRmb3JtQ0FMYXllciopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgVGlsZUNvbnRy
b2xsZXImIG1fY29udHJvbGxlcjsKICAgICBSZWY8UGxhdGZvcm1DQUxheWVyPiBtX2NvbnRhaW5l
ckxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
Y29jb2EvUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAppbmRleCBhZGEz
OGRmYjdiNGRjM2JiZmRjZjYyMGY5YjEzMTViMjZmODkyYTE0Li5iZTQzYTk5NDZhNDg2YTg0MDJk
OWE3MjVkOWI2ZDhhYTdlZTY2MTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBQW5pbWF0aW9u
Q29jb2EuaApAQCAtNTMsNzUgKzUzLDc1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflBsYXRm
b3JtQ0FBbmltYXRpb25Db2NvYSgpOwogCi0gICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUFu
aW1hdGlvbkNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNQbGF0Zm9ybUNBQW5pbWF0aW9uQ29jb2EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29weSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gY29w
eSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUGxhdGZvcm1BbmltYXRpb25SZWYgcGxhdGZvcm1B
bmltYXRpb24oKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIFN0cmluZyBrZXlQYXRoKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGtleVBhdGgoKSBjb25zdCBvdmVycmlkZTsKICAgICAK
LSAgICB2aXJ0dWFsIENGVGltZUludGVydmFsIGJlZ2luVGltZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRCZWdpblRpbWUoQ0ZUaW1lSW50ZXJ2YWwpIG92ZXJyaWRlOwor
ICAgIENGVGltZUludGVydmFsIGJlZ2luVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2V0QmVnaW5UaW1lKENGVGltZUludGVydmFsKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFs
IENGVGltZUludGVydmFsIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldER1cmF0aW9uKENGVGltZUludGVydmFsKSBvdmVycmlkZTsKKyAgICBDRlRpbWVJbnRl
cnZhbCBkdXJhdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0RHVyYXRpb24oQ0ZU
aW1lSW50ZXJ2YWwpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgZmxvYXQgc3BlZWQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3BlZWQoZmxvYXQpIG92ZXJyaWRl
OworICAgIGZsb2F0IHNwZWVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTcGVlZChm
bG9hdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENGVGltZUludGVydmFsIHRpbWVPZmZzZXQo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGltZU9mZnNldChDRlRpbWVJ
bnRlcnZhbCkgb3ZlcnJpZGU7CisgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGltZU9mZnNldChDRlRpbWVJbnRlcnZhbCkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIGZsb2F0IHJlcGVhdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFJlcGVhdENvdW50KGZsb2F0KSBvdmVycmlkZTsKKyAgICBmbG9h
dCByZXBlYXRDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVwZWF0Q291bnQo
ZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGF1dG9yZXZlcnNlcygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvcmV2ZXJzZXMoYm9vbCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBhdXRvcmV2ZXJzZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dEF1dG9yZXZlcnNlcyhib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmlsbE1vZGVUeXBl
IGZpbGxNb2RlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpbGxNb2Rl
KEZpbGxNb2RlVHlwZSkgb3ZlcnJpZGU7CisgICAgRmlsbE1vZGVUeXBlIGZpbGxNb2RlKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaWxsTW9kZShGaWxsTW9kZVR5cGUpIG92ZXJyaWRl
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdG
dW5jdGlvbiosIGJvb2wgcmV2ZXJzZSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRp
bWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiwgYm9vbCByZXZlcnNlID0gZmFsc2Up
IG92ZXJyaWRlOwogICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9y
bUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdmVkT25D
b21wbGV0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlbW92ZWRP
bkNvbXBsZXRpb24oYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlbW92ZWRPbkNvbXBsZXRp
b24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlbW92ZWRPbkNvbXBsZXRpb24oYm9v
bCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNBZGRpdGl2ZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBZGRpdGl2ZShib29sKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzQWRkaXRpdmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFkZGl0aXZlKGJv
b2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0
aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlRnVuY3Rpb24o
VmFsdWVGdW5jdGlvblR5cGUpIG92ZXJyaWRlOworICAgIFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVl
RnVuY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlRnVuY3Rpb24oVmFs
dWVGdW5jdGlvblR5cGUpIG92ZXJyaWRlOwogCiAgICAgLy8gQmFzaWMtYW5pbWF0aW9uIHByb3Bl
cnRpZXMuCi0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3Qg
RmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShj
b25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9t
VmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJ
bmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0
IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRU
b1ZhbHVlKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25z
dCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVy
bmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlU
b1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRGcm9tVmFsdWUoZmxvYXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNv
bnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRG
cm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZy
b21WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9WYWx1ZShmbG9hdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9p
bnQzRCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24q
LCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
cHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBv
aW50M0Q+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29sb3I+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
cyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JiwgaW50IGludGVybmFsRmls
dGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNG
cm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwg
dm9pZCBzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92
ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0
b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYsIGJvb2wgcmV2ZXJzZSA9IGZhbHNlKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZv
cm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZh
bHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYsIGludCBpbnRl
cm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgY29weVZhbHVlc0Zy
b20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRL
ZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5S2V5
VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+
JiwgYm9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZvaWQgY29weVRpbWluZ0Z1
bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiBwcm90
ZWN0ZWQ6CiAgICAgUGxhdGZvcm1DQUFuaW1hdGlvbkNvY29hKEFuaW1hdGlvblR5cGUsIGNvbnN0
IFN0cmluZyYga2V5UGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUxheWVyQ29jb2EuaAppbmRleCAy
NDhhM2U3NTg2MjdkMzZkZGMwZmRkNzBlNDQzNGE5ZTY4NTljMTU1Li43M2EyODE4MmFiMGVlM2E3
MWRhYmM0MWEwMTRhYTBjY2ViMjRlMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9jb2NvYS9QbGF0Zm9ybUNBTGF5ZXJDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FMYXllckNvY29h
LmgKQEAgLTQ0LDEyNCArNDQsMTI0IEBAIHB1YmxpYzoKIAogICAgIH5QbGF0Zm9ybUNBTGF5ZXJD
b2NvYSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE93bmVyKFBsYXRmb3JtQ0FMYXllckNsaWVu
dCopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0T3duZXIoUGxhdGZvcm1DQUxheWVyQ2xpZW50Kikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3Qm
IGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5
UmVjdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weUNvbnRlbnRzRnJvbUxheWVy
KFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgY29weUNvbnRlbnRzRnJvbUxh
eWVyKFBsYXRmb3JtQ0FMYXllciopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQbGF0Zm9ybUNB
TGF5ZXIqIHN1cGVybGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlRnJvbVN1cGVybGF5ZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5
ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQWxsU3VibGF5ZXJzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImLCBzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiByZWZlcmVu
Y2UsIFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgUGxhdGZv
cm1DQUxheWVyTGlzdCogY3VzdG9tU3VibGF5ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9jdXN0b21TdWJsYXllcnMuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRvcHRTdWJsYXll
cnMoUGxhdGZvcm1DQUxheWVyJiBzb3VyY2UpIG92ZXJyaWRlOworICAgIFBsYXRmb3JtQ0FMYXll
ciogc3VwZXJsYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlRnJvbVN1cGVy
bGF5ZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN1YmxheWVycyhjb25zdCBQbGF0Zm9ybUNB
TGF5ZXJMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVBbGxTdWJsYXllcnMoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFwcGVuZFN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRl
OworICAgIHZvaWQgaW5zZXJ0U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJiwgc2l6ZV90IGluZGV4
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcGxhY2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImIHJl
ZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyJikgb3ZlcnJpZGU7CisgICAgY29uc3QgUGxhdGZvcm1D
QUxheWVyTGlzdCogY3VzdG9tU3VibGF5ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9j
dXN0b21TdWJsYXllcnMuZ2V0KCk7IH0KKyAgICB2b2lkIGFkb3B0U3VibGF5ZXJzKFBsYXRmb3Jt
Q0FMYXllciYgc291cmNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRp
b25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYg
a2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gYW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChjb25zdCBTdHJpbmcmIGtleSwgQ0ZUaW1lSW50ZXJ2
YWwgYmVnaW5UaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uRW5kZWQo
Y29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5
KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwor
ICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5KSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoY29uc3Qg
U3RyaW5nJiBrZXksIENGVGltZUludGVydmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dE1hc2soUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNP
cGFxdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IHNldE9wYXF1ZShib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGJvdW5k
cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBGbG9hdFBvaW50M0QgcG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CisgICAg
RmxvYXRQb2ludDNEIHBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRQ
b2ludDNEIGFuY2hvclBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEFuY2hvclBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOworICAgIEZsb2F0UG9p
bnQzRCBhbmNob3JQb2ludCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0QW5jaG9yUG9p
bnQoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdWJsYXllclRyYW5zZm9ybSgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOworICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdWJs
YXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHNldEhpZGRlbihib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEhp
ZGRlbihib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3RvcmVB
dHRhY2hlZChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2luZ1N0b3JlQXR0
YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVk
KGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgYmFja2luZ1N0b3JlQXR0YWNoZWQoKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGJvb2wgZ2VvbWV0cnlGbGlwcGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRHZW9tZXRyeUZsaXBwZWQoYm9vbCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNEb3VibGVTaWRlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXREb3VibGVTaWRlZChib29sKSBvdmVycmlkZTsKKyAgICBib29sIGlz
RG91YmxlU2lkZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJv
b2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSBvdmVycmlk
ZTsKKyAgICBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dE1hc2tzVG9Cb3VuZHMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWNjZWxl
cmF0ZXNEcmF3aW5nKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjY2Vs
ZXJhdGVzRHJhd2luZyhib29sKSBvdmVycmlkZTsKKyAgICBib29sIGFjY2VsZXJhdGVzRHJhd2lu
ZygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsK
KyAgICBDRlR5cGVSZWYgY29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzKENGVHlwZVJlZikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVu
dHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE1p
bmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dE1pbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1h
Z25pZmljYXRpb25GaWx0ZXIoRmlsdGVyVHlwZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENv
bG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEJvcmRlcldp
ZHRoKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJvcmRlcldpZHRoKGZsb2F0KSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Qm9yZGVyQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CisgICAgZmxvYXQgb3Bh
Y2l0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlk
ZTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBmaWx0ZXJzQ2FuQmVDb21wb3NpdGVk
KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weUZpbHRlcnNG
cm9tKGNvbnN0IFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOworICAgIHZvaWQgY29weUZpbHRl
cnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENT
U19DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlKSBvdmVycmlkZTsKICNl
bmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldFNwZWVkKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNwZWVkKGZsb2F0
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUludGVy
dmFsKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJyaWRlOwor
ICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBjb3JuZXJS
YWRpdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29ybmVyUmFkaXVz
KGZsb2F0KSBvdmVycmlkZTsKKyAgICBmbG9hdCBjb3JuZXJSYWRpdXMoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldENvcm5lclJhZGl1cyhmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01hc2sodW5zaWduZWQpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01hc2sodW5zaWduZWQpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUm91bmRlZFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0Jikgb3ZlcnJpZGU7CisgICAgRmxvYXRSb3VuZGVkUmVjdCBzaGFwZVJvdW5kZWRSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGF0aCBzaGFwZVBhdGgo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVQYXRoKGNvbnN0IFBh
dGgmKSBvdmVycmlkZTsKKyAgICBQYXRoIHNoYXBlUGF0aCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgc2V0U2hhcGVQYXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
V2luZFJ1bGUgc2hhcGVXaW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaGFwZVdpbmRSdWxlKFdpbmRSdWxlKSBvdmVycmlkZTsKKyAgICBXaW5kUnVsZSBzaGFw
ZVdpbmRSdWxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaGFwZVdpbmRSdWxlKFdp
bmRSdWxlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBw
ZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0
b21BcHBlYXJhbmNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2Uo
R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NM
YXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9jdXN0b21BcHBlYXJhbmNlOyB9CisgICAgdm9pZCB1cGRhdGVDdXN0b21BcHBl
YXJhbmNlKEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlOworICAgIFRpbGVk
QmFja2luZyogdGlsZWRCYWNraW5nKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8UGxhdGZvcm1DQUxheWVyPiBjbG9uZShQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBj
b25zdCBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmUoUGxh
dGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVDb21wYXRpYmxlTGF5ZXIoUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCopIGNvbnN0IG92ZXJy
aWRlOworICAgIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVDb21wYXRpYmxlTGF5
ZXIoUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBsYXRmb3JtQ0FMYXllckNsaWVudCopIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGVudW1lcmF0ZVJlY3RzQmVpbmdEcmF3
bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbnVtZXJhdGVSZWN0c0JlaW5nRHJhd24oQ0dDb250ZXh0UmVmLCB2b2lkICheYmxvY2spKENH
UmVjdCkpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFBsYXRmb3JtQ0FMYXllckNvY29hKExh
eWVyVHlwZSwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CkBAIC0xNjksNyArMTY5LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tbW9uSW5pdCgpOwogCi0gICAgdmlydHVhbCBib29s
IGlzUGxhdGZvcm1DQUxheWVyQ29jb2EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc1BsYXRmb3JtQ0FMYXllckNvY29hKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCByZXF1aXJlc0N1c3RvbUFwcGVhcmFuY2VVcGRhdGVPbkJv
dW5kc0NoYW5nZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAppbmRl
eCA0OTY1YjgzOWJlNWZhM2Q2ODUwMWRkZTA3ZjI5MTA3ZGFiYzY0ZWM3Li5hYzNmOWJjMTEwNzE4
MzA0OTVjNTJiZThhOWYyZTFhZGIzODQ4ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9u
V2luLmgKQEAgLTQzLDc1ICs0Myw3NSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNQbGF0
Zm9ybUNBQW5pbWF0aW9uV2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBjb3B5KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQbGF0Zm9ybUFuaW1hdGlvblJlZiBwbGF0Zm9ybUFuaW1h
dGlvbigpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIGtleVBhdGgoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBTdHJpbmcga2V5UGF0aCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEJlZ2luVGltZShDRlRpbWVJbnRlcnZhbCkgb3ZlcnJpZGU7CisgICAg
Q0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRC
ZWdpblRpbWUoQ0ZUaW1lSW50ZXJ2YWwpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgQ0ZU
aW1lSW50ZXJ2YWwgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0RHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwpIG92ZXJyaWRlOworICAgIENGVGltZUludGVydmFs
IGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREdXJhdGlvbihDRlRpbWVJ
bnRlcnZhbCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBmbG9hdCBzcGVlZCgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTcGVlZChmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgZmxvYXQgc3BlZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNwZWVkKGZsb2F0
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ0ZUaW1lSW50ZXJ2YWwgdGltZU9mZnNldCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUludGVy
dmFsKSBvdmVycmlkZTsKKyAgICBDRlRpbWVJbnRlcnZhbCB0aW1lT2Zmc2V0KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUludGVydmFsKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgZmxvYXQgcmVwZWF0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVwZWF0Q291bnQoZmxvYXQpIG92ZXJyaWRlOworICAgIGZsb2F0IHJl
cGVhdENvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXBlYXRDb3VudChmbG9h
dCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXV0b3JldmVyc2VzKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF1dG9yZXZlcnNlcyhib29sKSBvdmVycmlkZTsK
KyAgICBib29sIGF1dG9yZXZlcnNlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0QXV0
b3JldmVyc2VzKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBGaWxsTW9kZVR5cGUgZmls
bE1vZGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsbE1vZGUoRmls
bE1vZGVUeXBlKSBvdmVycmlkZTsKKyAgICBGaWxsTW9kZVR5cGUgZmlsbE1vZGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHNldEZpbGxNb2RlKEZpbGxNb2RlVHlwZSkgb3ZlcnJpZGU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0
aW9uKiwgYm9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGltaW5n
RnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qLCBib29sIHJldmVyc2UgPSBmYWxzZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24mKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbW92ZWRPbkNvbXBs
ZXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3ZlZE9uQ29t
cGxldGlvbihib29sKSBvdmVycmlkZTsKKyAgICBib29sIGlzUmVtb3ZlZE9uQ29tcGxldGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0FkZGl0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldEFkZGl0aXZlKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNBZGRpdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0QWRkaXRpdmUoYm9vbCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24o
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVGdW5jdGlvbihWYWx1
ZUZ1bmN0aW9uVHlwZSkgb3ZlcnJpZGU7CisgICAgVmFsdWVGdW5jdGlvblR5cGUgdmFsdWVGdW5j
dGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWVGdW5jdGlvbihWYWx1ZUZ1
bmN0aW9uVHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBCYXNpYy1hbmltYXRpb24gcHJvcGVydGll
cy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBGbG9h
dFBvaW50M0QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1
ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFRvVmFs
dWUoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxG
aWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFs
dWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dEZyb21WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3Qg
V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZy
b21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZyb21W
YWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RnJvbVZh
bHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5k
ZXgpIG92ZXJyaWRlOworICAgIHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1D
QUFuaW1hdGlvbiYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRUb1ZhbHVlKGZsb2F0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNE
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGlu
dCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgY29weVRv
VmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIC8v
IEtleWZyYW1lLWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1
ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQz
RD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb2xvcj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lk
IHNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJp
ZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxj
b25zdCBUaW1pbmdGdW5jdGlvbio+JiwgYm9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNB
QW5pbWF0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZs
b2F0PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlcyhj
b25zdCBWZWN0b3I8RmxvYXRQb2ludDNEPiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmFsdWVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZh
bHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+JiwgaW50IGludGVybmFs
RmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5VmFsdWVzRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldEtleVRp
bWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvcHlLZXlUaW1l
c0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOworCisgICAgdm9pZCBz
ZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW9uKj4mLCBi
b29sIHJldmVyc2UgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rp
b25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKIHByb3RlY3Rl
ZDoKICAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmlu
ZyYga2V5UGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKaW5kZXggZDIwYmJiM2EyOTYwZjI4
Y2JmNWM2OWMyZDA2YTU4MGQyMjIxNDBmYy4uZGIxOWU1NmIwZjVlM2M3M2QwMjVkYmJhNGNiMDc5
NDM4MThmZjgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaApAQCAtMzgsMTI0ICszOCwxMjQg
QEAgcHVibGljOgogICAgIAogICAgIH5QbGF0Zm9ybUNBTGF5ZXJXaW4oKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiBkaXJ0eVJlY3Qp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVj
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBjb3B5Q29udGVudHNGcm9tTGF5ZXIoUGxhdGZvcm1DQUxheWVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb3B5Q29udGVudHNGcm9tTGF5ZXIoUGxhdGZvcm1DQUxheWVyKikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtQ0FMYXllciogc3VwZXJsYXllcigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTdWJsYXllcnMoY29uc3QgUGxhdGZvcm1DQUxh
eWVyTGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxTdWJsYXllcnMo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kU3VibGF5ZXIoUGxhdGZvcm1DQUxh
eWVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydFN1YmxheWVyKFBsYXRmb3Jt
Q0FMYXllciYsIHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcGxh
Y2VTdWJsYXllcihQbGF0Zm9ybUNBTGF5ZXImIHJlZmVyZW5jZSwgUGxhdGZvcm1DQUxheWVyJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0KiBjdXN0b21T
dWJsYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2N1c3RvbVN1YmxheWVycy5nZXQo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNv
dXJjZSkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1DQUxheWVyKiBzdXBlcmxheWVyKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0U3VibGF5ZXJzKGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlbW92ZUFsbFN1YmxheWVycygpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5k
U3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNlcnRTdWJs
YXllcihQbGF0Zm9ybUNBTGF5ZXImLCBzaXplX3QgaW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVwbGFjZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllciYgcmVmZXJlbmNlLCBQbGF0Zm9ybUNBTGF5
ZXImKSBvdmVycmlkZTsKKyAgICBjb25zdCBQbGF0Zm9ybUNBTGF5ZXJMaXN0KiBjdXN0b21TdWJs
YXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2N1c3RvbVN1YmxheWVycy5nZXQoKTsg
fQorICAgIHZvaWQgYWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyJiBzb3VyY2UpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRpb25Gb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25TdGFy
dGVkKGNvbnN0IFN0cmluZyYga2V5LCBDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRpb25FbmRlZChjb25zdCBTdHJpbmcmIGtleSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBs
YXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUFuaW1hdGlvbkZv
cktleShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9y
bUNBQW5pbWF0aW9uPiBhbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRl
OworICAgIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChjb25zdCBTdHJpbmcmIGtleSwgQ0ZUaW1lSW50
ZXJ2YWwgYmVnaW5UaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1hdGlvbkVuZGVkKGNvbnN0
IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrKFBsYXRm
b3JtQ0FMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TWFzayhQbGF0Zm9ybUNBTGF5ZXIq
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c09wYXF1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0T3BhcXVlKGJvb2wpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3QgYm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICBGbG9hdFJlY3QgYm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRCb3VuZHMo
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0UG9pbnQzRCBw
b3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKKyAgICBGbG9hdFBvaW50M0QgcG9zaXRpb24o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQz
RCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBGbG9hdFBvaW50M0QgYW5jaG9yUG9pbnQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxv
YXRQb2ludDNEJikgb3ZlcnJpZGU7CisgICAgRmxvYXRQb2ludDNEIGFuY2hvclBvaW50KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50M0Qm
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
Jikgb3ZlcnJpZGU7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SGlk
ZGVuKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0SGlkZGVuKGJvb2wpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBiYWNraW5nU3RvcmVBdHRhY2hlZCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgc2V0QmFja2luZ1N0b3JlQXR0YWNoZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBiYWNraW5nU3RvcmVBdHRhY2hlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBn
ZW9tZXRyeUZsaXBwZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldEdlb21ldHJ5Rmxp
cHBlZChib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0RvdWJsZVNpZGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNEb3VibGVTaWRlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgc2V0RG91YmxlU2lkZWQoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbWFz
a3NUb0JvdW5kcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrc1Rv
Qm91bmRzKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wpIG92ZXJyaWRlOworICAgIGJv
b2wgYWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBY2Nl
bGVyYXRlc0RyYXdpbmcoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENGVHlwZVJlZiBj
b250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50cyhD
RlR5cGVSZWYpIG92ZXJyaWRlOworICAgIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBlUmVmKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRNYWduaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKEZpbHRlclR5cGUpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0TWFnbmlmaWNhdGlvbkZpbHRlcihGaWx0ZXJUeXBlKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpIG92ZXJy
aWRlOworICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Qm9yZGVyV2lkdGgoZmxvYXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Qm9y
ZGVyV2lkdGgoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEJvcmRlckNv
bG9yKGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRCb3JkZXJDb2xvcihjb25z
dCBDb2xvciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIG92ZXJyaWRlOwor
ICAgIGZsb2F0IG9wYWNpdHkoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldE9wYWNpdHko
ZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlsdGVycyhjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CiAgICAgc3RhdGljIGJvb2wgZmlsdGVyc0NhbkJlQ29t
cG9zaXRlZChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgY29weUZpbHRlcnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FMYXllciYpIG92ZXJy
aWRlOworICAgIHZvaWQgY29weUZpbHRlcnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FMYXllciYpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCB2b2lkIHNldFNwZWVkKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNwZWVkKGZs
b2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGltZUlu
dGVydmFsKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJyaWRl
OworICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dENvbnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBjb3Ju
ZXJSYWRpdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29ybmVyUmFk
aXVzKGZsb2F0KSBvdmVycmlkZTsKKyAgICBmbG9hdCBjb3JuZXJSYWRpdXMoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldENvcm5lclJhZGl1cyhmbG9hdCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIEZsb2F0Um91bmRlZFJlY3Qgc2hhcGVSb3VuZGVkUmVjdCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRl
ZFJlY3QmKSBvdmVycmlkZTsKKyAgICBGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUm91bmRlZFJlY3Qo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNoYXBlUm91bmRlZFJlY3QoY29uc3QgRmxv
YXRSb3VuZGVkUmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXRoIHNoYXBlUGF0aCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVBhdGgoY29uc3QgUGF0
aCYpIG92ZXJyaWRlOworICAgIFBhdGggc2hhcGVQYXRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTaGFwZVBhdGgoY29uc3QgUGF0aCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBX
aW5kUnVsZSBzaGFwZVdpbmRSdWxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFNoYXBlV2luZFJ1bGUoV2luZFJ1bGUpIG92ZXJyaWRlOworICAgIFdpbmRSdWxlIHNoYXBl
V2luZFJ1bGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNoYXBlV2luZFJ1bGUoV2lu
ZFJ1bGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEVkZ2VBbnRpYWxpYXNpbmdN
YXNrKHVuc2lnbmVkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEVkZ2VBbnRpYWxpYXNpbmdNYXNr
KHVuc2lnbmVkKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllcjo6Q3VzdG9t
QXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9j
dXN0b21BcHBlYXJhbmNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFu
Y2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKSBvdmVy
cmlkZSB7IG1fY3VzdG9tQXBwZWFyYW5jZSA9IGN1c3RvbUFwcGVhcmFuY2U7IH0KKyAgICBHcmFw
aGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlIGN1c3RvbUFwcGVhcmFuY2UoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2N1c3RvbUFwcGVhcmFuY2U7IH0KKyAgICB2b2lkIHVwZGF0ZUN1c3Rv
bUFwcGVhcmFuY2UoR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJh
bmNlKSBvdmVycmlkZSB7IG1fY3VzdG9tQXBwZWFyYW5jZSA9IGN1c3RvbUFwcGVhcmFuY2U7IH0K
IAotICAgIHZpcnR1YWwgVGlsZWRCYWNraW5nKiB0aWxlZEJhY2tpbmcoKSBvdmVycmlkZTsKKyAg
ICBUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1
YWwgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNMYXlvdXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNDb21taXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHRBdFBvaW50
KENHQ29udGV4dFJlZiwgQ0dGbG9hdCB4LCBDR0Zsb2F0IHksIENHU2l6ZSBzY2FsZSwgQ0dGbG9h
dCBmb250U2l6ZSwgY29uc3QgY2hhciogdGV4dCwgc2l6ZV90IGxlbmd0aCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgUGxhdGZvcm1DQUxheWVyKiByb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldE5lZWRzTGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc0NvbW1p
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1RleHRBdFBvaW50KENHQ29udGV4dFJlZiwgQ0dG
bG9hdCB4LCBDR0Zsb2F0IHksIENHU2l6ZSBzY2FsZSwgQ0dGbG9hdCBmb250U2l6ZSwgY29uc3Qg
Y2hhciogdGV4dCwgc2l6ZV90IGxlbmd0aCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IFN0cmluZyBsYXllclRyZWVBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBs
YXllclRyZWVBc1N0cmluZygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPFBsYXRmb3JtQ0FMYXllcj4gY2xvbmUoUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNsb25lKFBs
YXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlQ29tcGF0aWJsZUxheWVyKFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlQ29tcGF0aWJsZUxh
eWVyKFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNBTGF5ZXJXaW4oTGF5ZXJU
eXBlLCBQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vV0tDQUNGVmll
d0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDlmMjMzYzRjYjYzYTIwZjE3MzA0N2Zh
YjhmYjQ0ZGE3ZGNkN2ZkMTEuLjJkMTZhNzZmN2NhNWNlYzQ2NzU2OTA2NmYzZmU2NjNhODU3NmY5
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9X
S0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9XS0NBQ0ZWaWV3TGF5ZXJUcmVlSG9zdC5oCkBAIC01NCw3ICs1NCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBDRlRpbWVJbnRlcnZhbCBsYXN0Q29tbWl0VGltZSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCk7CiAjaWYg
VVNFKEFWRk9VTkRBVElPTikKLSAgICB2aXJ0dWFsIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3Jh
cGhpY3NEZXZpY2VBZGFwdGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgUmV0YWluUHRyPFdLQ0FDRlZpZXdSZWY+IG1fdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IDU0MTc1
NjA0ZWIzNDhhMzVmOGY5OWM2ZDdlZjcxMDJkNTViNWVlZjguLjFmZjU1YTkzMzU3YjBkNzBmMDBi
Nzg0MmY3NWFlNGJlZDRmOWQ0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcApAQCAtMjIzLDE0ICsyMjMsMTQgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlVG9OZXh0VmFsaWRHbHlwaCgpOwogICAgIH0KIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBib29sIGNvbnRhaW5zTW9yZVBhdGhzKCkgb3ZlcnJpZGUKKyAgICBib29sIGNv
bnRhaW5zTW9yZVBhdGhzKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luZGV4
ICE9IG1fZ2x5cGhCdWZmZXIuc2l6ZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIFBhdGggcGF0aCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZXh0ZW50cygp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgR2x5cGhVbmRlcmxpbmVUeXBlIHVuZGVybGluZVR5cGUo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZSgpIG92ZXJyaWRlOworICAgIFBh
dGggcGF0aCgpIG92ZXJyaWRlOworICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGV4dGVudHMo
KSBvdmVycmlkZTsKKyAgICBHbHlwaFVuZGVybGluZVR5cGUgdW5kZXJsaW5lVHlwZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgYWR2YW5jZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbW92ZVRvTmV4dFZh
bGlkR2x5cGgoKTsKIAogICAgIGludCBtX2luZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgK
aW5kZXggODMyZTQwZDQ4ZjZmMWZhYTAzZjVhOGIxN2RjMzU1ZDg0OTFiZGI5ZS4uNDczZTM1Y2Y3
NWMzZGYyYTc2NjY2MzQ5ZWQzNmQyZTM5ODZkYjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWly
by5oCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZUNhaXJvR0xTdXJm
YWNlKCk7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgdmly
dHVhbCBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXJQcm94eS5jb3B5UmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOworICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllclByb3h5LmNvcHlSZWYoKTsgfQorICAgIHZvaWQgc3dh
cEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY3JlYXRlQ29tcG9zaXRvckJ1
ZmZlcigpOwogCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IG1f
cGxhdGZvcm1MYXllclByb3h5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvUERGRG9jdW1lbnRJbWFnZS5oCmluZGV4IDlhNGMxZTllMGI1MWUzOWQ1MGE0
NGIxOWI5MTU1NWJkOWIwNTY5NzMuLjJmOGEzZTYxNThkOTQxOGRmODMzOGI5NDU1ZmI5ZjFiNDZm
NWVkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BE
RkRvY3VtZW50SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9QREZEb2N1bWVudEltYWdlLmgKQEAgLTU2LDI1ICs1NiwyNSBAQCBwcml2YXRlOgogICAgIFBE
RkRvY3VtZW50SW1hZ2UoSW1hZ2VPYnNlcnZlciopOwogICAgIHZpcnR1YWwgflBERkRvY3VtZW50
SW1hZ2UoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1BERkRvY3VtZW50SW1hZ2UoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1BERkRvY3VtZW50SW1hZ2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBmaWxl
bmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBmaWxlbmFtZUV4dGVu
c2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFz
U2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlOworICAgIGJvb2wgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFs
bCovID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAv
KmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50
cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJp
bnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CisgICAgRmxv
YXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3KEdy
YXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBGbG9hdFJlY3QmIGRzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVy
cmlkZTsKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBiZSBsZXNzIGNvbnNlcnZh
dGl2ZS4KLSAgICB2aXJ0dWFsIGJvb2wgY3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZHVt
cChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0m
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlUERGRG9jdW1lbnQoKTsKICAgICB2
b2lkIGNvbXB1dGVCb3VuZHNGb3JDdXJyZW50UGFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29jb2EubW0KaW5k
ZXggYmNlOGUzZmY5ZDQ5NTE1Y2JiNjA0OWI4OGU1Mzc4MTVlYzg4MDczMi4uMjU5NWExYzIyYThj
OGFmMmFmZWExYTIxMTM3YTYzYWI2OGQ3MzdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29hLm1tCkBAIC00
MjksMTQgKzQyOSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmVUb05leHRWYWxpZEdseXBoKCk7
CiAgICAgfQogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNNb3JlUGF0aHMoKSBv
dmVycmlkZQorICAgIGJvb2wgY29udGFpbnNNb3JlUGF0aHMoKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG1faW5kZXggIT0gbV9nbHlwaEJ1ZmZlci5zaXplKCk7CiAgICAgfQotICAg
IHZpcnR1YWwgUGF0aCBwYXRoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0PiBleHRlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBHbHlwaFVuZGVybGlu
ZVR5cGUgdW5kZXJsaW5lVHlwZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNl
KCkgb3ZlcnJpZGU7CisgICAgUGF0aCBwYXRoKCkgb3ZlcnJpZGU7CisgICAgc3RkOjpwYWlyPGZs
b2F0LCBmbG9hdD4gZXh0ZW50cygpIG92ZXJyaWRlOworICAgIEdseXBoVW5kZXJsaW5lVHlwZSB1
bmRlcmxpbmVUeXBlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZHZhbmNlKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBtb3ZlVG9OZXh0VmFsaWRHbHlwaCgpOwogCiAgICAgaW50IG1faW5kZXg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA2YzA3ZjYzNWVhMzA4YjNhZjUzYjUzODE1
YmFkMTJiZjdmMjE1YmI5Li41YTg0OTY0YzU3OWIzMmZkYzBlYzZlZjE0NWY2NDI2MGYxMzVhZmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTE5Nyw3ICsxOTcsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBzaXplX3QgbV9yZXN0b3JlSW5kZXggeyAwIH07
CiB9OwpAQCAtMjE1LDcgKzIxNSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogY2xhc3Mg
VHJhbnNsYXRlIDogcHVibGljIEl0ZW0gewpAQCAtMjM2LDcgKzIzNiw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgZmxvYXQgbV94OwogICAgIGZsb2F0IG1feTsKQEAgLTI1OCw3ICsyNTgs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1fYW5nbGU7IC8vIEluIHJhZGlh
bnMuCiB9OwpAQCAtMjc5LDcgKzI3OSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxv
YXRTaXplIG1fc2l6ZTsKIH07CkBAIC0yOTYsNyArMjk2LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBDb25jYXRlbmF0ZUNUTShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQWZmaW5lVHJh
bnNmb3JtIG1fdHJhbnNmb3JtOwogfTsKQEAgLTMyNCw3ICszMjQsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGU7CiB9OwpAQCAt
MzQ1LDcgKzM0NSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGluZUNhcCBtX2xpbmVD
YXA7CiB9OwpAQCAtMzY4LDcgKzM2OCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRGFz
aEFycmF5IG1fZGFzaEFycmF5OwogICAgIGZsb2F0IG1fZGFzaE9mZnNldDsKQEAgLTM5MCw3ICsz
OTAsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExpbmVKb2luIG1fbGluZUpvaW47CiB9
OwpAQCAtNDExLDcgKzQxMSw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZmxvYXQgbV9t
aXRlckxpbWl0OwogfTsKQEAgLTQyOSw3ICs0MjksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIH07
CiAKIC8vIEZJWE1FOiB0cmVhdCBhcyBEcmF3aW5nSXRlbT8KQEAgLTQ0OSw3ICs0NDksNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiB9OwpAQCAtNDcwLDcg
KzQ3MCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07
CkBAIC00OTEsNyArNDkxLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBQYXRo
IG1fcGF0aDsKIH07CkBAIC01MTQsNyArNTE0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBjb25zdCBQYXRoIG1fcGF0aDsKICAgICBXaW5kUnVsZSBtX3dpbmRSdWxlOwpAQCAtNTQxLDkg
KzU0MSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVCb3VuZHMoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBHbHlwaEJ1ZmZlciBn
ZW5lcmF0ZUdseXBoQnVmZmVyKCkgY29uc3Q7CiAKQEAgLTU3MCw5ICs1NzAsOSBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIERyYXdJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyYpOwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogCiAgICAgbXV0YWJs
ZSBSZWY8SW1hZ2U+IG1faW1hZ2U7IC8vIEZJWE1FOiBEcmF3aW5nIGltYWdlcyBjYW4gY2F1c2Ug
dGhlaXIgYW5pbWF0aW9ucyB0byBwcm9ncmVzcy4gVGhpcyBzaG91bGRuJ3QgaGF2ZSB0byBiZSBt
dXRhYmxlLgogICAgIEZsb2F0UmVjdCBtX2Rlc3RpbmF0aW9uOwpAQCAtNTk3LDkgKzU5Nyw5IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFBvaW50JiBzb3VyY2UsIGNvbnN0IEZsb2F0
U2l6ZSYgdGlsZVNpemUsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWlu
dGluZ09wdGlvbnMmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGlu
YXRpb247IH0KKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAog
ICAgIG11dGFibGUgUmVmPEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFnZXMg
Y2FuIGNhdXNlIHRoZWlyIGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhh
dmUgdG8gYmUgbXV0YWJsZS4KICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKQEAgLTYyMyw5
ICs2MjMsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIERyYXdUaWxlZFNjYWxlZEltYWdlKElt
YWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2UsIGNvbnN0IEZsb2F0U2l6ZSYgdGlsZVNjYWxlRmFjdG9yLCBJbWFnZTo6VGlsZVJ1bGUgaFJ1
bGUsIEltYWdlOjpUaWxlUnVsZSB2UnVsZSwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KKyAgICBP
cHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGVzdGluYXRpb247IH0KIAogICAgIG11dGFibGUgUmVm
PEltYWdlPiBtX2ltYWdlOyAvLyBGSVhNRTogRHJhd2luZyBpbWFnZXMgY2FuIGNhdXNlIHRoZWly
IGFuaW1hdGlvbnMgdG8gcHJvZ3Jlc3MuIFRoaXMgc2hvdWxkbid0IGhhdmUgdG8gYmUgbXV0YWJs
ZS4KICAgICBGbG9hdFJlY3QgbV9kZXN0aW5hdGlvbjsKQEAgLTY1MCw5ICs2NTAsOSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIERyYXdOYXRpdmVJbWFnZShQYXNzTmF0aXZlSW1hZ2VQdHIsIGNv
bnN0IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VP
cmllbnRhdGlvbik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0Jikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhj
b25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0
aW9uOyB9CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICNp
ZiBVU0UoQ0cpCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1faW1hZ2VQdHI7CkBAIC02ODUs
OSArNjg1LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9Cisg
ICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAKICAgICBtdXRhYmxl
IFJlZjxJbWFnZT4gbV9pbWFnZTsgLy8gRklYTUU6IERyYXdpbmcgaW1hZ2VzIGNhbiBjYXVzZSB0
aGVpciBhbmltYXRpb25zIHRvIHByb2dyZXNzLiBUaGlzIHNob3VsZG4ndCBoYXZlIHRvIGJlIG11
dGFibGUuCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0dGVyblRyYW5zZm9ybTsKQEAgLTcxNiw3
ICs3MTYsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1fb3BhY2l0eTsKIH07
CkBAIC03MzQsNyArNzM0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBEcmF3
UmVjdCA6IHB1YmxpYyBEcmF3aW5nSXRlbSB7CkBAIC03NTUsOCArNzU1LDggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9y
ZWN0OwogICAgIGZsb2F0IG1fYm9yZGVyVGhpY2tuZXNzOwpAQCAtNzgwLDggKzc4MCw4IEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4g
bG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50MTsKICAgICBGbG9hdFBvaW50IG1fcG9p
bnQyOwpAQCAtODE0LDkgKzgxNCw5IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29u
c3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFBvaW50IG1f
YmxvY2tMb2NhdGlvbjsKICAgICBGbG9hdFNpemUgbV9sb2NhbEFuY2hvcjsKQEAgLTg0NSw5ICs4
NDUsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRS
ZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50OwogICAgIGZsb2F0
IG1fd2lkdGg7CkBAIC04NzAsOCArODcwLDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KKyAgICB2b2lkIGFw
cGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogfTsKQEAgLTg5Miw5
ICs4OTIsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CisgICAgT3B0aW9uYWw8Rmxv
YXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5kaW5nUmVjdCgpOyB9CiAKICAgICBjb25zdCBQYXRo
IG1fcGF0aDsKIH07CkBAIC05MjEsOSArOTIxLDkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGNvbnN0
IFBhdGggbV9wYXRoOwogICAgIGludCBtX3dpZHRoOwpAQCAtOTUzLDkgKzk1Myw5IEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBWZWN0b3I8RmxvYXRSZWN0PiBtX3JlY3RzOwogICAgIGludCBtX3dpZHRo
OwpAQCAtOTc5LDggKzk3OSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjdDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKIH07CkBAIC0xMDA0LDggKzEwMDQs
OCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9h
dFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcmVjdDsgfQorICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JlY3Q7IH0KIAogICAg
IEZsb2F0UmVjdCBtX3JlY3Q7CiAgICAgQ29sb3IgbV9jb2xvcjsKQEAgLTEwMjgsOCArMTAyOCw4
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0
UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9yZWN0OyB9CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdy
YXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVjdDsgfQogCiAgICAg
RmxvYXRSZWN0IG1fcmVjdDsKICAgICBtdXRhYmxlIFJlZjxHcmFkaWVudD4gbV9ncmFkaWVudDsg
Ly8gRklYTUU6IE1ha2UgdGhpcyBub3QgbXV0YWJsZQpAQCAtMTA1Nyw4ICsxMDU3LDggQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBs
b2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JlY3Q7IH0KKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3ND
b250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJl
Y3QgbV9yZWN0OwogICAgIENvbG9yIG1fY29sb3I7CkBAIC0xMDg2LDggKzEwODYsOCBAQCBwcml2
YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjdC5yZWN0KCk7IH0KKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0LnJlY3QoKTsgfQog
CiAgICAgRmxvYXRSb3VuZGVkUmVjdCBtX3JlY3Q7CiAgICAgQ29sb3IgbV9jb2xvcjsKQEAgLTEx
MTQsOCArMTExNCw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9w
dGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CisgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91
bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVj
dDsgfQogCiAgICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBGbG9hdFJvdW5kZWRSZWN0IG1fcm91
bmRlZEhvbGVSZWN0OwpAQCAtMTEzOCw4ICsxMTM4LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBH
cmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhdGguZmFzdEJvdW5k
aW5nUmVjdCgpOyB9CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGF0aC5mYXN0Qm91bmRpbmdSZWN0
KCk7IH0KIAogICAgIGNvbnN0IFBhdGggbV9wYXRoOwogfTsKQEAgLTExNjAsOSArMTE2MCw5IEBA
IHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxv
Y2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcmVjdDsgfQorICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3Jh
cGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBG
bG9hdFJlY3QgbV9yZWN0OwogfTsKQEAgLTExODUsOCArMTE4NSw4IEBAIHByaXZhdGU6CiAgICAg
ewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMo
Y29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShH
cmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+
IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgRmxvYXRSZWN0IG1fcmVjdDsKICAgICBmbG9hdCBtX2xpbmVXaWR0aDsKQEAgLTEyMDgsOCAr
MTIwOCw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFs
PEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgY29uc3QgUGF0aCBtX3BhdGg7CiAgICAgRmxvYXRQ
b2ludCBtX2Jsb2NrTG9jYXRpb247CkBAIC0xMjMxLDggKzEyMzEsOCBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRz
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHko
R3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8RmxvYXRSZWN0
PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIEZsb2F0UmVjdCBtX3JlY3Q7CiB9OwpAQCAtMTI1Myw4ICsxMjUzLDggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJv
dW5kcyhjb25zdCBHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Jl
Y3Q7IH0KKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZWN0OyB9CiAKICAgICBGbG9hdFJlY3QgbV9y
ZWN0OwogfTsKQEAgLTEyNzMsNyArMTI3Myw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAog
Y2xhc3MgQXBwbHlGaWxsUGF0dGVybiA6IHB1YmxpYyBJdGVtIHsKQEAgLTEyODksNyArMTI4OSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShHcmFw
aGljc0NvbnRleHQmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0IG92ZXJyaWRlOwogfTsKICNlbmRpZgogCkBAIC0xMzA5LDcgKzEzMDksNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGZsb2F0IG1fc2NhbGVGYWN0b3I7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDU3ODliZjkyYjQxY2IxYTI1MzdjMGU2ZDYw
NjYyZTgyZmIzMWFlM2YuLmRjYjdkMDBjNTYyNjJjMTBmYThhMjI4MzExNWFiNTE4MzQwNmRkZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTM2LDExICszNiwxMSBAQCBwdWJs
aWM6CiAKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0M0QoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRleHRMb3N0Q2FsbGJhY2soc3RkOjp1bmlx
dWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0TG9zdENhbGxiYWNrPik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNpemUoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgZ3JhcGhpY3NT
dXJmYWNlRmxhZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICBJbnRTaXplIHBsYXRmb3JtTGF5ZXJTaXpl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkg
b3ZlcnJpZGU7CisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIGdyYXBoaWNzU3Vy
ZmFjZUZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZXNpemVDYW52YXMoY29u
c3QgSW50U2l6ZSYpOwogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFu
dExpZ2h0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0Rpc3RhbnRMaWdodFNvdXJjZS5oCmluZGV4IDk1NGY3MTQ4MzYwNWFkNTRjOTJhZGU5ZTZiYzdm
Yzk2ZDg4YzQ3NGYuLjkxOWY5MTM2NjNkMzYwYjVkNmRlZTNlMWMwYjQxMDRmYWIxYjgwYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFu
dExpZ2h0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaApAQCAtMzcsMTMgKzM3LDEzIEBAIHB1YmxpYzoKICAg
ICBmbG9hdCBhemltdXRoKCkgY29uc3QgeyByZXR1cm4gbV9hemltdXRoOyB9CiAgICAgZmxvYXQg
ZWxldmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb247IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBzZXRBemltdXRoKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RWxl
dmF0aW9uKGZsb2F0KSBvdmVycmlkZTsKKyAgICBib29sIHNldEF6aW11dGgoZmxvYXQpIG92ZXJy
aWRlOworICAgIGJvb2wgc2V0RWxldmF0aW9uKGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBpbml0UGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5
LCBmbG9hdCB6KSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRQYWludGluZ0RhdGEoUGFpbnRpbmdE
YXRhJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRh
JiwgaW50IHgsIGludCB5LCBmbG9hdCB6KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgVGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgRGlzdGFudExpZ2h0U291cmNlKGZsb2F0IGF6
aW11dGgsIGZsb2F0IGVsZXZhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAppbmRleCA1ZjUyMTY2ZjJlYWJiYmM2
NTYzNjY5ZTdiOWJkYzA4ZGFmNDhjODVmLi5mNTE1ZTk1MDBiZGM3MDM2MDllY2JiOGU2NGVlZTFk
ZWY1NGJjY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCkBAIC01OSwxNyArNTksMTcgQEAgcHVibGljOgogICAg
IGZsb2F0IGs0KCkgY29uc3Q7CiAgICAgYm9vbCBzZXRLNChmbG9hdCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgY29ycmVjdEZpbHRlclJlc3VsdElmTmVlZGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVt
cCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkdW1wKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRldGVy
bWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
LCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgYm9vbCByZXF1aXJlc1ZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpIG92ZXJyaWRlIHsgcmV0
dXJuIG1fdHlwZSAhPSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CisgICAgYm9v
bCByZXF1aXJlc1ZhbGlkUHJlTXVsdGlwbGllZFBpeGVscygpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
dHlwZSAhPSBGRUNPTVBPU0lURV9PUEVSQVRPUl9BUklUSE1FVElDOyB9CiAKIHByaXZhdGU6CiAg
ICAgRkVDb21wb3NpdGUoRmlsdGVyJiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuaAppbmRleCAx
NjRmMmMyNWM1ZGEzYmQ4NjMxMTY5NTNhYzc4ZDFlODM2NjM3MDI2Li5mOWFmYmFlMWE4OWU1M2Rk
ZDIxMzJlYmJjNzU4NDAwZmI4YzU1ZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5oCkBAIC01
MCwxNCArNTAsMTQgQEAgcHVibGljOgogICAgIGJvb2wgc2V0U2NhbGUoZmxvYXQpOwogCiAgICAg
dm9pZCBzZXRSZXN1bHRDb2xvclNwYWNlKENvbG9yU3BhY2UpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVmZmVjdCosIGNvbnN0IGlu
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0cmFuc2Zvcm1SZXN1bHRDb2xvclNwYWNlKEZpbHRlckVm
ZmVjdCosIGNvbnN0IGludCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1B
cHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGR1bXAoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHVtcCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRlUGFp
bnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0
KG1heEVmZmVjdFJlY3QoKSkpOyB9CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChtYXhF
ZmZlY3RSZWN0KCkpKTsgfQogCi0gICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50aW9uKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mLCBpbnQgaW5k
ZW50aW9uKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBGRURpc3BsYWNlbWVudE1h
cChGaWx0ZXImLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0b3IsIENoYW5uZWxT
ZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaAppbmRleCA2MjM1NDFmZTgz
OWZlYTQwYzlmNjM5ZTY5Yjg2Mzk2ZjM0M2EyMWE4Li42MmY5MmZhNGZjOTUwOWQ4NTRjYjMyZWNk
NzBjZTU0OWExYmIyNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuaApAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZSkgb3ZlcnJpZGUgeyBGaWx0ZXJFZmZl
Y3Q6OnNldFJlc3VsdENvbG9yU3BhY2UoQ29sb3JTcGFjZVNSR0IpOyB9CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkdW1wKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFp
bnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KKyAgICB2b2lkIGRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVj
dChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKLSAgICB2aXJ0dWFsIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRp
b24pIGNvbnN0IG92ZXJyaWRlOworICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIEZFRmxvb2QoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uaAppbmRleCAwMWE1OGMwZjJmM2VlYzlhNDg0YzY3NmVmZTRlM2MwYTVhMDQ4MmNmLi5k
YzNiZjg4MTIxZGNiZTY4NmZiYzZkNTc2YmVlYTA4YTNlNmE0NTYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0
aW9uLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92
ZXJyaWRlCisgICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGVmYXVsdEZpbHRlck9w
ZXJhdGlvbihyZXByZXNlbnRlZFR5cGUoKSkpOwogICAgIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCBw
dWJsaWM6CiAgICAgT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3JlcHJlc2VudGVkVHlwZTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IERlZmF1bHRGaWx0ZXJPcGVyYXRpb24oT3BlcmF0aW9uVHlwZSByZXByZXNlbnRlZFR5cGUpCiAg
ICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKERFRkFVTFQpCkBAIC0xNDYsMTMgKzE0NiwxMyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGFzc3Rocm91Z2hGaWx0ZXJPcGVy
YXRpb24oKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQorICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9u
PiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uKCkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0
IG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykg
Y29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBpc1NhbWVUeXBlKG8pOwogICAg
IH0KQEAgLTE3MSwxNSArMTcxLDE1IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+UmVm
ZXJlbmNlRmlsdGVyT3BlcmF0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8vIFJlZmVy
ZW5jZSBmaWx0ZXJzIGNhbm5vdCBiZSBjbG9uZWQuCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
YWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCBib29sIG1vdmVzUGl4ZWxzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICBj
b25zdCBTdHJpbmcmIGZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQpAQCAt
MTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUmVmZXJlbmNlRmlsdGVyT3Bl
cmF0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50KTsKIAotICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJpbmcgbV9mcmFnbWVudDsK
QEAgLTIxMCwxNyArMjEwLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCwgdHlwZSkpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYXNpY0NvbG9yTWF0
cml4RmlsdGVyT3BlcmF0aW9uKGFtb3VudCgpLCB0eXBlKCkpKTsKICAgICB9CiAKICAgICBkb3Vi
bGUgYW1vdW50KCkgY29uc3QgeyByZXR1cm4gbV9hbW91bnQ7IH0KIAotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJv
bSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVy
cmlkZTsKKyAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdo
ID0gZmFsc2UpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGRv
dWJsZSBwYXNzdGhyb3VnaEFtb3VudCgpIGNvbnN0OwogCkBAIC0yNDEsMTkgKzI0MSwxOSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2Zl
ckZpbHRlck9wZXJhdGlvbihhbW91bnQsIHR5cGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUGFz
c1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbihhbW91bnQoKSwgdHlwZSgpKSk7CiAgICAgfQogCiAgICAgZG91YmxlIGFtb3VudCgp
IGNvbnN0IHsgcmV0dXJuIG1fYW1vdW50OyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWZmZWN0c09w
YWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gT1BBQ0lUWTsgfQorICAg
IGJvb2wgYWZmZWN0c09wYWNpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0g
T1BBQ0lUWTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxl
bmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8RmlsdGVy
T3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlv
biYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZG91YmxlIHBhc3N0aHJvdWdoQW1vdW50KCkgY29u
c3Q7CiAKQEAgLTI3MywyMCArMjczLDIwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKFdURk1vdmUoc3RkRGV2aWF0aW9uKSkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29u
c3Qgb3ZlcnJpZGUKKyAgICBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gY2xvbmUoKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBCbHVyRmlsdGVy
T3BlcmF0aW9uKHN0ZERldmlhdGlvbigpKSk7CiAgICAgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBz
dGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0ZERldmlhdGlvbjsgfQogCi0gICAgdmly
dHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgYm9vbCBtb3Zlc1BpeGVscygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgbW92ZXNQaXhlbHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZChjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxGaWx0ZXJP
cGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZhbHNlKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBCbHVyRmlsdGVyT3BlcmF0aW9uKExlbmd0aCBzdGRE
ZXZpYXRpb24pCiAgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKEJMVVIpCkBAIC0zMDQsNyArMzA0
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24obG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IpKTsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9w
ZXJhdGlvbihsb2NhdGlvbigpLCBzdGREZXZpYXRpb24oKSwgY29sb3IoKSkpOwogICAgIH0KQEAg
LTMxNSwxMyArMzE1LDEzIEBAIHB1YmxpYzoKICAgICBpbnQgc3RkRGV2aWF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGREZXZpYXRpb247IH0KICAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3I7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhZmZlY3RzT3BhY2l0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbW92ZXNQaXhlbHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBhZmZlY3RzT3BhY2l0
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIG1vdmVzUGl4ZWxz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoID0gZmFsc2UpIG92ZXJyaWRl
OworICAgIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0ZXJPcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91Z2ggPSBm
YWxzZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbihjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGludCBzdGREZXZp
YXRpb24sIENvbG9yIGNvbG9yKQogICAgICAgICA6IEZpbHRlck9wZXJhdGlvbihEUk9QX1NIQURP
VykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
UG9pbnRMaWdodFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Qb2ludExpZ2h0U291cmNlLmgKaW5kZXggYzA4OTdmMzhlNTAzNWMwOTA2M2M3ZDMxYThh
ZWFmYjk5MDI2ZWE1NC4uY2IyMDQ0NjY3ZTc3MWM0ZGUwOTdmODc1YTk3YzI1MjZlNDI0Mzc2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2lu
dExpZ2h0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Qb2ludExpZ2h0U291cmNlLmgKQEAgLTM1LDE0ICszNSwxNCBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgY29uc3QgRmxvYXRQb2ludDNEJiBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
cG9zaXRpb247IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2V0WChmbG9hdCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHNldFkoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRa
KGZsb2F0KSBvdmVycmlkZTsKKyAgICBib29sIHNldFgoZmxvYXQpIG92ZXJyaWRlOworICAgIGJv
b2wgc2V0WShmbG9hdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRaKGZsb2F0KSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBpbml0UGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiwg
aW50IHgsIGludCB5LCBmbG9hdCB6KSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRQYWludGluZ0Rh
dGEoUGFpbnRpbmdEYXRhJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEo
UGFpbnRpbmdEYXRhJiwgaW50IHgsIGludCB5LCBmbG9hdCB6KSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgUG9pbnRMaWdodFNvdXJj
ZShjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmgKaW5kZXgg
Y2E3ZDFhNDUwOWU4MTA3ZDEyN2Q3OGQyZTZhZjM2MjUwYjY1ZDA1Mi4uZGRhZTcyODY1NDc2ODhh
YTRhN2IyZjNjNDAxYjg1Mjk1ZDdiNjQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oCkBAIC00MCwy
MCArNDAsMjAgQEAgcHVibGljOgogICAgIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQoKSBjb25zdCB7
IHJldHVybiBtX3NwZWN1bGFyRXhwb25lbnQ7IH0KICAgICBmbG9hdCBsaW1pdGluZ0NvbmVBbmds
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRpbmdDb25lQW5nbGU7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBzZXRYKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0WShmbG9hdCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNldFooZmxvYXQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBzZXRQb2ludHNBdFgoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzZXRQb2ludHNBdFkoZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRQb2lu
dHNBdFooZmxvYXQpIG92ZXJyaWRlOworICAgIGJvb2wgc2V0WChmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzZXRZKGZsb2F0KSBvdmVycmlkZTsKKyAgICBib29sIHNldFooZmxvYXQpIG92ZXJy
aWRlOworICAgIGJvb2wgc2V0UG9pbnRzQXRYKGZsb2F0KSBvdmVycmlkZTsKKyAgICBib29sIHNl
dFBvaW50c0F0WShmbG9hdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRQb2ludHNBdFooZmxvYXQp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNldFNwZWN1bGFyRXhwb25lbnQoZmxvYXQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRMaW1pdGluZ0NvbmVBbmdsZShmbG9hdCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0KSBvdmVycmlkZTsK
KyAgICBib29sIHNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBpbml0UGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiwgaW50IHgsIGlu
dCB5LCBmbG9hdCB6KSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRQYWludGluZ0RhdGEoUGFpbnRp
bmdEYXRhJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdE
YXRhJiwgaW50IHgsIGludCB5LCBmbG9hdCB6KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikg
Y29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU3BvdExpZ2h0U291cmNlKGNvbnN0IEZs
b2F0UG9pbnQzRCYgcG9zaXRpb24sIGNvbnN0IEZsb2F0UG9pbnQzRCYgZGlyZWN0aW9uLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlv
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCAxNzc1YjIwMjEy
NWEyYTEzNzg1OGY4NjgyMWVlMWNkN2M4MjdiZGE2Li43ODMyNzFkNjJlNzQ3ZmI5YzFjMWVkNjc0
YjVhMDliN2U0MmY5NTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaApAQCAtNDEsMTUgKzQxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcihwbGF5YmluLCBpbmRleCwgcGFkKSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpc2Nvbm5lY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVk
KGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVk
KSBvdmVycmlkZSB7IHNldEVuYWJsZWQoZW5hYmxlZCk7IH0KKyAgICB2b2lkIHNldEVuYWJsZWQo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBvdmVycmlk
ZSB7IHNldEVuYWJsZWQoZW5hYmxlZCk7IH0KIAotICAgIHZpcnR1YWwgaW50IHRyYWNrSW5kZXgo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAgaW50IHRyYWNrSW5kZXgo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CiAKLSAgICB2aXJ0dWFsIEF0b21p
Y1N0cmluZyBsYWJlbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICB2
aXJ0dWFsIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
bGFuZ3VhZ2U7IH0KKyAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xhYmVsOyB9CisgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogCiBwcml2YXRlOgogICAgIEF1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyKEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1Jl
ZlB0cjxHc3RQYWQ+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA3NDMwZTNmMDAwMWNiY2ZjY2Y3MjEy
ZDUwY2RjMjAzYTY5ZDllYTM3Li5mNjY2YmViYzJiN2Y0MzJhYmM1NmZiODg2Yzg5OTc2Zjc5YTM1
NGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZE1ldGFkYXRhVGV4dFRy
YWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00Miw5ICs0Miw5IEBAIHB1YmxpYzoKIAogICAgIH5J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIoKSB7IH0KIAotICAgIHZpcnR1
YWwgS2luZCBraW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgdmly
dHVhbCBBdG9taWNTdHJpbmcgaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lkOyB9Ci0g
ICAgdmlydHVhbCBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlw
ZTsgfQorICAgIEtpbmQga2luZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fa2luZDsgfQor
ICAgIEF0b21pY1N0cmluZyBpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KKyAg
ICBBdG9taWNTdHJpbmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsgfQogICAg
IHZvaWQgc2V0SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZShjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKSB7IG1faW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSA9IHZhbHVlOyB9
CiAKICAgICB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDhlYjhi
ODI3ZDNiNThmYzIxZmM3MWZiZmZlYjBjNDQ0Yjk1ZWU4NmUuLmNjM2E2ZjBlOWZjMjQ4ZDFlZDdh
MGZjYmI3ZTIxYjc2ODMzZGQxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRU
cmFja1ByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyKGlu
ZGV4LCBwYWQpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBBdG9t
aWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVsOyB9Ci0gICAg
dmlydHVhbCBBdG9taWNTdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X2xhbmd1YWdlOyB9CisgICAgQXRvbWljU3RyaW5nIGxhYmVsKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9sYWJlbDsgfQorICAgIEF0b21pY1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KIAotICAgIHZpcnR1YWwgaW50IHRyYWNrSW5kZXgo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAgaW50IHRyYWNrSW5kZXgo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2luZGV4OyB9CiAgICAgU3RyaW5nIHN0cmVhbUlk
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJlYW1JZDsgfQogCiAgICAgdm9pZCBoYW5kbGVTYW1wbGUo
R1JlZlB0cjxHc3RTYW1wbGU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZS5oCmluZGV4IGY1ZWEyMWQzNGFiYzcwZDIyNDIxMjk1Zjc0NGU2MmE0
MDZjNDIzMDEuLjRjMWNkNDc5MDY0NGJjZjE2YzZmMGM2NTNmZjg1NmU4NzIwZTIyZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAt
NjQsNjIgKzY0LDYyIEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UgOiBw
dWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSgpOwogCi0gICAgdmlydHVhbCBGbG9hdFNp
emUgbmF0dXJhbFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUgbmF0dXJhbFNp
emUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWb2x1bWUoZmxvYXQp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGZsb2F0IHZvbHVtZSgpIGNvbnN0OwogCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBi
b29sIGVuc3VyZUdzdEdMQ29udGV4dCgpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgc3Vw
cG9ydHNNdXRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNNdXRpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzZXRNdXRlZChib29s
KSBvdmVycmlkZTsKICAgICBib29sIG11dGVkKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIE1lZGlh
UGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3JrU3RhdGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSBvdmVycmlkZSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgc2V0U2l6ZShj
b25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzaXplQ2hhbmdlZCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNTaW5nbGVTZWN1
cml0eU9yaWdpbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGZsb2F0IG1heFRpbWVMb2FkZWQoKSBjb25zdCB7IHJldHVybiAwLjA7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1NZWRpYSBw
bGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIE1lZGlhUGxheWVy
OjpNb3ZpZUxvYWRUeXBlIG1vdmllTG9hZFR5cGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBNZWRp
YVBsYXllcjo6TW92aWVMb2FkVHlwZSBtb3ZpZUxvYWRUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCBib29sIGlzTGl2ZVN0cmVhbSgpIGNvbnN0ID0gMDsKIAogICAgIE1lZGlhUGxh
eWVyKiBtZWRpYVBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9CiAKLSAgICB2aXJ0
dWFsIHVuc2lnbmVkIGRlY29kZWRGcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB1bnNpZ25lZCBkcm9wcGVkRnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdW5zaWduZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICB1bnNpZ25lZCBkZWNvZGVkRnJhbWVDb3VudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHVuc2lnbmVkIGRyb3BwZWRGcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWdu
ZWQgYXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQg
dmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgdmlydHVhbCBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29u
c3RfY2FzdDxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKj4odGhpcyk7IH0KKyAgICBQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29u
c3RfY2FzdDxNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKj4odGhpcyk7IH0KICNpZiBQ
TEFURk9STShXSU5fQ0FJUk8pCiAgICAgLy8gRklYTUU6IEFjY2VsZXJhdGVkIHJlbmRlcmluZyBo
YXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIFdpbkNhaXJvIHlldC4KLSAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbHNlCi0gICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKQotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZSo+KHRoaXMpOyB9Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNj
ZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
UGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNv
bnN0X2Nhc3Q8TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSo+KHRoaXMpOyB9CisgICAg
Ym9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogI2VuZGlmCiAKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQotICAgIHZpcnR1YWwg
UGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSBvdmVycmlkZTsK
KyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKQEAgLTE4NCw4ICsxODQsOCBAQCBwcm90ZWN0ZWQ6
CiAjZW5kaWYKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLSAgICB2
aXJ0dWFsIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllclByb3h5LmNvcHlSZWYoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVkKCkgb3ZlcnJpZGUgeyB9OworICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllclByb3h5LmNvcHlSZWYoKTsgfQorICAgIHZv
aWQgc3dhcEJ1ZmZlcnNJZk5lZWRlZCgpIG92ZXJyaWRlIHsgfTsKICAgICB2b2lkIHB1c2hUZXh0
dXJlVG9Db21wb3NpdG9yKCk7CiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHk+IG1fcGxhdGZvcm1MYXllclByb3h5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGIyMTYyMjFlMDMzZjYxZmZjMWRkMTQxOTlj
NjMzNTZmMDhjNDMzMjQuLjQxYzQ3ZmU1MWRmNjA0M2I3N2E2NTdiYzhiZjQ5YmJhZmMyZmY2M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00MSwx
NSArNDEsMTUgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyKHBsYXliaW4sIGluZGV4LCBwYWQpKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzY29ubmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzY29ubmVjdCgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IHNl
dFNlbGVjdGVkKGVuYWJsZWQpOyB9CisgICAgdm9pZCBzZXRTZWxlY3RlZChib29sKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldEFjdGl2ZShib29sIGVuYWJsZWQpIG92ZXJyaWRlIHsgc2V0U2VsZWN0
ZWQoZW5hYmxlZCk7IH0KIAotICAgIHZpcnR1YWwgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2luZGV4OyB9CisgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2luZGV4OyB9CiAKLSAgICB2aXJ0dWFsIEF0b21pY1N0cmluZyBsYWJl
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFiZWw7IH0KLSAgICB2aXJ0dWFsIEF0b21p
Y1N0cmluZyBsYW5ndWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0K
KyAgICBBdG9taWNTdHJpbmcgbGFiZWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xhYmVs
OyB9CisgICAgQXRvbWljU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9sYW5ndWFnZTsgfQogCiBwcml2YXRlOgogICAgIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVy
KEdSZWZQdHI8R3N0RWxlbWVudD4gcGxheWJpbiwgZ2ludCBpbmRleCwgR1JlZlB0cjxHc3RQYWQ+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggY2Zi
MzhiNzFkMjhhN2NkYmZmYTdjODA2ZjcwM2MwMTE5ZjI3NDIzZi4uM2M1NTQ3NDA4ZDM5MDZkYzIw
YjRmMDFiMGJhZjMzYzRhM2EzZDM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKQEAgLTcxLDEzICs3MSwxMyBAQCBjbGFzcyBDYWNoZWRSZXNvdXJjZVN0
cmVhbWluZ0NsaWVudCBmaW5hbCA6IHB1YmxpYyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VDbGllbnQs
CiAgICAgcHJpdmF0ZToKICAgICAgICAgLy8gUGxhdGZvcm1NZWRpYVJlc291cmNlQ2xpZW50IHZp
cnR1YWwgbWV0aG9kcy4KICNpZiBVU0UoU09VUCkKLSAgICAgICAgdmlydHVhbCBjaGFyKiBnZXRP
ckNyZWF0ZVJlYWRCdWZmZXIoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgc2l6ZV90IHJlcXVlc3Rl
ZFNpemUsIHNpemVfdCYgYWN0dWFsU2l6ZSkgb3ZlcnJpZGU7CisgICAgICAgIGNoYXIqIGdldE9y
Q3JlYXRlUmVhZEJ1ZmZlcihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBzaXplX3QgcmVxdWVzdGVk
U2l6ZSwgc2l6ZV90JiBhY3R1YWxTaXplKSBvdmVycmlkZTsKICNlbmRpZgotICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVzcG9uc2VSZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkYXRhUmVj
ZWl2ZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgY2hhciosIGludCkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NDb250cm9sQ2hlY2tGYWlsZWQoUGxhdGZvcm1N
ZWRpYVJlc291cmNlJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQo
UGxhdGZvcm1NZWRpYVJlc291cmNlJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgcmVzcG9uc2VS
ZWNlaXZlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGF0YVJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXNvdXJjZUVycm9y
Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgbG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmLCBjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgbG9hZEZp
bmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpIG92ZXJyaWRlOwogfTsKIAogY2xhc3MgUmVz
b3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQs
IHB1YmxpYyBTdHJlYW1pbmdDbGllbnQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9uaXRvcklPUy5oCmlu
ZGV4IGJmYzBkYjQ1MzY4NGUxZmE3ZTIxZTYzYjI5NGFmMjAwYzU4NGFkNWIuLjBlMDc0MDg4OGVi
YWE5ZjRkOTZmMzJiNzVjYTZmYTA3MjEwNDgzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9EaXNwbGF5UmVmcmVzaE1vbml0b3JJT1MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3MvRGlzcGxheVJlZnJlc2hNb25pdG9y
SU9TLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkRpc3BsYXlSZWZy
ZXNoTW9uaXRvcklPUygpOwogCiAgICAgdm9pZCBkaXNwbGF5TGlua0ZpcmVkKGRvdWJsZSBub3dT
ZWNvbmRzKTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJy
aWRlOworICAgIGJvb2wgcmVxdWVzdFJlZnJlc2hDYWxsYmFjaygpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IERpc3BsYXlSZWZyZXNoTW9uaXRvcklPUyhQbGF0Zm9ybURpc3Bs
YXlJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9pb3Mv
VGV4dFRyYWNrUmVwcmVzZW50YXRpb25JT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5oCmluZGV4IDA4NGEwMTEyNDM5
MDE1YmQwOGMzNzAzZDA2YTNmMWU0ZGVhNTdhZjguLjA3NWI2ZmI0NWMyZWJiNjc4MDQwYmU2MDEw
ZDc3NzRhMTNmZDczMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2lvcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2lvcy9UZXh0VHJhY2tSZXByZXNlbnRhdGlvbklPUy5oCkBAIC00
MywxMiArNDMsMTIgQEAgcHVibGljOgogCiAgICAgVGV4dFRyYWNrUmVwcmVzZW50YXRpb25DbGll
bnQmIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyLmdl
dCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJvdW5kcygpIGNvbnN0IG92ZXJyaWRlOworICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBvdmVycmlkZSB7IHJldHVybiBtX2xheWVy
LmdldCgpOyB9CisgICAgSW50UmVjdCBib3VuZHMoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRTY2FsZShmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGUoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRTY2FsZShmbG9hdCkgb3ZlcnJpZGU7CiAKICAgICBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNsaWVudCYgbV9jbGllbnQ7CiAgICAgUmV0YWluUHRyPENB
TGF5ZXI+IG1fbGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvRGlzcGxheVJlZnJlc2hNb25pdG9yTWFjLmgKaW5kZXggNzg3OTVm
OThhZDc3MjU3ZWI3ZWNkNDFkN2NhMTYxODNhNGU0NDAzNC4uMTE1YzRiMjE4NzljZmNiOWRmNmQ1
OTQ3NTk4M2Y4NGVjNzlmZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0Rpc3BsYXlSZWZyZXNoTW9uaXRvck1hYy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9EaXNwbGF5UmVmcmVzaE1vbml0b3JNYWMuaApAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RGlzcGxheVJlZnJlc2hNb25pdG9y
TWFjKCk7CiAKICAgICB2b2lkIGRpc3BsYXlMaW5rRmlyZWQoZG91YmxlIG5vd1NlY29uZHMsIGRv
dWJsZSBvdXRwdXRUaW1lU2Vjb25kcyk7Ci0gICAgdmlydHVhbCBib29sIHJlcXVlc3RSZWZyZXNo
Q2FsbGJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEaXNwbGF5UmVmcmVzaE1vbml0b3JN
YWMoUGxhdGZvcm1EaXNwbGF5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAppbmRleCBh
ZGRhNzc5NDA2MWVlNmU4NTExZDI4YzEzZmRmZDA2ZjgzODc2ZjkzLi5mMzczZmY4NTU5NjM3Mzk5
YmNlZDRhM2QyYTg0Mjg0NDZlMTljMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaApA
QCAtODAsMTEgKzgwLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHN1
cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1NjYW5uaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
c3VwcG9ydHNTY2FubmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAK
ICAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiwgTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkKGNvbnN0IFN0cmlu
ZyYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCopIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKICAgICB2b2lkIGxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikgb3Zl
cnJpZGUgeyB9CkBAIC0xMDAsMTIgKzEwMCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgcGF1c2Vk
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzZWVraW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCi0gICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb25NZWRpYVRpbWUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlZWsoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7
CisgICAgTWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
TWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNl
ZWsoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBzZXRSYXRlKGZs
b2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSByYXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZG91YmxlIHJhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFZvbHVtZShm
bG9hdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmVzZXJ2ZXNQaXRjaChib29sKSBvdmVycmlk
ZTsKIApAQCAtMTI1LDExICsxMjUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFZpc2libGUo
Ym9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlk
ZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgaGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlRm9yUmVuZGVyaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJlRm9yUmVuZGVy
aW5nKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGFjY2VsZXJhdGVkUmVuZGVyaW5nU3RhdGVDaGFu
Z2VkKCkgb3ZlcnJpZGU7CkBAIC0xMzcsNyArMTM3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTWVkaWFQbGF5ZXI6
Ok1vdmllTG9hZFR5cGUgbW92aWVMb2FkVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNh
blNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgY3JlYXRlUVRNb3Zp
ZShjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCBjcmVhdGVRVE1vdmllKE5TVVJMICosIE5T
RGljdGlvbmFyeSAqbW92aWVBdHRyaWJ1dGVzKTsKQEAgLTE3MCwxOSArMTcwLDE5IEBAIHByaXZh
dGU6CiAKICAgICBib29sIGlzUmVhZHlGb3JWaWRlb1NldHVwKCkgY29uc3Q7CiAKLSAgICB2aXJ0
dWFsIGRvdWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gNTsgfQorICAgIGRvdWJsZSBtYXhpbXVtRHVyYXRpb25Ub0NhY2hlTWVkaWFU
aW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gNTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNl
dFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcml2YXRl
QnJvd3NpbmdNb2RlKGJvb2wpIG92ZXJyaWRlOwogICAgIAogICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkqIGNvbW1vbk1vdmllQXR0cmlidXRlcygpOwogCi0gICAgdmlydHVhbCBTdHJpbmcgZW5naW5l
RGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUVRLaXQiOyB9Ci0gICAgdmly
dHVhbCBsb25nIHBsYXRmb3JtRXJyb3JDb2RlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlFUS2l0IjsgfQor
ICAgIGxvbmcgcGxhdGZvcm1FcnJvckNvZGUoKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJM
RShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCi0gICAgdmlydHVhbCBib29sIGlzQ3VycmVudFBs
YXliYWNrVGFyZ2V0V2lyZWxlc3MoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJv
b2wpIG92ZXJyaWRlOworICAgIGJvb2wgaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcygp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0V2lyZWxlc3NQbGF5YmFja1RhcmdldChSZWY8
TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChib29sKSBvdmVycmlkZTsKICAgICBib29sIHdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HTFRyYW5zcG9ydFN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5oCmluZGV4IGRjY2M2NWI0N2M3ODY3NTczYzQ0
ZjQwZDhmNTk4NjUyODE5MGM4NTIuLjU4YmYzNmU3N2I5ZjlkODVlZmRjZTAwMmZkNWZlNzcxNTk4
ZWZkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZh
Y2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dMVHJhbnNwb3J0U3VyZmFjZS5oCkBAIC0zOCw5ICszOCw5IEBAIHB1
YmxpYzoKICAgICAvLyBDcmVhdGVzIGEgR0wgc3VyZmFjZSB3aG9zZSByZXN1bHRzIGNhbiBiZSB0
cmFuc3BvcnRlZCB0byB0aGUgVUkgcHJvY2VzcyBmb3IgZGlzcGxheS4KICAgICBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPEdMVHJhbnNwb3J0U3VyZmFjZT4gY3JlYXRlVHJhbnNwb3J0U3VyZmFjZShj
b25zdCBJbnRTaXplJiwgU3VyZmFjZUF0dHJpYnV0ZXMgPSBHTFBsYXRmb3JtU3VyZmFjZTo6RGVm
YXVsdCk7CiAgICAgdmlydHVhbCB+R0xUcmFuc3BvcnRTdXJmYWNlKCk7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHVpbnQzMl90KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB1
aW50MzJfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAg
ICBHTFRyYW5zcG9ydFN1cmZhY2UoY29uc3QgSW50U2l6ZSYsIFN1cmZhY2VBdHRyaWJ1dGVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2Vn
bC9FR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZ2wvRUdMQ29udGV4dC5oCmluZGV4IDY4Y2JlODljMWM1MDVkNjNkMTc4NjlkNTZhNzliNGRj
ZDMwMTVmYWMuLmU0ZWMyOGFiZDgxNDY2NTY2Y2M3NTAyNDNkYTE5MDU4NWIzMTgzZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTENvbnRleHQuaApAQCAtMzcsMTEgKzM3LDExIEBAIGNsYXNzIEVHTE9mZlNjcmVlbkNv
bnRleHQgOiBwdWJsaWMgR0xQbGF0Zm9ybUNvbnRleHQgewogcHVibGljOgogICAgIEVHTE9mZlNj
cmVlbkNvbnRleHQoKTsKICAgICB2aXJ0dWFsIH5FR0xPZmZTY3JlZW5Db250ZXh0KCk7Ci0gICAg
dmlydHVhbCBib29sIGluaXRpYWxpemUoR0xQbGF0Zm9ybVN1cmZhY2UqLCBQbGF0Zm9ybUNvbnRl
eHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybU1ha2VDdXJyZW50KEdMUGxh
dGZvcm1TdXJmYWNlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtUmVsZWFz
ZUN1cnJlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc0N1cnJlbnRDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpbml0aWFsaXplKEdMUGxhdGZvcm1TdXJmYWNlKiwgUGxhdGZvcm1Db250ZXh0KSBv
dmVycmlkZTsKKyAgICBib29sIHBsYXRmb3JtTWFrZUN1cnJlbnQoR0xQbGF0Zm9ybVN1cmZhY2Uq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtUmVsZWFzZUN1cnJlbnQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICBib29sIGlzQ3VycmVudENvbnRleHQo
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZyZWVSZXNvdXJjZXMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2Vn
bC9FR0xTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9lZ2wvRUdMU3VyZmFjZS5oCmluZGV4IDc1NjAwNGU2NTMxNzViMjA2ZDBhOTMyOTBjNzJhYjk4
YTc0NDI3ZjYuLmFlYWRiNzY2OTZhY2FhYTNlOThiMWRkYTcyZGZlNmE1MjdlOTYyZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VnbC9FR0xT
dXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
ZWdsL0VHTFN1cmZhY2UuaApAQCAtNDEsMTAgKzQxLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
c3RkOjp1bmlxdWVfcHRyPEdMVHJhbnNwb3J0U3VyZmFjZT4gY3JlYXRlVHJhbnNwb3J0U3VyZmFj
ZShjb25zdCBJbnRTaXplJiwgU3VyZmFjZUF0dHJpYnV0ZXMpOwogICAgIHN0YXRpYyBzdGQ6OnVu
aXF1ZV9wdHI8R0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50PiBjcmVhdGVUcmFuc3BvcnRTdXJmYWNl
Q2xpZW50KGNvbnN0IFBsYXRmb3JtQnVmZmVySGFuZGxlLCBjb25zdCBJbnRTaXplJiwgYm9vbCk7
CiAgICAgdmlydHVhbCB+RUdMVHJhbnNwb3J0U3VyZmFjZSgpOwotICAgIHZpcnR1YWwgUGxhdGZv
cm1TdXJmYWNlQ29uZmlnIGNvbmZpZ3VyYXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgR0xQbGF0Zm9ybVN1cmZhY2U6OlN1
cmZhY2VBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNDdXJyZW50RHJhd2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVN1
cmZhY2VDb25maWcgY29uZmlndXJhdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveSgp
IG92ZXJyaWRlOworICAgIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXJmYWNlQXR0cmlidXRlcyBhdHRy
aWJ1dGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0N1cnJlbnREcmF3YWJsZSgpIGNv
bnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgRUdMVHJhbnNwb3J0U3VyZmFjZShjb25z
dCBJbnRTaXplJiwgU3VyZmFjZUF0dHJpYnV0ZXMpOwpAQCAtNTUsMTAgKzU1LDEwIEBAIGNsYXNz
IEVHTE9mZlNjcmVlblN1cmZhY2UgOiBwdWJsaWMgR0xQbGF0Zm9ybVN1cmZhY2UgewogcHVibGlj
OgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8R0xQbGF0Zm9ybVN1cmZhY2U+IGNyZWF0ZU9m
ZlNjcmVlblN1cmZhY2UoU3VyZmFjZUF0dHJpYnV0ZXMpOwogICAgIHZpcnR1YWwgfkVHTE9mZlNj
cmVlblN1cmZhY2UoKTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBjb25maWd1
cmF0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQ3VycmVudERyYXdhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1TdXJmYWNlQ29uZmlnIGNvbmZpZ3VyYXRp
b24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICBHTFBsYXRm
b3JtU3VyZmFjZTo6U3VyZmFjZUF0dHJpYnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNDdXJyZW50RHJhd2FibGUoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIEVHTE9mZlNjcmVlblN1cmZhY2UoU3VyZmFjZUF0dHJpYnV0ZXMpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWdsL0VHTFhT
dXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wv
RUdMWFN1cmZhY2UuaAppbmRleCBiNDIxZTE3ZmI3NjFiOGNhZDU0ZjkyMTdkN2FjNmVjOGQ1ZmQ1
YWUzLi4yNjAwZWNmZDJlMjNmMjg3YjViNzZkMDJiZDYyMTBiMzJhNTljMDU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wvRUdMWFN1cmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZ2wv
RUdMWFN1cmZhY2UuaApAQCAtNDEsMTUgKzQxLDE1IEBAIGNsYXNzIEVHTFdpbmRvd1RyYW5zcG9y
dFN1cmZhY2UgOiBwdWJsaWMgRUdMVHJhbnNwb3J0U3VyZmFjZSB7CiBwdWJsaWM6CiAgICAgRUdM
V2luZG93VHJhbnNwb3J0U3VyZmFjZShjb25zdCBJbnRTaXplJiwgR0xQbGF0Zm9ybVN1cmZhY2U6
OlN1cmZhY2VBdHRyaWJ1dGVzKTsKICAgICB2aXJ0dWFsIH5FR0xXaW5kb3dUcmFuc3BvcnRTdXJm
YWNlKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7CiB9OwogCiBjbGFzcyBFR0xQaXht
YXBTdXJmYWNlIDogcHVibGljIEVHTE9mZlNjcmVlblN1cmZhY2UgewogcHVibGljOgogICAgIEVH
TFBpeG1hcFN1cmZhY2UoR0xQbGF0Zm9ybVN1cmZhY2U6OlN1cmZhY2VBdHRyaWJ1dGVzKTsKICAg
ICB2aXJ0dWFsIH5FR0xQaXhtYXBTdXJmYWNlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3ko
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKIH07CiAKIGNsYXNzIEVH
TFRleHR1cmVGcm9tUGl4bWFwIHsKQEAgLTcwLDggKzcwLDggQEAgY2xhc3MgRUdMWFRyYW5zcG9y
dFN1cmZhY2VDbGllbnQgOiBwdWJsaWMgR0xUcmFuc3BvcnRTdXJmYWNlQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBFR0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudChjb25zdCBQbGF0Zm9ybUJ1ZmZlckhh
bmRsZSwgY29uc3QgSW50U2l6ZSYsIGJvb2wpOwogICAgIHZpcnR1YWwgfkVHTFhUcmFuc3BvcnRT
dXJmYWNlQ2xpZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUZXh0dXJlKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICB2b2lkIHByZXBh
cmVUZXh0dXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgWFVuaXF1ZVB0cjxYSW1hZ2U+IG1faW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQu
aAppbmRleCA5NWU5NjkyMzlkNDAyYjMyMjc1NzA2NWZkMGEzZTk4ODExYzIxN2VmLi5kZDkwODUx
MWE5YzRjMWZhMDhiZjcwNWY2ZDQzYTc4YjRmOGIwZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhDb250ZXh0LmgK
QEAgLTM3LDExICszNywxMSBAQCBjbGFzcyBHTFhPZmZTY3JlZW5Db250ZXh0IDogcHVibGljIEdM
UGxhdGZvcm1Db250ZXh0IHsKIHB1YmxpYzoKICAgICBHTFhPZmZTY3JlZW5Db250ZXh0KCk7CiAg
ICAgdmlydHVhbCB+R0xYT2ZmU2NyZWVuQ29udGV4dCgpOwotICAgIHZpcnR1YWwgYm9vbCBpbml0
aWFsaXplKEdMUGxhdGZvcm1TdXJmYWNlKiwgUGxhdGZvcm1Db250ZXh0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1NYWtlQ3VycmVudChHTFBsYXRmb3JtU3VyZmFjZSopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVJlbGVhc2VDdXJyZW50KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNDdXJyZW50Q29udGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaW5pdGlhbGl6
ZShHTFBsYXRmb3JtU3VyZmFjZSosIFBsYXRmb3JtQ29udGV4dCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBwbGF0Zm9ybU1ha2VDdXJyZW50KEdMUGxhdGZvcm1TdXJmYWNlKikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwbGF0Zm9ybVJlbGVhc2VDdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0N1cnJlbnRDb250ZXh0KCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBmcmVlUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2Uu
aAppbmRleCA3MmY4MWFjNzc0NDYxOGE2NzUwZjhkY2VkMmZmMDZkNTJjYWJhMDM0Li4wOTJkOWVm
NDI3ZGM4ZTJhODcyMjUwMGRjNmEwNTZjNWE2ZDg3MTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmgK
QEAgLTM5LDEyICszOSwxMiBAQCBjbGFzcyBHTFhUcmFuc3BvcnRTdXJmYWNlIDogcHVibGljIEdM
VHJhbnNwb3J0U3VyZmFjZSB7CiBwdWJsaWM6CiAgICAgR0xYVHJhbnNwb3J0U3VyZmFjZShjb25z
dCBJbnRTaXplJiwgU3VyZmFjZUF0dHJpYnV0ZXMpOwogICAgIHZpcnR1YWwgfkdMWFRyYW5zcG9y
dFN1cmZhY2UoKTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBjb25maWd1cmF0
aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldEdlb21ldHJ5KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIEdMUGxhdGZvcm1TdXJmYWNlOjpTdXJmYWNlQXR0cmlidXRlcyBhdHRyaWJ1
dGVzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQ3VycmVudERyYXdhYmxl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsK
KyAgICBQbGF0Zm9ybVN1cmZhY2VDb25maWcgY29uZmlndXJhdGlvbigpIG92ZXJyaWRlOworICAg
IHZvaWQgc3dhcEJ1ZmZlcnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEdlb21ldHJ5KGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBHTFBsYXRmb3JtU3VyZmFjZTo6U3VyZmFjZUF0dHJp
YnV0ZXMgYXR0cmlidXRlcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDdXJyZW50RHJh
d2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8R0xYQ29uZmlnU2VsZWN0b3I+IG1fY29uZmln
U2VsZWN0b3I7CkBAIC01NSw5ICs1NSw5IEBAIGNsYXNzIEdMWE9mZlNjcmVlblN1cmZhY2UgOiBw
dWJsaWMgR0xQbGF0Zm9ybVN1cmZhY2UgewogcHVibGljOgogICAgIEdMWE9mZlNjcmVlblN1cmZh
Y2UoU3VyZmFjZUF0dHJpYnV0ZXMpOwogICAgIHZpcnR1YWwgfkdMWE9mZlNjcmVlblN1cmZhY2Uo
KTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBjb25maWd1cmF0aW9uKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQ3VycmVudERyYXdhYmxlKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybVN1
cmZhY2VDb25maWcgY29uZmlndXJhdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNDdXJyZW50
RHJhd2FibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemUoU3VyZmFjZUF0dHJpYnV0ZXMpOwpAQCAt
NzIsOCArNzIsOCBAQCBjbGFzcyBHTFhUcmFuc3BvcnRTdXJmYWNlQ2xpZW50IDogcHVibGljIEdM
VHJhbnNwb3J0U3VyZmFjZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgR0xYVHJhbnNwb3J0U3VyZmFj
ZUNsaWVudChjb25zdCBQbGF0Zm9ybUJ1ZmZlckhhbmRsZSwgYm9vbCk7CiAgICAgdmlydHVhbCB+
R0xYVHJhbnNwb3J0U3VyZmFjZUNsaWVudCgpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVGV4
dHVyZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveSgpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFBpeG1hcCBtX3hQaXhtYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdM
LmgKaW5kZXggNDlhNmUyYWM4OTRmOTE5ZjRmNDRmYWFiNzRiOTI0ZTIzMWRlZmFhNi4uNGI0ZjQw
YmRlMjEzYTQ0YzRjNzE5YjZlMzZmNzE3ZmUzNjI1OWNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaApA
QCAtNDEsMjEgKzQxLDIxIEBAIHB1YmxpYzoKICAgICBCaXRtYXBUZXh0dXJlR0woUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4sIGNvbnN0IEZsYWdzID0gTm9GbGFnKTsKICAgICB2aXJ0dWFs
IH5CaXRtYXBUZXh0dXJlR0woKTsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXQoKSBvdmVycmlkZTsKKyAgICBJbnRTaXplIHNpemUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZFJlc2V0KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBiaW5kQXNTdXJmYWNlKEdyYXBoaWNz
Q29udGV4dDNEKik7CiAgICAgdm9pZCBpbml0aWFsaXplU3RlbmNpbCgpOwogICAgIHZvaWQgaW5p
dGlhbGl6ZURlcHRoQnVmZmVyKCk7CiAgICAgdmlydHVhbCB1aW50MzJfdCBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KICAgICB1aW50MzJfdCB0ZXh0dXJlVGFyZ2V0KCkgY29uc3QgeyByZXR1
cm4gR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQ7IH0KICAgICBJbnRTaXplIHRleHR1cmVT
aXplKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlU2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBz
b3VyY2VPZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxhZykgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhJbWFnZSosIGNvbnN0IEludFJlY3QmLCBjb25z
dCBJbnRQb2ludCYsIFVwZGF0ZUNvbnRlbnRzRmxhZykgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRh
dGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQ
b2ludCYgc291cmNlT2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcp
IG92ZXJyaWRlOwogICAgIHZvaWQgdXBkYXRlQ29udGVudHNOb1N3aXp6bGUoY29uc3Qgdm9pZCos
IGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIHNvdXJjZU9mZnNldCwgaW50
IGJ5dGVzUGVyTGluZSwgdW5zaWduZWQgYnl0ZXNQZXJQaXhlbCA9IDQsIFBsYXRmb3JtM0RPYmpl
Y3QgZ2xGb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7Ci0gICAgdmlydHVhbCBib29s
IGlzQmFja2VkQnlPcGVuR0woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc0JhY2tlZEJ5T3BlbkdMKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhUZXh0
dXJlTWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CiAgICAgc3RydWN0IEZpbHRlckluZm8gewogICAg
ICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXI7CiAgICAgICAgIHVuc2lnbmVkIHBh
c3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IGU4ZjhlZTk3
MjQ2ZTQ0MGRkODI3YTdkZTdkNThiMmUyOGY2MjRjNmUuLjNiYjYzMTkxOGQ3OTYwOWJmMDIwOTdj
MDY3ODVkYjgyZjBlMGFlNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oCkBAIC00MSw1MCArNDEsNTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SUQodWludDMyX3Qg
aWQpIHsgbV9sYXllci5zZXRJRChpZCk7IH0KIAogICAgIC8vIEdyYXBoaWNzTGF5ZXIKLSAgICB2
aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChHcmFwaGljc0xheWVyKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwgaW50
IGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGRBYm92ZShHcmFwaGlj
c0xheWVyKiwgR3JhcGhpY3NMYXllciogc2libGluZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqIHNpYmxpbmcp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciog
b2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKSBvdmVycmlkZTsKLQotICAgIHZpcnR1
YWwgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcmVzZXJ2ZXMzRChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NU
b0JvdW5kcyhib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50
KGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1Zpc2libGUoYm9v
bCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzT3BhcXVlKGJvb2wpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlk
ZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYsIFNob3Vs
ZENsaXBUb0xheWVyID0gQ2xpcFRvTGF5ZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c05lZWRzRGlzcGxheSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJv
b2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgRmxvYXRTaXpl
JiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiwgZG91YmxlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvU29saWRDb2xvcihjb25zdCBD
b2xvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvUGxhdGZvcm1M
YXllcihQbGF0Zm9ybUxheWVyKiwgQ29udGVudHNMYXllclB1cnBvc2UpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fY29udGVudHNMYXllcjsgfQotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQotCi0gICAg
dmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlk
ZTsKLQotICAgIHZpcnR1YWwgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29uc3QgRmxvYXRS
ZWN0JiwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZsdXNoQ29tcG9zaXRpbmdT
dGF0ZUZvclRoaXNMYXllck9ubHkoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRDaGlsZHJl
bihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRD
aGlsZChHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZEF0SW5kZXgo
R3JhcGhpY3NMYXllciosIGludCBpbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZEFi
b3ZlKEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqIHNpYmxp
bmcpIG92ZXJyaWRlOworICAgIGJvb2wgcmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENo
aWxkLCBHcmFwaGljc0xheWVyKiBuZXdDaGlsZCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldE1h
c2tMYXllcihHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZXBsaWNhdGVk
QnlMYXllcihHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQb3NpdGlvbihj
b25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmNob3JQb2ludChjb25z
dCBGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNpemUoY29uc3QgRmxvYXRT
aXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENoaWxkcmVuVHJhbnNmb3JtKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcmVzZXJ2ZXMz
RChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDb250ZW50c1Zpc2libGUoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50c09w
YXF1ZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJhY2tmYWNlVmlzaWJpbGl0eShib29s
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIG92ZXJyaWRlOworICAgIGJv
b2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHNldE5lZWRzRGlzcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5
SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYsIFNob3VsZENsaXBUb0xheWVyID0gQ2xpcFRvTGF5ZXIp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKwor
ICAgIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgRmxv
YXRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91YmxlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW1vdmVBbmltYXRpb24oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250ZW50c0xheWVy
UHVycG9zZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzQ29udGVudHNMYXllcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQorICAgIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbnRlbnRzTGF5ZXI7IH0K
KworICAgIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGZs
dXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3QmLCBib29sKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoYm9vbCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZUluY2x1ZGluZ1N1YkxheWVycyhjb25z
dCBGbG9hdFJlY3QmKTsKIApAQCAtMTA2LDExICsxMDYsMTEgQEAgcHVibGljOgogCiBwcml2YXRl
OgogICAgIC8vIEdyYXBoaWNzTGF5ZXIKLSAgICB2aXJ0dWFsIGJvb2wgaXNHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICAvLyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6Q2xpZW50Ci0gICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtTGF5ZXJXaWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZSB7IHNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKDAsIE5vQ29udGVudHNMYXllcik7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSgpIG92ZXJyaWRlIHsgc2V0Q29u
dGVudHNOZWVkc0Rpc3BsYXkoKTsgfQorICAgIHZvaWQgcGxhdGZvcm1MYXllcldpbGxCZURlc3Ry
b3llZCgpIG92ZXJyaWRlIHsgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoMCwgTm9Db250ZW50
c0xheWVyKTsgfQorICAgIHZvaWQgc2V0UGxhdGZvcm1MYXllck5lZWRzRGlzcGxheSgpIG92ZXJy
aWRlIHsgc2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKTsgfQogCiAgICAgdm9pZCBjb21taXRMYXll
ckNoYW5nZXMoKTsKICAgICB2b2lkIHVwZGF0ZURlYnVnQm9yZGVyQW5kUmVwYWludENvdW50KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmgKaW5kZXggNzliNTNkMTc0NDQ2MTA0MmJkNGQ2ZTAzZmQ1ZDA3Nzcy
ZGRlYmQzZi4uMmY0Nzc5OTg3ODFiMGI2Y2VhOGQyNWVhM2RiNTYwOTE5OTE2MTk5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyR0wuaApAQCAtNTMsMjEgKzUzLDIxIEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGlu
dCBGbGFnczsKIAogICAgIC8vIFRleHR1cmVNYXBwZXIgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0
dWFsIHZvaWQgZHJhd0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIHVuc2ln
bmVkIGV4cG9zZWRFZGdlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3Qm9yZGVyKGNvbnN0IENv
bG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3TnVtYmVyKGludCBudW1iZXIs
IGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJl
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5LCB1bnNpZ25lZCBleHBvc2VkRWRnZXMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBkcmF3VGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUsIEZsYWdzLCBjb25zdCBJbnRT
aXplJiB0ZXh0dXJlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25l
ZCBleHBvc2VkRWRnZXMgPSBBbGxFZGdlcyk7Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdTb2xpZENv
bG9yKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdTb2xpZENvbG9yKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJmYWNlKSBv
dmVycmlkZTsKKyAgICB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1cmZhY2UpIG92
ZXJyaWRlOwogICAgIEJpdG1hcFRleHR1cmUqIGN1cnJlbnRTdXJmYWNlKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblBhaW50aW5nKFBhaW50Rmxh
Z3MgPSAwKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnRpbmcoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kQ2xpcCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50
UmVjdCBjbGlwQm91bmRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRTaXplIG1heFRleHR1
cmVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50U2l6ZSgyMDAwLCAyMDAwKTsgfQot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2luUGFpbnRpbmcoUGFpbnRG
bGFncyA9IDApIG92ZXJyaWRlOworICAgIHZvaWQgZW5kUGFpbnRpbmcoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGVuZENsaXAoKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGNsaXBCb3VuZHMoKSBvdmVy
cmlkZTsKKyAgICBJbnRTaXplIG1heFRleHR1cmVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gSW50U2l6ZSgyMDAwLCAyMDAwKTsgfQorICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZSgpIG92ZXJyaWRlOwogICAgIGlubGluZSBHcmFwaGljc0NvbnRleHQzRCog
Z3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQzRC5nZXQoKTsgfQog
CiAgICAgdm9pZCBkcmF3RmlsdGVyZWQoY29uc3QgQml0bWFwVGV4dHVyZSYgc291cmNlVGV4dHVy
ZSwgY29uc3QgQml0bWFwVGV4dHVyZSogY29udGVudFRleHR1cmUsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbiYsIGludCBwYXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2YWRiNjU0Yzgx
MzRjNTE4N2VhOTY3ZjgyMGNhZWNkMzY3ZDQ4ZDQ4Li45MjVhOTVlNjY0ODA0YmFiMmMxZWIwNzQ1
NDEwNDY1YTI3ZWEzMTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0xNjgsOSArMTY4
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQYXR0ZXJuVHJhbnNmb3JtSWZOZWVkZWQo
KTsKIAogICAgIC8vIFRleHR1cmVNYXBwZXJBbmltYXRpb246OkNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBzZXRBbmltYXRlZFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZE9wYWNpdHkoZmxvYXQpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRlZEZpbHRlcnMoY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QW5pbWF0ZWRUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFuaW1hdGVkT3Bh
Y2l0eShmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmltYXRlZEZpbHRlcnMoY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1Zpc2libGUoKSBjb25z
dDsKICAgICBlbnVtIENvbnRlbnRzTGF5ZXJDb3VudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlLmgKaW5kZXggMGViZmFlNDMyZjMwOWM2MTY1ZjQ2Zjg0NzVh
MWE2MWExZTgxMmRjOS4uYWQwOTA0MjY4ZGI4MmY4ZDUwMzU3NDg5YjIwYWVkMDNhNmMzMmIzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaApAQCAtMzcs
MTAgKzM3LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmUpOyB9CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRp
bGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0Jv
cmRlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXImLCBpbnQgcmVw
YWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1
cmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciYsIGNv
bnN0IENvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UmVwYWludENvdW50
ZXIoVGV4dHVyZU1hcHBlciYsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgdXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50
c1NpemUoY29uc3QgRmxvYXRTaXplJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuaAppbmRleCBhODFiNDUyZTljZjQ2NzRmYTJjY2UxNWU0ZDQ5
YzM5Mjc1YjFkZDgxLi5mYTRkZGIwNTZmYzVlYTc5MzMzMmFlNzIxYmFhNjIwNGNiZDM2NjNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmgK
QEAgLTg5LDMyICs4OSwzMiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gR3JhcGhpY3NM
YXllckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNz
TGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29u
c3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNj
YWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFy
dGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllcios
IEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9h
dFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgLy8gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OkNsaWVudAotICAgIHZpcnR1
YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZElt
YWdlQmFja2luZ0lELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nSUQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVJ
bWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0
cjxDb29yZGluYXRlZFN1cmZhY2U+KSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFySW1hZ2VCYWNr
aW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQKLSAgICB2aXJ0dWFsIGJv
b2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNG
bHVzaGluZ0xheWVyQ2hhbmdlczsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHZpc2libGVDb250
ZW50c1JlY3QoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWlu
dDMyX3QmIC8qIGF0bGFzSUQgKi8sIFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3luY0xh
eWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0
ZSYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsgfQorICAgIEZsb2F0UmVj
dCB2aXNpYmxlQ29udGVudHNSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxD
b29yZGluYXRlZEltYWdlQmFja2luZz4gY3JlYXRlSW1hZ2VCYWNraW5nSWZOZWVkZWQoSW1hZ2Uq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHVpbnQzMl90JiAvKiBh
dGxhc0lEICovLCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFj
ZTo6Q2xpZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRl
ZExheWVySUQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBVcGRhdGVBdGxhczo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZVVwZGF0ZUF0
bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFz
SUQpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlVXBkYXRlQXRsYXModWludDMyX3QgYXRsYXNJ
RCwgUGFzc1JlZlB0cjxDb29yZGluYXRlZFN1cmZhY2U+KSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
bW92ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQpIG92ZXJyaWRlOwogCiAgICAgLy8gR3Jh
cGhpY3NMYXllckZhY3RvcnkKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0xh
eWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXI6OlR5cGUsIEdyYXBoaWNzTGF5
ZXJDbGllbnQmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NMYXllcj4g
Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyOjpUeXBlLCBHcmFwaGljc0xheWVyQ2xp
ZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXll
cklmTmVlZGVkKCk7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdJbWFnZUJhY2tpbmdDaGFuZ2VzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKaW5kZXggMWM5N2UxOWFiYWIzYzY2NDRjNTM5Nzk0MTUxZDE2MzVjYWQ5ZTU2NC4uMjM1YWFk
OGE0ZWRmYmJhYWFkMDA5ZTZjYTc1MzBmMDc1ZDk2OTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNjksNDkgKzY5LDQ5
IEBAIHB1YmxpYzoKICAgICBQbGF0Zm9ybUxheWVySUQgcHJpbWFyeUxheWVySUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBpZCgpOyB9CiAKICAgICAvLyBSZWltcGxlbWVudGF0aW9ucyBmcm9t
IEdyYXBoaWNzTGF5ZXIuaC4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hpbGRyZW4oY29uc3QgVmVj
dG9yPEdyYXBoaWNzTGF5ZXIqPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkQXRJ
bmRleChHcmFwaGljc0xheWVyKiwgaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRk
Q2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVy
KiwgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9t
UGFyZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29u
c3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29u
c3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1Zpc2libGUoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzT3BhcXVlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZmFj
ZVZpc2liaWxpdHkoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHko
ZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1JlY3QoY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVGlsZVBo
YXNlKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RpbGVTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvd0RlYnVnQm9yZGVyKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIoUGxhdGZvcm1MYXll
ciosIENvbnRlbnRzTGF5ZXJQdXJwb3NlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVl
ZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYsIFNob3VsZENsaXBUb0xheWVyID0gQ2xp
cFRvTGF5ZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlz
cGxheSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3Rv
ckNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2hDb21wb3NpdGluZ1N0
YXRlKGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBm
bHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KGJvb2wpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgQW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwgZG91
YmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3Ry
aW5nJiwgZG91YmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9u
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0
aW9ucyhkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1h
dGlvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbnRlbnRzTGF5ZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXRmb3JtTGF5ZXIgfHwgbV9jb21wb3NpdGVkSW1h
Z2U7IH0KKyAgICBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZENoaWxkQXRJbmRleChHcmFwaGljc0xheWVyKiwgaW50KSBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIqKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkQmVsb3coR3JhcGhpY3NMYXllciosIEdyYXBoaWNz
TGF5ZXIqKSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGlsZChHcmFwaGljc0xheWVyKiwg
R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRDaGlsZHJlblRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RHJhd3NDb250
ZW50KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNWaXNpYmxlKGJvb2wpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNPcGFxdWUoYm9vbCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRP
cGFjaXR5KGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzVGlsZVBoYXNlKGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNUaWxlU2l6ZShjb25z
dCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFn
ZSopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHNUb1NvbGlkQ29sb3IoY29uc3QgQ29s
b3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcihib29sKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFNob3dSZXBhaW50Q291bnRlcihib29sKSBvdmVycmlkZTsKKyAgICBi
b29sIHNob3VsZERpcmVjdGx5Q29tcG9zaXRlSW1hZ2UoSW1hZ2UqKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIHNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBDb250
ZW50c0xheWVyUHVycG9zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNYXNrTGF5ZXIoR3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiwgU2hvdWxk
Q2xpcFRvTGF5ZXIgPSBDbGlwVG9MYXllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250ZW50
c05lZWRzRGlzcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmbHVzaENvbXBvc2l0aW5nU3RhdGUoY29u
c3QgRmxvYXRSZWN0JiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmbHVzaENvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgc2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CisgICAgYm9vbCBhZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBBbmlt
YXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2VB
bmltYXRpb24oY29uc3QgU3RyaW5nJiwgZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92
ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN1c3BlbmRBbmlt
YXRpb25zKGRvdWJsZSB0aW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnMo
KSBvdmVycmlkZTsKKyAgICBib29sIHVzZXNDb250ZW50c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9wbGF0Zm9ybUxheWVyIHx8IG1fY29tcG9zaXRlZEltYWdlOyB9CiAKICAgICB2
b2lkIHN5bmNQZW5kaW5nU3RhdGVDaGFuZ2VzSW5jbHVkaW5nU3ViTGF5ZXJzKCk7CiAgICAgdm9p
ZCB1cGRhdGVDb250ZW50QnVmZmVyc0luY2x1ZGluZ1N1YkxheWVycygpOwpAQCAtMTMzLDEzICsx
MzMsMTMgQEAgcHVibGljOgogICAgIEludFJlY3QgdHJhbnNmb3JtZWRWaXNpYmxlUmVjdCgpOwog
CiAgICAgLy8gVGlsZWRCYWNraW5nU3RvcmVDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgdGlsZWRC
YWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZVRpbGVCdWZmZXJzKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1N0b3JlSGFzUGVuZGluZ1RpbGVDcmVhdGlvbigp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwg
ZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRp
bGVJRCwgY29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVRpbGUodWludDMyX3QgdGlsZUlEKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUb1N1cmZhY2UoY29uc3QgSW50U2l6ZSYsIHVpbnQzMl90
JiAvKiBhdGxhc0lEICovLCBJbnRQb2ludCYsIENvb3JkaW5hdGVkU3VyZmFjZTo6Q2xpZW50Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZVBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZVRpbGVCdWZm
ZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0aWxlZEJhY2tpbmdTdG9yZUhhc1BlbmRpbmdUaWxl
Q3JlYXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGNyZWF0ZVRpbGUodWludDMyX3QgdGlsZUlE
LCBmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVUaWxlKHVpbnQzMl90IHRpbGVJRCwg
Y29uc3QgU3VyZmFjZVVwZGF0ZUluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZW1vdmVUaWxlKHVpbnQzMl90IHRpbGVJRCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWlu
dFRvU3VyZmFjZShjb25zdCBJbnRTaXplJiwgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIEludFBv
aW50JiwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
c2V0Q29vcmRpbmF0b3IoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UGxhdGZvcm1MYXllck5lZWRzRGlz
cGxheSgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdCb3Jk
ZXIoY29uc3QgQ29sb3ImLCBmbG9hdCB3aWR0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREZWJ1
Z0JvcmRlcihjb25zdCBDb2xvciYsIGZsb2F0IHdpZHRoKSBvdmVycmlkZTsKIAogICAgIGJvb2wg
Zml4ZWRUb1ZpZXdwb3J0KCkgY29uc3QgeyByZXR1cm4gbV9maXhlZFRvVmlld3BvcnQ7IH0KIApA
QCAtMTk0LDcgKzE5NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBub3RpZnlGbHVzaFJlcXVpcmVk
KCk7CiAKICAgICAvLyBDb29yZGluYXRlZEltYWdlQmFja2luZzo6SG9zdAotICAgIHZpcnR1YWwg
Ym9vbCBpbWFnZUJhY2tpbmdWaXNpYmxlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpbWFnZUJhY2tp
bmdWaXNpYmxlKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkg
Y29uc3Q7CiAgICAgYm9vbCBzZWxmT3JBbmNlc3Rvckhhc0FjdGl2ZVRyYW5zZm9ybUFuaW1hdGlv
bigpIGNvbnN0OwogICAgIGJvb2wgc2VsZk9yQW5jZXN0b3JIYXZlTm9uQWZmaW5lVHJhbnNmb3Jt
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEltYWdlQmFj
a2luZy5jcHAKaW5kZXggMDY0MjQzYjRiOWJmMWNmN2E0OGMwMDk5YjIwZGFjNzk4YjViMWM4Yy4u
ZThmY2FiYjAzY2MyMzU2NGI4YWQ4NDllNzEwMzM3NWY2NWIwZDE1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkSW1hZ2VCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50
VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCisgICAg
dm9pZCBwYWludFRvU3VyZmFjZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UobV9pbWFnZSwgbV9yZWN0LCBt
X3JlY3QpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVGlsZS5oCmluZGV4IDlkNzkzMTM1ZjA2OGE1Y2U3
ZTVkY2IxNDk2MzA0MTI3MTIzZjk3ZjAuLjBiMDRkNzVhYWM4ZWZlZmUyMTdkMTI0OWFhYWYwN2Yw
ZmU0N2VjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9UaWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJsaWM6
CiAgICAgY29uc3QgSW50UmVjdCYgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdDsgfQogICAg
IHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
U3VyZmFjZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dFRvU3VyZmFjZUNvbnRleHQoR3JhcGhpY3NDb250ZXh0Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgVGlsZWRCYWNraW5nU3RvcmUmIG1fdGlsZWRCYWNraW5nU3RvcmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvVXBk
YXRlQXRsYXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL1VwZGF0ZUF0bGFzLmNwcAppbmRleCBkYjg2Zjk1MTgyYTAwMjA1ZWMxYWNhZmI0
ODAyZWQyMTRlNjcwNGJhLi41ODdiZTJkOWU2YmIyNmQzYTUxZTFiZTQ5Mjg0ZmE3NTdjYzc5MmY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVXBkYXRlQXRsYXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9VcGRhdGVBdGxhcy5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZh
Y2VDb250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgb3ZlcnJpZGUKKyAgICB2b2lkIHBh
aW50VG9TdXJmYWNlQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAobV9zdXBwb3J0c0FscGhhKSB7CiAgICAgICAgICAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVDb3B5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1P
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
SWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCAzNmZiNzMwZjdkODkwYmJmZTNkYjQ1
YWYwNzliMTM5ZDhkNjJjZDIyLi4wMTc0MDFkOGNkNDZhYWIzNmJlNjQ3MTQxM2I4ZjRhZDI3NGE4
ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zv
cm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBA
IC0zNywyNyArMzcsMjcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJ
ZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbigpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZjxU
cmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VHJhbnNm
b3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gY3JlYXRlKCk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50
aXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgT3BlcmF0
aW9uVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSURFTlRJVFk7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG8udHlwZSgpID09IElERU5USVRZOyB9CisgICAgYm9vbCBpc0lk
ZW50aXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIE9wZXJhdGlvblR5
cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIElERU5USVRZOyB9CisgICAgYm9vbCBp
c1NhbWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gby50eXBlKCkgPT0gSURFTlRJVFk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3Qgb3ZlcnJpZGUKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUobyk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRTaXplJikgY29u
c3Qgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiosIGRvdWJsZSwgYm9vbCA9IGZhbHNlKSBvdmVycmlkZQorICAg
IFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbios
IGRvdWJsZSwgYm9vbCA9IGZhbHNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24u
aAppbmRleCA3MTBmMGZmMmQ0ZjA0ZTFhMTA0Zjc2YWU3NjQxMzI3NTUxNzBjNDQ0Li40ZWUxNjRh
ZDM3ZTBmYWIyODhhYmIwODVhMzY2NTcyYThmMjY1ZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9N
YXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0zOCw3ICszOCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24obWF0
cml4KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWF0cml4
M0RUcmFuc2Zvcm1PcGVyYXRpb24obV9tYXRyaXgpKTsKICAgICB9CkBAIC00NiwyMSArNDYsMjEg
QEAgcHVibGljOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCgpIGNvbnN0IHtyZXR1
cm4gbV9tYXRyaXg7IH0KIAogcHJpdmF0ZTogICAgCi0gICAgdmlydHVhbCBib29sIGlzSWRlbnRp
dHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21hdHJpeC5pc0lkZW50aXR5KCk7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQorICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWF0cml4LmlzSWRlbnRpdHkoKTsgfQorICAgIGJvb2wgaXNB
ZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzSWRl
bnRpdHkoKTsgfQogCi0gICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBNQVRSSVhfM0Q7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlwZShj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG8udHlw
ZSgpID09IE1BVFJJWF8zRDsgfQorICAgIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIE1BVFJJWF8zRDsgfQorICAgIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG8udHlwZSgpID09IE1B
VFJJWF8zRDsgfQogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGFw
cGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNv
bnN0IG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgdHJh
bnNmb3JtLm11bHRpcGx5KG1fbWF0cml4KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIHZpcnR1YWwgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5
ID0gZmFsc2UpIG92ZXJyaWRlOworICAgIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSA9IGZhbHNlKSBvdmVycmlkZTsKICAgICAKICAgICBNYXRyaXgzRFRyYW5zZm9y
bU9wZXJhdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0KQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IGE4ZTExNWViMzhjMWY2
Yzc4ZjE1Yzk1OTAxODc2NjFmYTBjOTE5ZGQuLmQ4NDBiMzM2NWU3MjU2OTZiZWM0NmEzM2UyYmFi
OTlkYWNlMmFjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbih0KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWY8
VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCgpKSk7CiAg
ICAgfQpAQCAtNTEsMjIgKzUxLDIyIEBAIHB1YmxpYzoKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtYXRyaXgoKSBjb25zdCB7IHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2EsIG1fYiwg
bV9jLCBtX2QsIG1fZSwgbV9mKTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0lk
ZW50aXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hID09IDEgJiYgbV9iID09IDAgJiYg
bV9jID09IDAgJiYgbV9kID09IDEgJiYgbV9lID09IDAgJiYgbV9mID09IDA7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQorICAgIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fYSA9PSAxICYmIG1fYiA9PSAwICYmIG1fYyA9PSAwICYmIG1fZCA9PSAx
ICYmIG1fZSA9PSAwICYmIG1fZiA9PSAwOyB9CisgICAgYm9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zv
cm1PcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhaXNJZGVudGl0eSgpOyB9CiAKLSAg
ICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIE1B
VFJJWDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiYgbykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gby50eXBlKCkgPT0gTUFUUklYOyB9Cisg
ICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTUFUUklYOyB9
CisgICAgYm9vbCBpc1NhbWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gby50eXBlKCkgPT0gTUFUUklYOyB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJikgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgobV9h
LCBtX2IsIG1fYywgbV9kLCBtX2UsIG1fZik7CiAgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseSht
YXRyaXgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWY8
VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7
CisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
IG92ZXJyaWRlOwogICAgIAogICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgYSwg
ZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUsIGRvdWJsZSBmKQogICAgICAg
ICA6IG1fYShhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oCmluZGV4IDIwNDFiMWFlZDlmZmQxYTgwODYxMWZmYTIwZTg5ZTk1OTdjOTJmZGUuLjNm
M2EzNjBhZDY4YTZlNGU0ZjI1NTA3NWUyZDJhN2JkYjc4NGQwNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbihwKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0
aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4g
Y2xvbmUoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24obV9wKSk7CiAgICAgfQpAQCAtNDgsMjEg
KzQ4LDIxIEBAIHB1YmxpYzoKICAgICBMZW5ndGggcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVy
biBtX3A7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3AsIDEpOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICFpc0lkZW50aXR5KCk7IH0KKyAgICBib29sIGlzSWRlbnRpdHkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3AsIDEpOyB9CisgICAg
Ym9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAhaXNJZGVudGl0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBFUlNQRUNUSVZFOyB9Ci0gICAgdmlydHVhbCBib29sIGlz
U2FtZVR5cGUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBvLnR5cGUoKSA9PSBQRVJTUEVDVElWRTsgfQorICAgIE9wZXJhdGlvblR5cGUgdHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBFUlNQRUNUSVZFOyB9CisgICAgYm9vbCBpc1NhbWVU
eXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
by50eXBlKCkgPT0gUEVSU1BFQ1RJVkU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXplJikgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKGZsb2F0VmFsdWVGb3JMZW5n
dGgobV9wLCAxKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBvdmVy
cmlkZTsKKyAgICBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBm
YWxzZSkgb3ZlcnJpZGU7CiAKICAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25z
dCBMZW5ndGgmIHApCiAgICAgICAgIDogbV9wKHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9Sb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaAppbmRleCBhNWIwZWQwNTY4MWNkYjdjNmE0OTg5ZTQ1ZmExZjcyYThj
NjYxODRiLi44MzYwNThiMDcxMmM3MDlhNTc4Njg0NTAxOTkwNzNkYjc2NWRjNGM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1JvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24oeCwgeSwgeiwgYW5nbGUsIHR5cGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZjxU
cmFuc2Zvcm1PcGVyYXRpb24+IGNsb25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VHJhbnNm
b3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwg
bV9hbmdsZSwgbV90eXBlKSk7CiAgICAgfQpAQCAtNTMsMjEgKzUzLDIxIEBAIHB1YmxpYzoKICAg
ICBkb3VibGUgYW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2FuZ2xlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Fu
Z2xlID09IDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2lu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWlzSWRlbnRpdHkoKTsgfQorICAgIGJvb2wgaXNJ
ZGVudGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYW5nbGUgPT0gMDsgfQorICAgIGJv
b2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IWlzSWRlbnRpdHkoKTsgfQogCi0gICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTYW1lVHlw
ZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG8u
dHlwZSgpID09IG1fdHlwZTsgfQorICAgIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFuc2Zv
cm1PcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG8udHlwZSgpID09IG1fdHlw
ZTsgfQogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGFwcGx5KFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYgLypib3JkZXJC
b3hTaXplKi8pIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmIC8qYm9yZGVyQm94U2l6ZSovKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZTNkKG1feCwgbV95LCBt
X3osIG1fYW5nbGUpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVh
bCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3Zl
cnJpZGU7CisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0g
ZmFsc2UpIG92ZXJyaWRlOwogCiAgICAgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKGRvdWJsZSB4
LCBkb3VibGUgeSwgZG91YmxlIHosIGRvdWJsZSBhbmdsZSwgT3BlcmF0aW9uVHlwZSB0eXBlKQog
ICAgICAgICA6IG1feCh4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5o
CmluZGV4IDY0YjQ2YmYxMGJjMTBlYzZlODk0NGNlZGJiODZjZDgzZjIzOGVjNjIuLjlmOGIyODY0
M2M0N2ZkZDQxYWY1NTRiY2JmZjVhM2ZmOGU0YmM5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbihzeCwgc3ksIHN6LCB0
eXBlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9u
ZSgpIGNvbnN0IG92ZXJyaWRlCisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBj
b25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24obV94LCBtX3ksIG1feiwgbV90eXBlKSk7CiAgICAgfQpAQCAtNTIs
MjEgKzUyLDIxIEBAIHB1YmxpYzoKICAgICBkb3VibGUgeigpIGNvbnN0IHsgcmV0dXJuIG1fejsg
fQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV94ID09IDEgJiYgIG1feSA9PSAxICYmICBtX3ogPT0gMTsgfQotICAgIHZp
cnR1YWwgYm9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAhaXNJZGVudGl0eSgpOyB9CisgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV94ID09IDEgJiYgIG1feSA9PSAxICYmICBtX3ogPT0gMTsgfQorICAg
IGJvb2wgaXNBZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIWlzSWRlbnRpdHkoKTsgfQogCi0gICAgdmlydHVhbCBPcGVyYXRpb25UeXBlIHR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTYW1l
VHlwZShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG8udHlwZSgpID09IG1fdHlwZTsgfQorICAgIE9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGJvb2wgaXNTYW1lVHlwZShjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG8udHlwZSgpID09IG1f
dHlwZTsgfQogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGFwcGx5
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0
IG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgdHJhbnNm
b3JtLnNjYWxlM2QobV94LCBtX3ksIG1feik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0
eSA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7CiAKICAgICBTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbihkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91YmxlIHN6LCBPcGVyYXRpb25UeXBlIHR5cGUp
CiAgICAgICAgIDogbV94KHN4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24u
aAppbmRleCBhMjUxNzdkODc1NzlmZTU1MTFmMzcxY2NhNjM0Yzg1MDUyZDcyYWY4Li5iZGU3ZDMx
MjI0MzU1YzdmMmJlZWI4ZDI3N2MxZDE4YjVhNWU4MGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1NrZXdU
cmFuc2Zvcm1PcGVyYXRpb24uaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24oYW5nbGVYLCBhbmdsZVks
IHR5cGUpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGNs
b25lKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uKG1fYW5nbGVYLCBtX2FuZ2xlWSwgbV90eXBlKSk7CiAgICAgfQpA
QCAtNDYsMjEgKzQ2LDIxIEBAIHB1YmxpYzoKICAgICBkb3VibGUgYW5nbGVZKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbmdsZVk7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0
eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYW5nbGVYID09IDAgJiYgbV9hbmdsZVkgPT0g
MDsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAhaXNJZGVudGl0eSgpOyB9CisgICAgYm9vbCBpc0lkZW50aXR5
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hbmdsZVggPT0gMCAmJiBtX2FuZ2xlWSA9PSAw
OyB9CisgICAgYm9vbCBpc0FmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAhaXNJZGVudGl0eSgpOyB9CiAKLSAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUg
dHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc1NhbWVUeXBlKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gby50eXBlKCkgPT0gbV90eXBlOyB9CisgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90eXBlOyB9CisgICAgYm9vbCBpc1NhbWVUeXBlKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gby50eXBl
KCkgPT0gbV90eXBlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRTaXpl
JikgY29uc3Qgb3ZlcnJpZGUKKyAgICBib29sIGFwcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0sIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICB0cmFuc2Zvcm0uc2tldyhtX2FuZ2xlWCwgbV9hbmdsZVkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvSWRlbnRpdHkgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlv
bj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3Ms
IGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIG92ZXJyaWRlOwogICAgIAogICAgIFNrZXdU
cmFuc2Zvcm1PcGVyYXRpb24oZG91YmxlIGFuZ2xlWCwgZG91YmxlIGFuZ2xlWSwgT3BlcmF0aW9u
VHlwZSB0eXBlKQogICAgICAgICA6IG1fYW5nbGVYKGFuZ2xlWCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IGU3MzhjM2VlYTdjMWI3ZTc0ZWI0
YTU1OThhZjJlNTQ2MzA2YjIyNjIuLjU4YzAwNjYxMDAxMjA2YmNhZjQxODM5NjhhZjMwN2QzZTkw
MTg0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5z
Zm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24u
aApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih0eCwgdHksIHR6LCB0eXBlKSk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBSZWY8VHJhbnNmb3JtT3BlcmF0aW9uPiBjbG9uZSgpIGNvbnN0IG92ZXJy
aWRlCisgICAgUmVmPFRyYW5zZm9ybU9wZXJhdGlvbj4gY2xvbmUoKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKG1feCwgbV95LCBtX3osIG1fdHlwZSkpOwogICAgIH0KQEAgLTU4LDIwICs1OCwyMCBA
QCBwdWJsaWM6CiAgICAgTGVuZ3RoIHooKSBjb25zdCB7IHJldHVybiBtX3o7IH0KIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICFmbG9hdFZhbHVlRm9yTGVuZ3RoKG1feCwgMSkgJiYgIWZsb2F0VmFsdWVGb3JMZW5ndGgobV95
LCAxKSAmJiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3osIDEpOyB9CisgICAgYm9vbCBpc0lkZW50
aXR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIWZsb2F0VmFsdWVGb3JMZW5ndGgobV94LCAx
KSAmJiAhZmxvYXRWYWx1ZUZvckxlbmd0aChtX3ksIDEpICYmICFmbG9hdFZhbHVlRm9yTGVuZ3Ro
KG1feiwgMSk7IH0KIAotICAgIHZpcnR1YWwgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV90eXBlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBvLnR5cGUo
KSA9PSBtX3R5cGU7IH0KKyAgICBPcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3R5cGU7IH0KKyAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBvLnR5cGUoKSA9PSBtX3R5cGU7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUp
IGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoeChib3JkZXJCb3hTaXplKSwgeShi
b3JkZXJCb3hTaXplKSwgeihib3JkZXJCb3hTaXplKSk7CiAgICAgICAgIHJldHVybiBtX3guaXNQ
ZXJjZW50KCkgfHwgbV95LmlzUGVyY2VudCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVmPFRy
YW5zZm9ybU9wZXJhdGlvbj4gYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpIG92ZXJyaWRlOwor
ICAgIFJlZjxUcmFuc2Zvcm1PcGVyYXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSBv
dmVycmlkZTsKIAogICAgIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBMZW5ndGgm
IHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6LCBPcGVyYXRpb25UeXBlIHR5
cGUpCiAgICAgICAgIDogbV94KHR4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
Rm91bmRhdGlvbi5oCmluZGV4IGQ3ZmFmOTVlOTU4MzdiYTZiYWZiOTk1OTkxZjQ1NTA2MzYyZWYy
ODMuLmVjM2VlZTg4YzEyNjgyNTc5MDUwYjc0NTA0ZWE5ZGNiMmNhM2RlZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVN
ZWRpYUZvdW5kYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmgKQEAgLTczLDI1ICs3MywyNSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAKICAgICB2aXJ0
dWFsIGJvb2wgc2Vla2luZygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBzZWVrRG91YmxlKGRv
dWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWVrRG91YmxlKGRvdWJsZSkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZURvdWJsZShkb3VibGUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0UmF0ZURvdWJsZShkb3VibGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBkb3VibGUg
ZHVyYXRpb25Eb3VibGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgZHVyYXRpb25Eb3Vi
bGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFRpbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdmlydHVhbCBib29sIHBhdXNlZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNl
dFZvbHVtZShmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWb2x1bWUoZmxvYXQpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzTXV0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldE11dGVkKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgc3Vw
cG9ydHNNdXRpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldE11dGVkKGJvb2wpIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcmtT
dGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBmbG9hdCBtYXhUaW1lU2Vla2FibGUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVy
ZWQoKSBjb25zdDsKIApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICBNZWRpYVBsYXllciogbV9wbGF5ZXI7CkBAIC0xNjMsMTQgKzE2MywxNCBAQCBwcml2
YXRlOgogICAgICAgICBBc3luY0NhbGxiYWNrKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRh
dGlvbiosIGJvb2wgZXZlbnQpOwogICAgICAgICB+QXN5bmNDYWxsYmFjaygpOwogCi0gICAgICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfX1JQQ19fZGVyZWZfb3V0IHZvaWQgX19SUENfRkFSICpfX1JQQ19GQVIgKnBw
dk9iamVjdCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FMTFRZ
UEUgQWRkUmVmKCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgVUxPTkcgU1RETUVUSE9EQ0FM
TFRZUEUgUmVsZWFzZSgpIG92ZXJyaWRlOworICAgICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExU
WVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9fUlBDX19kZXJlZl9vdXQgdm9p
ZCBfX1JQQ19GQVIgKl9fUlBDX0ZBUiAqcHB2T2JqZWN0KSBvdmVycmlkZTsKKyAgICAgICAgVUxP
TkcgU1RETUVUSE9EQ0FMTFRZUEUgQWRkUmVmKCkgb3ZlcnJpZGU7CisgICAgICAgIFVMT05HIFNU
RE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKSBvdmVycmlkZTsKIAotICAgICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0UGFyYW1ldGVycyhfX1JQQ19fb3V0IERXT1JEICpw
ZHdGbGFncywgX19SUENfX291dCBEV09SRCAqcGR3UXVldWUpIG92ZXJyaWRlOwotICAgICAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgSW52b2tlKF9fUlBDX19pbl9vcHQgSU1G
QXN5bmNSZXN1bHQgKnBBc3luY1Jlc3VsdCkgb3ZlcnJpZGU7CisgICAgICAgIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgR2V0UGFyYW1ldGVycyhfX1JQQ19fb3V0IERXT1JEICpwZHdGbGFncywg
X19SUENfX291dCBEV09SRCAqcGR3UXVldWUpIG92ZXJyaWRlOworICAgICAgICBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIEludm9rZShfX1JQQ19faW5fb3B0IElNRkFzeW5jUmVzdWx0ICpwQXN5
bmNSZXN1bHQpIG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBvbk1lZGlhUGxheWVy
RGVsZXRlZCgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIG9uTWVkaWFQbGF5ZXJEZWxldGVkKCkg
b3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgogICAgICAgICBVTE9ORyBtX3JlZkNvdW50OwpAQCAt
MzE3LDI3ICszMTcsMjcgQEAgcHJpdmF0ZToKICAgICAgICAgQ3VzdG9tVmlkZW9QcmVzZW50ZXIo
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uKik7CiAgICAgICAgIH5DdXN0b21WaWRl
b1ByZXNlbnRlcigpOwogCi0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgX19SUENfX2RlcmVmX291dCB2b2lkIF9fUlBD
X0ZBUiAqX19SUENfRkFSICpwcHZPYmplY3QpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIFVM
T05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZigpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKSBvdmVycmlkZTsKKyAgICAgICAgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFjZShSRUZJSUQgcmlpZCwgX19SUENf
X2RlcmVmX291dCB2b2lkIF9fUlBDX0ZBUiAqX19SUENfRkFSICpwcHZPYmplY3QpIG92ZXJyaWRl
OworICAgICAgICBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSBvdmVycmlkZTsKKyAg
ICAgICAgVUxPTkcgU1RETUVUSE9EQ0FMTFRZUEUgUmVsZWFzZSgpIG92ZXJyaWRlOwogCiAgICAg
ICAgIC8vIElNRkNsb2NrU3RhdGVTaW5rCi0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBPbkNsb2NrU3RhcnQoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIExPTkdMT05HIGxs
Q2xvY2tTdGFydE9mZnNldCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSBPbkNsb2NrU3RvcChNRlRJTUUgaG5zU3lzdGVtVGltZSkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBPbkNsb2NrUGF1c2Uo
TUZUSU1FIGhuc1N5c3RlbVRpbWUpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgT25DbG9ja1Jlc3RhcnQoTUZUSU1FIGhuc1N5c3RlbVRpbWUpIG92
ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgT25DbG9j
a1NldFJhdGUoTUZUSU1FIGhuc1N5c3RlbVRpbWUsIGZsb2F0IGZsUmF0ZSkgb3ZlcnJpZGU7Cisg
ICAgICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgT25DbG9ja1N0YXJ0KE1GVElNRSBobnNT
eXN0ZW1UaW1lLCBMT05HTE9ORyBsbENsb2NrU3RhcnRPZmZzZXQpIG92ZXJyaWRlOworICAgICAg
ICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIE9uQ2xvY2tTdG9wKE1GVElNRSBobnNTeXN0ZW1U
aW1lKSBvdmVycmlkZTsKKyAgICAgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBPbkNsb2Nr
UGF1c2UoTUZUSU1FIGhuc1N5c3RlbVRpbWUpIG92ZXJyaWRlOworICAgICAgICBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIE9uQ2xvY2tSZXN0YXJ0KE1GVElNRSBobnNTeXN0ZW1UaW1lKSBvdmVy
cmlkZTsKKyAgICAgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBPbkNsb2NrU2V0UmF0ZShN
RlRJTUUgaG5zU3lzdGVtVGltZSwgZmxvYXQgZmxSYXRlKSBvdmVycmlkZTsKIAogICAgICAgICAv
LyBJTUZWaWRlb1ByZXNlbnRlcgotICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgUHJvY2Vzc01lc3NhZ2UoTUZWUF9NRVNTQUdFX1RZUEUgZU1lc3NhZ2UsIFVMT05HX1BU
UiB1bFBhcmFtKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIEdldEN1cnJlbnRNZWRpYVR5cGUoX091dHB0cl8gIElNRlZpZGVvTWVkaWFUeXBlICoq
cHBNZWRpYVR5cGUpIG92ZXJyaWRlOworICAgICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFByb2Nlc3NNZXNzYWdlKE1GVlBfTUVTU0FHRV9UWVBFIGVNZXNzYWdlLCBVTE9OR19QVFIgdWxQ
YXJhbSkgb3ZlcnJpZGU7CisgICAgICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0Q3Vy
cmVudE1lZGlhVHlwZShfT3V0cHRyXyAgSU1GVmlkZW9NZWRpYVR5cGUgKipwcE1lZGlhVHlwZSkg
b3ZlcnJpZGU7CiAKICAgICAgICAgLy8gSU1GVmlkZW9EZXZpY2VJRAotICAgICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgR2V0RGV2aWNlSUQoSUlEKiBwRGV2aWNlSUQpIG92
ZXJyaWRlOworICAgICAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEdldERldmljZUlEKElJ
RCogcERldmljZUlEKSBvdmVycmlkZTsKIAogICAgICAgICAvLyBJTUZUb3BvbG9neVNlcnZpY2VM
b29rdXBDbGllbnQKLSAgICAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIElu
aXRTZXJ2aWNlUG9pbnRlcnMoX0luXyAgSU1GVG9wb2xvZ3lTZXJ2aWNlTG9va3VwICpwTG9va3Vw
KSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJl
bGVhc2VTZXJ2aWNlUG9pbnRlcnModm9pZCkgb3ZlcnJpZGU7CisgICAgICAgIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgSW5pdFNlcnZpY2VQb2ludGVycyhfSW5fICBJTUZUb3BvbG9neVNlcnZp
Y2VMb29rdXAgKnBMb29rdXApIG92ZXJyaWRlOworICAgICAgICBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFJlbGVhc2VTZXJ2aWNlUG9pbnRlcnModm9pZCkgb3ZlcnJpZGU7CiAKICAgICAgICAg
Ly8gSU1GR2V0U2VydmljZQogICAgICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgR2V0U2VydmljZShSRUZHVUlEIGd1aWRTZXJ2aWNlLCBSRUZJSUQgcmlpZCwgTFBWT0lEICpw
cHZPYmplY3QpOwpAQCAtNDAyLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBJbnZva2UoSU1GQXN5bmNSZXN1bHQqIHBBc3luY1Jl
c3VsdCk7CiAKICAgICAgICAgLy8gTWVkaWFQbGF5ZXJMaXN0ZW5lcgotICAgICAgICB2aXJ0dWFs
IHZvaWQgb25NZWRpYVBsYXllckRlbGV0ZWQoKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBvbk1l
ZGlhUGxheWVyRGVsZXRlZCgpIG92ZXJyaWRlOwogCiAgICAgICAgIHZvaWQgcGFpbnRDdXJyZW50
RnJhbWUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3BsYXlXaW4u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9QbGF0Zm9ybURpc3BsYXlX
aW4uaAppbmRleCA1NDMzMjhlMTMxZjM3Zjc1ZDU2NjY1NGE0ZTY1ODQ1MzhjMWZiYTNlLi5mZDhj
ZTI4MmM3M2JlYTljMzQ0ZDkxZGZkMjVjMmZkMDlmYzhmOTVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUGxhdGZvcm1EaXNwbGF5V2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1BsYXRmb3JtRGlzcGxheVdpbi5o
CkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1E
aXNwbGF5V2luIGZpbmFsIDogcHVibGljIFBsYXRmb3JtRGlzcGxheSB7CiBwcml2YXRlOgotICAg
IHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGxhdGZvcm1EaXNw
bGF5OjpUeXBlOjpXaW5kb3dzOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXaW5kb3dzOyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy94MTEvUGxhdGZvcm1EaXNwbGF5WDExLmgKaW5kZXggMDdjOGI0OTY2OTVlNjk2NWMzOWRm
OWU3OTIxYTk1NDI1NWJmN2IyZS4uZWZhZTVhYmI1N2EyNTNhNWUxNGRhM2NlMTgxYTcwYmU1NTQ1
MjJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MveDExL1Bs
YXRmb3JtRGlzcGxheVgxMS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3gxMS9QbGF0Zm9ybURpc3BsYXlYMTEuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
RGlzcGxheSogbmF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5OyB9CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQbGF0Zm9y
bURpc3BsYXk6OlR5cGU6OlgxMTsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExOyB9CiAKICNpZiBVU0UoRUdMKQogICAg
IHZvaWQgaW5pdGlhbGl6ZUVHTERpc3BsYXkoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxBbmltYXRvckd0ay5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmgKaW5kZXggYWEzMTUwNmQ3YzY4ODU0
M2FhMTUzMzY2MzI4MGJiM2NjN2MzM2IzOC4uNzBlNWI3M2Y5ZGUxM2QyMTBjYjk5M2VlOTM1N2Q3
MzkyZGQzMjJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bEFuaW1hdG9yR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbEFu
aW1hdG9yR3RrLmgKQEAgLTQ1LDIzICs0NSwyMyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYg
RU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCi0gICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxi
YXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRp
cGxpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRB
bmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsRW5kTGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9y
aWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGll
cikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oY29u
c3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKSBv
dmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRpZEFkZFZlcnRpY2FsU2Nyb2xs
YmFyKFNjcm9sbGJhciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9u
dGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxs
UmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxSZW1vdmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopIG92ZXJyaWRl
OworICAgIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbFJlbW92ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVkQ29udGVudEFyZWEoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWRDb250ZW50QXJlYSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50QXJlYURpZFNob3coKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgY29udGVudEFyZWFEaWRIaWRlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIG5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvY2tPdmVybGF5U2Nyb2xsYmFyU3RhdGVUb0hpZGRl
bihib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdXNlRW50ZXJlZENvbnRlbnRBcmVhKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBtb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpIG92ZXJyaWRlOworICAgIHZvaWQgY29udGVu
dEFyZWFEaWRTaG93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250ZW50QXJlYURpZEhpZGUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQoY29uc3QgRmxvYXRT
aXplJiBkZWx0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2NrT3ZlcmxheVNjcm9sbGJhclN0YXRl
VG9IaWRkZW4oYm9vbCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG92ZXJsYXlTY3JvbGxiYXJBbmlt
YXRpb25UaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzaG93T3ZlcmxheVNjcm9sbGJhcnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKaW5kZXgg
ZTQ3NDAxNTU1NzNiYTlhOTk3NGFlZGUwZmE3NzM3NmQ4OGM1NjQ0NS4uYTVjNDhkOTJjNWY2Nzli
MjNjNTM2MzUyZGQ3MzYyZmRmZWJiYzY4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKQEAgLTM3LDMzICszNywzMyBAQCBjbGFzcyBTY3Jv
bGxiYXJUaGVtZUd0ayBmaW5hbCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXImLCBTY3JvbGxiYXJQYXJ0LCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzQnV0dG9u
cyhTY3JvbGxiYXImKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNUaHVt
YihTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wpIG92ZXJyaWRlOworICAgIEludFJlY3QgZm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCkgb3ZlcnJpZGU7Cisg
ICAgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyJiwgYm9vbCkgb3ZlcnJpZGU7CiAKICNpZm5k
ZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBTY3JvbGxiYXJUaGVtZUd0aygpOwogCiAgICAgdXNp
bmcgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUmVjdDsKICAgICBJbnRSZWN0IHRodW1i
UmVjdChTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
JiwgU2Nyb2xsYmFyJiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uUHJlc3NBY3Rpb24gaGFuZGxlTW91c2VQcmVzc0V2
ZW50KFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIFNjcm9sbGJhclBhcnQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyJiwgR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQm
LCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKKyAgICBTY3JvbGxiYXJCdXR0
b25QcmVzc0FjdGlvbiBoYW5kbGVNb3VzZVByZXNzRXZlbnQoU2Nyb2xsYmFyJiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiwgU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CisgICAgaW50IHNjcm9s
bGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSkgb3ZlcnJpZGU7CisgICAgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKIAogICAgIC8vIFRPRE86IFRo
ZXNlIGFyZSB0aGUgZGVmYXVsdCBHVEsrIHZhbHVlcy4gQXQgc29tZSBwb2ludCB3ZSBzaG91bGQg
cHVsbCB0aGVzZSBmcm9tIHRoZSB0aGVtZSBpdHNlbGYuCi0gICAgdmlydHVhbCBkb3VibGUgaW5p
dGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gMC4yMDsgfQotICAg
IHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4g
MC4wMjsgfQotICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV91c2VzT3ZlcmxheVNjcm9sbGJhcnM7IH0KKyAgICBkb3VibGUgaW5pdGlhbEF1dG9zY3Jv
bGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gMC4yMDsgfQorICAgIGRvdWJsZSBhdXRv
c2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIDAuMDI7IH0KKyAgICB2b2lkIHRo
ZW1lQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VzT3ZlcmxheVNjcm9sbGJhcnM7IH0KICAgICAv
LyBXaGVuIHVzaW5nIG92ZXJsYXkgc2Nyb2xsYmFycywgYWx3YXlzIGludmFsaWRhdGUgdGhlIHdo
b2xlIHNjcm9sbGJhciB3aGVuIGVudGVyaW5nL2xlYXZpbmcuCi0gICAgdmlydHVhbCBib29sIGlu
dmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VzT3Zlcmxh
eVNjcm9sbGJhcnM7IH0KKyAgICBib29sIGludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkgb3Zl
cnJpZGUgeyByZXR1cm4gbV91c2VzT3ZlcmxheVNjcm9sbGJhcnM7IH0KIAogcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVRoZW1lUHJvcGVydGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCmlu
ZGV4IDQxZWY5ZDI2NmE3YTViYjY0OTdkZTBiNzg4ZmFkYjY0MTM4NjYyYzYuLmY5ZTU2OTZjYWE0
OTg2MmEwYTkxZWYzMjdlMTQ2ZGEwZjQxZWIxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgK
QEAgLTQyLDE4ICs0MiwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
flBOR0ltYWdlRGVjb2RlcigpOwogCiAgICAgICAgIC8vIEltYWdlRGVjb2RlcgotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJwbmciOyB9CisgICAgICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJwbmciOyB9CiAjaWYgRU5BQkxFKEFQTkcpCi0gICAgICAgIHZpcnR1YWwg
c2l6ZV90IGZyYW1lQ291bnQoKSBvdmVycmlkZSB7IHJldHVybiBtX2ZyYW1lQ291bnQ7IH0KLSAg
ICAgICAgdmlydHVhbCBpbnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9wbGF5Q291bnQtMTsgfQorICAgICAgICBzaXplX3QgZnJhbWVDb3VudCgpIG92ZXJyaWRl
IHsgcmV0dXJuIG1fZnJhbWVDb3VudDsgfQorICAgICAgICBpbnQgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbGF5Q291bnQtMTsgfQogI2VuZGlmCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVh
bCBib29sIHNldFNpemUodW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgb3ZlcnJpZGU7
CisgICAgICAgIGJvb2wgc2V0U2l6ZSh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KSBv
dmVycmlkZTsKKyAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCBp
bmRleCkgb3ZlcnJpZGU7CiAgICAgICAgIC8vIENBVVRJT046IHNldEZhaWxlZCgpIGRlbGV0ZXMg
fG1fcmVhZGVyfC4gIEJlIGNhcmVmdWwgdG8gYXZvaWQKICAgICAgICAgLy8gYWNjZXNzaW5nIGRl
bGV0ZWQgbWVtb3J5LCBlc3BlY2lhbGx5IHdoZW4gY2FsbGluZyB0aGlzIGZyb20gaW5zaWRlCiAg
ICAgICAgIC8vIFBOR0ltYWdlUmVhZGVyIQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVk
KCkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgc2V0RmFpbGVkKCkgb3ZlcnJpZGU7CiAKICAgICAg
ICAgLy8gQ2FsbGJhY2tzIGZyb20gbGlicG5nCiAgICAgICAgIHZvaWQgaGVhZGVyQXZhaWxhYmxl
KCk7CkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBm
cmFtZUhlYWRlcigpOwogCiAgICAgICAgIHZvaWQgaW5pdCgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCBjbGVhckJlZm9yZUZyYW1lKSBvdmVycmlk
ZTsKKyAgICAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90IGNsZWFyQmVmb3Jl
RnJhbWUpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0NvbXBsZXRlKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25D
bGllbnRJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VNb3Rpb25DbGll
bnRJT1MuaAppbmRleCAzYTg3NWU2ZDdiNjVjZDAxNTIxMDU2YTQyZTIyMWJmNTQ2YzIyNmE3Li45
NTY3MWMzNzViNWEzNTM2MzIzYjE3NmYzOGY4MGRhOGY3Y2U0NzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvRGV2aWNlTW90aW9uQ2xpZW50SU9TLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU1vdGlvbkNsaWVudElPUy5oCkBAIC00Miwx
MiArNDIsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRGV2aWNlTW90aW9uQ2xpZW50
SU9TIDogcHVibGljIERldmljZU1vdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgRGV2aWNlTW90
aW9uQ2xpZW50SU9TKCk7Ci0gICAgdmlydHVhbCB+RGV2aWNlTW90aW9uQ2xpZW50SU9TKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNlTW90aW9uQ29udHJv
bGxlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgRGV2aWNlTW90aW9uRGF0YSogbGFzdE1vdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7Cisg
ICAgfkRldmljZU1vdGlvbkNsaWVudElPUygpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udHJv
bGxlcihEZXZpY2VNb3Rpb25Db250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVw
ZGF0aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKKyAg
ICBEZXZpY2VNb3Rpb25EYXRhKiBsYXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkZXZpY2VNb3Rpb25Db250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IG1vdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRv
dWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudElPUy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmgKaW5kZXggMzll
NmVkYmYzNGEyN2NmYTRhMzc1ZjkxYzgxNTk1ZGFjNDJkNTJlYi4uMjI4ZWY3MmRkOTg0ODIzN2Yx
MTI2Y2RkMjgzMGRmYTZhYmI0NjhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SU9TLmgKQEAgLTQyLDEyICs0Miwx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElP
UyA6IHB1YmxpYyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRJT1MoKTsKLSAgICB2aXJ0dWFsIH5EZXZpY2VPcmllbnRhdGlvbkNs
aWVudElPUygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgRGV2aWNlT3JpZW50YXRpb25EYXRhKiBsYXN0T3JpZW50YXRp
b24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgfkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50SU9TKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CisgICAgRGV2aWNlT3JpZW50
YXRpb25EYXRhKiBsYXN0T3JpZW50YXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRl
dmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBvcmllbnRhdGlvbkNoYW5nZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3Vi
bGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Nyb2xsQW5p
bWF0b3JJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklP
Uy5oCmluZGV4IDQwNzkwNjcyZDE3MWU5MjNkM2RlNTFkZGE3ZThiZTE3ZDg4OWFjODQuLjc0ZWRj
OGVjYmZjNGE2NmM4ZDI5NTFkMmY0ZWVkMjUzMWU1YTFhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxBbmltYXRvcklPUy5oCkBAIC00MCw3ICs0MCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxBbmltYXRvcklPUygpOwogCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0
Zm9ybVRvdWNoRXZlbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29u
c3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TY3JvbGxiYXJUaGVtZUlPUy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLmgKaW5kZXgg
MDU5N2Y4MzRlOWIzMTE3YTNkNTEwMzM4NWE0OGI4ZjY1YTEyNTM3MS4uNzU2ZDQwNjA3ZjU2M2E2
Y2U1OThlMjliYjI3YjQwZTk1NWViYTYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Njcm9sbGJhclRoZW1lSU9TLmgKQEAgLTM1LDI5ICszNSwyOSBAQCBwdWJsaWM6CiAg
ICAgU2Nyb2xsYmFyVGhlbWVJT1MoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUlPUygp
OwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciYsIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnQoU2Ny
b2xsYmFyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29u
dHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKSBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgb3ZlcnJp
ZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGRvdWJsZSBp
bml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJs
ZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlOworICAgIGRvdWJsZSBpbml0aWFsQXV0
b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZTsKKyAgICBkb3VibGUgYXV0b3Njcm9sbFRpbWVy
RGVsYXkoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVu
dCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2Nyb2xsYmFyQnV0dG9u
c1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHVu
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNCdXR0
b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
JiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7Cisg
ICAgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVy
cmlkZTsKKyAgICBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXImLCBib29sIHBhaW50aW5nID0g
ZmFsc2UpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhciYpIG92ZXJyaWRlOworICAgIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
Jikgb3ZlcnJpZGU7CiAKIHB1YmxpYzoKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5
Q2FsbGJhY2tJT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlR0NBY3Rp
dml0eUNhbGxiYWNrSU9TLmgKaW5kZXggOWM2NGEwZGI3NDNhM2UxMzUyNGE5OTE3ZDZlZTQzZmNi
MzFjYTMwNy4uYmI5MzM5YzAyZjk3MzA4MmY5MDZkYjlhMmEwMTM0ZDIyZDUyY2ZjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVHQ0FjdGl2aXR5Q2FsbGJh
Y2tJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUdDQWN0aXZp
dHlDYWxsYmFja0lPUy5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB+V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlk
ZSB7IH0KKyAgICB+V2ViU2FmZUZ1bGxHQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0K
IAogcHJpdmF0ZToKICAgICBXZWJTYWZlRnVsbEdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAq
IGhlYXApCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhoZWFwKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KKyAg
ICB+V2ViU2FmZUVkZW5HQ0FjdGl2aXR5Q2FsbGJhY2soKSBvdmVycmlkZSB7IH0KIAogcHJpdmF0
ZToKICAgICBXZWJTYWZlRWRlbkdDQWN0aXZpdHlDYWxsYmFjayhKU0M6OkhlYXAqIGhlYXApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUluY3JlbWVudGFs
U3dlZXBlcklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlNhZmVJbmNyZW1l
bnRhbFN3ZWVwZXJJT1MuaAppbmRleCBlOWFjNzVlYTU5MTExNzE1ODdhOWQ3ZWI4MjQ1Y2JjMmQw
MzMyNTkyLi42NjE5ZjY4MjdmYTkxZTc3ZDNjMjQzNjVhNTcyZjRjN2VhNTZiMzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViU2FmZUluY3JlbWVudGFsU3dlZXBl
cklPUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJTYWZlSW5jcmVtZW50
YWxTd2VlcGVySU9TLmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIH5XZWJTYWZlSW5jcmVtZW50YWxTd2VlcGVyKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgfldlYlNhZmVJbmNyZW1lbnRhbFN3ZWVwZXIoKSBvdmVycmlkZSB7IH0KIAogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXggYzlkMzg5NzVkODI2NDYwOWYwMThkNzY3
YTk1OTUxMmZhODcyMzBkMS4uMjk2OTY3MzliMTBkYmVhMWQ3MTE0MGVjMTg2MWQwOWIyNjljNmQ4
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCkBAIC0xMTMsNDQgKzExMyw0NCBA
QCBwcml2YXRlOgogICAgIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0KCkgeyB9
CiAKICAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgotICAgIHZpcnR1YWwg
dm9pZCBkaWRTZXR1cEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RW50ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV4aXRG
dWxsc2NyZWVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsZWFudXBGdWxsc2Ny
ZWVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2V0dXBGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRp
ZEV4aXRGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVl
bigpIG92ZXJyaWRlOworICAgIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKCkgb3Zl
cnJpZGU7CiAgICAgCiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAgdmly
dHVhbCB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50
VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVv
LCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNr
VGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RHVy
YXRpb24oZG91YmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBj
dXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnVm
ZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5
aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9EaW1l
bnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGVn
aWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywg
dWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRFeHRlcm5hbFBs
YXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFdpcmVsZXNzVmlkZW9Q
bGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViVmlkZW9GdWxsc2Ny
ZWVuTW9kZWwKLSAgICB2aXJ0dWFsIHZvaWQgcGxheSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBwYXVzZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQbGF5U3RhdGUo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5TY3J1YmJpbmcoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZW5kU2NydWJiaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNlZWtUb1RpbWUoZG91YmxlIHRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBm
YXN0U2Vlayhkb3VibGUgdGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nh
bm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdC
YWNrd2FyZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dy
YXZpdHkpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3RBdWRpb01lZGlhT3B0aW9u
KHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVn
aW5TY3J1YmJpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuZFNjcnViYmluZygpIG92ZXJyaWRl
OworICAgIHZvaWQgc2Vla1RvVGltZShkb3VibGUgdGltZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBm
YXN0U2Vlayhkb3VibGUgdGltZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpblNjYW5uaW5nRm9y
d2FyZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3YXJkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFZpZGVvTGF5ZXJHcmF2aXR5KFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
OjpWaWRlb0dyYXZpdHkpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0QXVkaW9NZWRpYU9wdGlv
bih1aW50NjRfdCBpbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RMZWdpYmxlTWVkaWFP
cHRpb24odWludDY0X3QgaW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVD
aGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7CiAgICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtX21vZGVsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaAppbmRleCA5MDRmM2FlOTExNDkzZmZiZDg1OTY2NDhiNTUzOThkY2Nl
Njg0MzFlLi5hN2M5Y2JlNGY5NjFjNjBhNTE5NjBlYTYxYmQzYWIzOWMyZDg3MDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQuaApAQCAtNzEsMTggKzcxLDE4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsKFdlYlZpZGVvRnVs
bHNjcmVlbk1vZGVsKik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRXZWJWaWRlb0Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcihXZWJWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciopOwog
ICAgIAotICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBv
dmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oZG91
YmxlKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0Q3VycmVu
dFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkgb3ZlcnJpZGU7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVm
ZmVyZWRUaW1lKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0
UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKSBvdmVycmlkZTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlk
ZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCBzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJikgb3Zl
cnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldENhblBsYXlGYXN0UmV2
ZXJzZShib29sKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0
QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB2b2lkIHNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJp
ZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldEV4dGVybmFsUGxheWJhY2so
Ym9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgV1RGOjpTdHJpbmcgbG9j
YWxpemVkRGV2aWNlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzZXRNZWRpYVN0YXRlKCkgb3ZlcnJpZGU7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUg
YW5jaG9yVGltZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRCdWZmZXJl
ZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpIG92ZXJyaWRl
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlk
ZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wpIG92ZXJy
aWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBl
LCBXVEY6OlN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJy
aWRlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNldHVwRnVsbHNjcmVlbihV
SVZpZXcmLCBjb25zdCBJbnRSZWN0JiBpbml0aWFsUmVjdCwgVUlWaWV3ICosIEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0
dXJlUGxheWJhY2spOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxz
Y3JlZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9ISURHYW1l
cGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvSElER2FtZXBhZC5oCmluZGV4IDRl
YzUyMDg1ODRmODUwM2M0MTdiZjVjYjhmZTAzYmMwYWQ2ZTA0NzEuLmE2ZDkzMDM1YmUzNjZlODg5
YWU5NjA1OTdhZjQ5NTIyNWY2ZTA2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9ISURHYW1lcGFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0hJ
REdhbWVwYWQuaApAQCAtNjgsMTAgKzY4LDEwIEBAIHN0cnVjdCBISURHYW1lcGFkQnV0dG9uIDog
SElER2FtZXBhZEVsZW1lbnQgewogCiAgICAgdWludDMyX3QgcHJpb3JpdHk7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaXNCdXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc0J1dHRvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8v
IEJ1dHRvbnMgbm9ybWFsaXplIHRvIHRoZSByYW5nZSAoMC4wKSAtICgxLjApCi0gICAgdmlydHVh
bCBkb3VibGUgbm9ybWFsaXplZFZhbHVlKCkgb3ZlcnJpZGUKKyAgICBkb3VibGUgbm9ybWFsaXpl
ZFZhbHVlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiAocmF3VmFsdWUgLSBtaW4p
IC8gKG1heCAtIG1pbik7CiAgICAgfQpAQCAtODMsMTAgKzgzLDEwIEBAIHN0cnVjdCBISURHYW1l
cGFkQXhpcyA6IEhJREdhbWVwYWRFbGVtZW50IHsKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCBib29sIGlzQXhpcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzQXhpcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIEF4ZXMg
bm9ybWFsaXplIHRvIHRoZSByYW5nZSAoLTEuMCkgLSAoMS4wKQotICAgIHZpcnR1YWwgZG91Ymxl
IG5vcm1hbGl6ZWRWYWx1ZSgpIG92ZXJyaWRlCisgICAgZG91YmxlIG5vcm1hbGl6ZWRWYWx1ZSgp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gKCgocmF3VmFsdWUgLSBtaW4pIC8gKG1h
eCAtIG1pbikpICogMikgLSAxOwogICAgIH0KQEAgLTEwMCw4ICsxMDAsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHZhbHVlQ2hhbmdlZChJT0hJRFZhbHVlUmVmKTsKIAotICAgIHZpcnR1YWwgY29u
c3QgVmVjdG9yPGRvdWJsZT4mIGF4aXNWYWx1ZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBtX2F4aXNWYWx1ZXM7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBi
dXR0b25WYWx1ZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2J1dHRvblZhbHVl
czsgfQorICAgIGNvbnN0IFZlY3Rvcjxkb3VibGU+JiBheGlzVmFsdWVzKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gbV9heGlzVmFsdWVzOyB9CisgICAgY29uc3QgVmVjdG9yPGRvdWJs
ZT4mIGJ1dHRvblZhbHVlcygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fYnV0dG9u
VmFsdWVzOyB9CiAKIHByaXZhdGU6CiAgICAgdm9pZCBpbml0RWxlbWVudHMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ0EuaAppbmRleCA1ZDU4MTlmMmVl
NjFmZGE4ZjdkYzI5OTUxYmY1MzAyNzMxZjE0MTFjLi5hMDRiOTBjOTZiYzc2OGJhZjZlMzNjZmUz
OWJhNjAxNzNjZjg2Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGxhdGZvcm1DbG9ja0NBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRm
b3JtQ2xvY2tDQS5oCkBAIC00MCwxNSArNDAsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBs
YXRmb3JtQ2xvY2tDQSgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50
VGltZShkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRl
OworICAgIGRvdWJsZSBjdXJyZW50VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUg
cGxheVJhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBsYXlSYXRlKGRvdWJsZSkg
b3ZlcnJpZGU7CisgICAgZG91YmxlIHBsYXlSYXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3J1bm5pbmc7IH0KKyAgICB2b2lkIHN0YXJ0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX3J1bm5pbmc7IH0KIAogICAgIENBQ2xvY2tSZWYgbV9jbG9jazsKICAgICBib29sIG1f
cnVubmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9y
bUNsb2NrQ00uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUNsb2NrQ00u
aAppbmRleCBkMjZmOGY3ODA2M2NmZThjNTAxZjcyMTM5M2Q4NWIyM2Y4Mjk0MWJmLi40NTY4N2Q4
OGJmMzZiMzRlMDI4ZjkyODUwMDVmNjQzNzc4OWJhMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1DbG9ja0NNLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1BsYXRmb3JtQ2xvY2tDTS5oCkBAIC00MiwxOCArNDIsMTggQEAgcHVibGlj
OgogICAgIFBsYXRmb3JtQ2xvY2tDTSgpOwogICAgIFBsYXRmb3JtQ2xvY2tDTShDTUNsb2NrUmVm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRDdXJyZW50VGltZShkb3VibGUpIG92ZXJyaWRlOworICAgIGRvdWJsZSBjdXJyZW50VGlt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRDdXJyZW50TWVkaWFUaW1lKGNvbnN0
IE1lZGlhVGltZSYpOwogICAgIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UGxheVJhdGUoZG91YmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGRvdWJsZSBwbGF5UmF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcmF0ZTsgfQor
ICAgIHZvaWQgc2V0UGxheVJhdGUoZG91YmxlKSBvdmVycmlkZTsKKyAgICBkb3VibGUgcGxheVJh
dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3JhdGU7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBzdGFydCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzUnVubmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcnVu
bmluZzsgfQorICAgIHZvaWQgc3RhcnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzUnVubmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcnVu
bmluZzsgfQogCiAgICAgQ01UaW1lYmFzZVJlZiB0aW1lYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZWJhc2UuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbEFuaW1hdG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsQW5pbWF0b3JNYWMuaAppbmRleCA3OTRiMTdhMTM1ZjFmOWIzYzYzMDFhMGI5ZTc2YWVhNWI4
NmFiNjQ2Li43YjRlZjUzODUwYmY1NWU5ZDcxOWUwZmRiYTg5MGZlM2I4NThhZWFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMuaApAQCAtNjMs
NyArNjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVj
dChjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyc0NhbkJlQWN0
aXZlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBzY3JvbGxiYXJzQ2FuQmVBY3Rp
dmUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+
IG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyOwpAQCAtODEsNTAgKzgxLDUwIEBAIHByaXZhdGU6CiAg
ICAgVGltZXIgbV9zZW5kQ29udGVudEFyZWFTY3JvbGxlZFRpbWVyOwogICAgIEZsb2F0U2l6ZSBt
X2NvbnRlbnRBcmVhU2Nyb2xsZWRUaW1lclNjcm9sbERlbHRhOwogCi0gICAgdmlydHVhbCBib29s
IHNjcm9sbChTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IHN0
ZXAsIGZsb2F0IG11bHRpcGxpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxU
b09mZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAg
IGJvb2wgc2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxv
YXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxUb09m
ZnNldFdpdGhvdXRBbmltYXRpb24oY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwogCiAjaWYg
RU5BQkxFKFJVQkJFUl9CQU5ESU5HKQogICAgIGJvb2wgc2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRz
VG9QYXJlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIGhh
bmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRl
OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFBsYXRm
b3JtV2hlZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQ
aGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsQW5pbWF0aW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9u
cygpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5n
ZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1v
dXNlRW50ZXJlZENvbnRlbnRBcmVhKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1vdXNl
RXhpdGVkQ29udGVudEFyZWEoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3Zl
ZEluQ29udGVudEFyZWEoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVk
U2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBt
b3VzZUV4aXRlZFNjcm9sbGJhcihTY3JvbGxiYXIqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgbW91c2VJc0Rvd25JblNjcm9sbGJhcihTY3JvbGxiYXIqLCBib29sKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1Jlc2l6ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEVuZExpdmVSZXNpemUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY29udGVudEFyZWFEaWRTaG93KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNv
bnRlbnRBcmVhRGlkSGlkZSgpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFu
Z2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQgY29udGVudEFy
ZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1vdXNlRW50ZXJlZENvbnRl
bnRBcmVhKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtb3VzZUV4aXRlZENvbnRlbnRBcmVhKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpIG92ZXJyaWRlOworICAg
IHZvaWQgbW91c2VFbnRlcmVkU2Nyb2xsYmFyKFNjcm9sbGJhciopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgbW91c2VFeGl0ZWRTY3JvbGxiYXIoU2Nyb2xsYmFyKikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBtb3VzZUlzRG93bkluU2Nyb2xsYmFyKFNjcm9sbGJhciosIGJvb2wpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgY29udGVudHNSZXNpemVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRW5k
TGl2ZVJlc2l6ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY29udGVudEFyZWFEaWRTaG93KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb250ZW50QXJlYURpZEhpZGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZEJlZ2luU2Nyb2xsR2VzdHVyZSgpIGNvbnN0OwogICAgIHZvaWQgZGlkRW5kU2Nyb2xsR2Vz
dHVyZSgpIGNvbnN0OwogICAgIHZvaWQgbWF5QmVnaW5TY3JvbGxHZXN0dXJlKCkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgbG9ja092ZXJsYXlTY3JvbGxiYXJTdGF0ZVRvSGlkZGVuKGJvb2wg
c2hvdWxkTG9ja1N0YXRlKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGxvY2tPdmVybGF5U2Ny
b2xsYmFyU3RhdGVUb0hpZGRlbihib29sIHNob3VsZExvY2tTdGF0ZSkgb3ZlcnJpZGUgZmluYWw7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmVWZXJ0aWNhbFNjcm9sbGJhcihT
Y3JvbGxiYXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkSG9yaXpvbnRhbFNj
cm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFJlbW92
ZUhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRB
ZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxS
ZW1vdmVWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEFkZEhvcml6b250YWxTY3JvbGxiYXIoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3
aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclBhcnRMYXllcnMoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2Uo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGhvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFNjcm9sbGJhclBhcnRpY2lwYXRl
SW5IaXRUZXN0aW5nKFNjcm9sbGJhciopIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU2Nyb2xs
YmFyUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoU2Nyb2xsYmFyKikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Q29udGVudEFyZWFTY3JvbGxlZChjb25zdCBGbG9hdFNpemUmIGRl
bHRhKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUNvbnRlbnRBcmVhU2Nyb2xsZWQoY29uc3Qg
RmxvYXRTaXplJiBkZWx0YSkgb3ZlcnJpZGU7CiAKICAgICAvLyBzZW5kQ29udGVudEFyZWFTY3Jv
bGxlZFNvb24oKSB3aWxsIGRvIHRoZSBzYW1lIHdvcmsgdGhhdCBzZW5kQ29udGVudEFyZWFTY3Jv
bGxlZCgpIGRvZXMgZXhjZXB0CiAgICAgLy8gaXQgZG9lcyBpdCBhZnRlciBhIHplcm8tZGVsYXkg
dGltZXIgZmlyZXMuIFRoaXMgd2lsbCBwcmV2ZW50IHVzIGZyb20gdXBkYXRpbmcgb3ZlcmxheSBz
Y3JvbGxiYXIgCkBAIC0xNDEsMTYgKzE0MSwxNiBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKFJV
QkJFUl9CQU5ESU5HKQogICAgIC8vLyBTY3JvbGxDb250cm9sbGVyQ2xpZW50IG1lbWJlciBmdW5j
dGlvbnMuCi0gICAgdmlydHVhbCBJbnRTaXplIHN0cmV0Y2hBbW91bnQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFsbG93c1ZlcnRpY2FsU3Ry
ZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgcGlubmVkSW5EaXJlY3Rpb24oY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGNhblNjcm9sbEhvcml6b250YWxseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBjYW5TY3JvbGxWZXJ0aWNhbGx5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rpb24pIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeVdpdGhvdXRDb250ZW50RWRnZUNvbnN0
cmFpbnRzKGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbW1l
ZGlhdGVTY3JvbGxCeShjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2Nyb2xsUG9zaXRpb25Ub0JvdW5kc0lmTmVjZXNzYXJ5KCkgb3ZlcnJpZGU7Cisg
ICAgSW50U2l6ZSBzdHJldGNoQW1vdW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhbGxvd3NIb3Jp
em9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlkZTsKKyAg
ICBib29sIGFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQm
KSBvdmVycmlkZTsKKyAgICBib29sIHBpbm5lZEluRGlyZWN0aW9uKGNvbnN0IEZsb2F0U2l6ZSYp
IG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2Nyb2xsSG9yaXpvbnRhbGx5KCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBjYW5TY3JvbGxWZXJ0aWNhbGx5KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRS
dWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lk
IGltbWVkaWF0ZVNjcm9sbEJ5V2l0aG91dENvbnRlbnRFZGdlQ29uc3RyYWludHMoY29uc3QgRmxv
YXRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeShjb25zdCBGbG9h
dFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNjcm9sbFBvc2l0aW9uVG9Cb3VuZHNJ
Zk5lY2Vzc2FyeSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0FscmVhZHlQaW5uZWRJbkRpcmVj
dGlvbk9mR2VzdHVyZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBTY3JvbGxFdmVudEF4aXMp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5oCmluZGV4IGE5MWFkYmEyOGQ4OTM3NzNiZDg1NDA0NDYzNjQwZTE1MGRjMzgwZmIuLjdk
MTM2ZTQ0NTg3MzYyNmU0ZGUxODZjNGU4MWJhMmQwYzMxNGVjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCkBAIC0zNywyNCArMzcsMjQg
QEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnQoU2Nyb2xsYmFyJiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludChTY3JvbGxiYXImLCBHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3Vs
YXJTY3JvbGxiYXIpIG92ZXJyaWRlOworICAgIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKSBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0
ICBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXNlc092ZXJsYXlTY3JvbGxiYXJzQ2hhbmdl
ZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUoU2Nyb2xsYmFyJikgIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCB1c2VzT3ZlcmxheVNj
cm9sbGJhcnMoKSBjb25zdCAgb3ZlcnJpZGU7CisgICAgdm9pZCB1c2VzT3ZlcmxheVNjcm9sbGJh
cnNDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUoU2Nyb2xsYmFyJikgIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1
dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgYXV0b3Nj
cm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZTsKKyAgICBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxU
aW1lckRlbGF5KCkgb3ZlcnJpZGU7CisgICAgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9u
c1BsYWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1l
bnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVn
aXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXROZXdQYWludGVy
Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciYsIFNjcm9sbGJhclBhaW50ZXIpOwogICAgIFNjcm9sbGJh
clBhaW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXImKTsKQEAgLTczLDI0ICs3Mywy
NCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihT
Y3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyJikgb3Zl
cnJpZGU7CisgICAgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFy
JiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IGJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkg
b3ZlcnJpZGU7CisgICAgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOworICAgIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGludCBtYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkgb3ZlcnJpZGUgeyByZXR1
cm4gNDA7IH0KKyAgICBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIG92ZXJyaWRlIHsgcmV0
dXJuIDQwOyB9CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
Jikgb3ZlcnJpZGU7CisgICAgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVy
cmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvblByZXNzQWN0aW9uIGhhbmRs
ZU1vdXNlUHJlc3NFdmVudChTY3JvbGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBT
Y3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3Vt
ZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikg
b3ZlcnJpZGU7CisgICAgU2Nyb2xsYmFyQnV0dG9uUHJlc3NBY3Rpb24gaGFuZGxlTW91c2VQcmVz
c0V2ZW50KFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIFNjcm9sbGJhclBh
cnQpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIo
U2Nyb2xsYmFyJiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CiAgICAgaW50
IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQpOwogCiAjaWYgRU5B
QkxFKFJVQkJFUl9CQU5ESU5HKQotICAgIHZpcnR1YWwgdm9pZCBzZXRVcE92ZXJoYW5nQXJlYXNM
YXllckNvbnRlbnRzKEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRVcENvbnRlbnRTaGFkb3dMYXllcihHcmFwaGljc0xheWVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRVcE92ZXJoYW5nQXJlYXNMYXllckNvbnRlbnRzKEdyYXBoaWNz
TGF5ZXIqLCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VXBDb250ZW50U2hh
ZG93TGF5ZXIoR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oCmluZGV4IDNiNTEwNTIwYzM5ZDQyYmU2NWE4ZTQ5Yjhi
OGQ0MjYyODAzYzBiYWYuLjFiY2Y4N2FkOGFiZWM1MmNmM2UzYmNkNzNiZDkzNzBkMmZlZTIwZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oCkBAIC00MSwxMiArNDEsMTIgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
KCk7CiAgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gY3Jl
YXRlKGlkKTsKIAotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6RXhl
Y1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEFycmF5QnVm
ZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXpl
KEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxBcnJheUJ1
ZmZlcj4gZGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzRXF1YWwo
Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzRXF1YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24m
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uOjpPYmpDOyB9CisgICAgUGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uOjpPYmpDOyB9CiAK
ICAgICBpZCBuYXRpdmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlVmFsdWUuZ2V0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1lTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaAppbmRleCA0ZTAyNDhkMzQy
MjViYmViMjU1NWM2NTAxM2Q1NTU3MjdlODkwMzY2Li4zZDBlMTgzOGFmMzQ3YWI1YTIyNDZmMTQw
YzQ4MjM1Nzc1NDU5YTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
VGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVGhlbWVNYWMuaApA
QCAtNDAsMjAgKzQwLDIwIEBAIHB1YmxpYzoKICAgICBUaGVtZU1hYygpIHsgfQogICAgIHZpcnR1
YWwgflRoZW1lTWFjKCkgeyB9CiAgICAgCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlv
bkFkanVzdG1lbnQoQ29udHJvbFBhcnQpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBiYXNlbGlu
ZVBvc2l0aW9uQWRqdXN0bWVudChDb250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIE9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENvbnRy
b2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJy
aWRlOworICAgIE9wdGlvbmFsPEZvbnRDYXNjYWRlRGVzY3JpcHRpb24+IGNvbnRyb2xGb250KENv
bnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92
ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBjb250cm9sU2l6ZShDb250cm9s
UGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBMZW5ndGhTaXplJiwgZmxvYXQgem9vbUZh
Y3RvcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMZW5ndGhTaXplIG1pbmltdW1Db250
cm9sU2l6ZShDb250cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9y
KSBjb25zdCBvdmVycmlkZTsKKyAgICBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aFNpemUmLCBmbG9hdCB6b29tRmFjdG9y
KSBjb25zdCBvdmVycmlkZTsKKyAgICBMZW5ndGhTaXplIG1pbmltdW1Db250cm9sU2l6ZShDb250
cm9sUGFydCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgTGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0
LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6
b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExlbmd0aEJveCBjb250cm9s
Qm9yZGVyKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IExlbmd0aEJveCYg
em9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBvdmVycmlkZTsKKyAgICBMZW5ndGhC
b3ggY29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3Qg
TGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIExlbmd0aEJveCBjb250cm9sQm9yZGVyKENvbnRyb2xQYXJ0LCBjb25zdCBGb250Q2FzY2Fk
ZSYsIGNvbnN0IExlbmd0aEJveCYgem9vbWVkQm94LCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjb250cm9sUmVxdWlyZXNQcmVXaGl0ZVNwYWNl
KENvbnRyb2xQYXJ0IHBhcnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHBhcnQgPT0gUHVzaEJ1
dHRvblBhcnQ7IH0KKyAgICBib29sIGNvbnRyb2xSZXF1aXJlc1ByZVdoaXRlU3BhY2UoQ29udHJv
bFBhcnQgcGFydCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gcGFydCA9PSBQdXNoQnV0dG9uUGFy
dDsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KENvbnRyb2xQYXJ0LCBDb250cm9sU3RhdGVz
JiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgem9vbUZhY3Rvciwg
U2Nyb2xsVmlldyosIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChD
b250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRy
b2xTdGF0ZXMmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCB6b29t
RmFjdG9yLCBTY3JvbGxWaWV3KiwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGZsb2F0IHBhZ2VT
Y2FsZUZhY3Rvcikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbmZsYXRlQ29udHJvbFBhaW50UmVjdChD
b250cm9sUGFydCwgY29uc3QgQ29udHJvbFN0YXRlcyYsIEZsb2F0UmVjdCYsIGZsb2F0IHpvb21G
YWN0b3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IE9uY2UgUmVuZGVyVGhlbWVN
YWMgaXMgY29udmVydGVkIG92ZXIgdG8gdXNlIFRoZW1lIHRoZW4gdGhpcyBjYW4gYmUgaW50ZXJu
YWwgdG8gVGhlbWVNYWMuCiAgICAgc3RhdGljIE5TVmlldyogZW5zdXJlZFZpZXcoU2Nyb2xsVmll
dyosIGNvbnN0IENvbnRyb2xTdGF0ZXMmLCBib29sIHVzZVVucGFyZW50ZWRWaWV3ID0gZmFsc2Up
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzZXNzaW9uL21hYy9N
ZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzZXNzaW9uL21hYy9NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92aWRlck1h
Yy5oCmluZGV4IDBhNTMxMzc0ZGIyZjNjOTQ3MzEyODhkZTU3YTNkOTVjNDI0ZDc2ZTAuLjJmNTE0
N2U1OTBlNjI1MzUxOWQ2NzQxNTAyY2NjOTdmMDFmMjg4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc2Vzc2lvbi9tYWMvTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9u
UHJvdmlkZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXNlc3Npb24v
bWFjL01lZGlhU2Vzc2lvbkludGVycnVwdGlvblByb3ZpZGVyTWFjLmgKQEAgLTM2LDggKzM2LDgg
QEAgY2xhc3MgTWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXJNYWMgOiBwdWJsaWMgTWVk
aWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmkKIHB1YmxpYzoKICAgICB1c2luZyBNZWRpYVNlc3Np
b25JbnRlcnJ1cHRpb25Qcm92aWRlcjo6TWVkaWFTZXNzaW9uSW50ZXJydXB0aW9uUHJvdmlkZXI7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5MaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBiZWdpbkxpc3RlbmluZ0ZvckludGVycnVwdGlvbnMoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JJbnRlcnJ1cHRpb25zKCkgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVNlc3Npb25JbnRlcnJ1cHRpb25Qcm92
aWRlck1hYygpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9BVkNhcHR1cmVEZXZpY2VNYW5hZ2VyLmgKaW5kZXggNzk2YzFk
M2VmMzhmZGU0MjhhY2U5OTcwNjllMzY1YmQwNmRiZTkzYi4uZTc5NWYwNTA5MzQ5OTEyMGQ5ZDlk
ODkxZDA0ZDI4ZGU3NDczOTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0FWQ2FwdHVyZURldmljZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZDYXB0dXJlRGV2aWNlTWFuYWdlci5oCkBA
IC00Niw4ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFWQ2FwdHVyZVNlc3Np
b25JbmZvIDogcHVibGljIENhcHR1cmVTZXNzaW9uSW5mbyB7CiBwdWJsaWM6CiAgICAgQVZDYXB0
dXJlU2Vzc2lvbkluZm8oQVZDYXB0dXJlU2Vzc2lvbiopOwotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1ZpZGVvU2l6ZShjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBiZXN0U2Vzc2lvblByZXNldEZvclZpZGVvRGltZW5zaW9ucyhpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNWaWRlb1NpemUoY29u
c3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGJlc3RTZXNzaW9uUHJlc2V0
Rm9yVmlkZW9EaW1lbnNpb25zKGludCB3aWR0aCwgaW50IGhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6CiAgICAgQVZDYXB0dXJlU2Vzc2lvbiAqbV9wbGF0Zm9ybVNlc3Npb247CkBA
IC01NiwxNSArNTYsMTUgQEAgcHJpdmF0ZToKIGNsYXNzIEFWQ2FwdHVyZURldmljZU1hbmFnZXIg
ZmluYWwgOiBwdWJsaWMgQ2FwdHVyZURldmljZU1hbmFnZXIgewogICAgIGZyaWVuZCBjbGFzcyBO
ZXZlckRlc3Ryb3llZDxBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyPjsKIHB1YmxpYzoKLSAgICB2aXJ0
dWFsIFZlY3RvcjxDYXB0dXJlRGV2aWNlSW5mbz4mIGNhcHR1cmVEZXZpY2VMaXN0KCkgb3ZlcnJp
ZGU7CisgICAgVmVjdG9yPENhcHR1cmVEZXZpY2VJbmZvPiYgY2FwdHVyZURldmljZUxpc3QoKSBv
dmVycmlkZTsKIAogICAgIHN0YXRpYyBBVkNhcHR1cmVEZXZpY2VNYW5hZ2VyJiBzaW5nbGV0b24o
KTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhV
SUQoY29uc3QgU3RyaW5nJiwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJh
aW50cyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxSZWFsdGltZU1lZGlh
U291cmNlPj4gYmVzdFNvdXJjZXNGb3JUeXBlQW5kQ29uc3RyYWludHMoUmVhbHRpbWVNZWRpYVNv
dXJjZTo6VHlwZSwgUGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+IHNvdXJjZVdpdGhVSUQoY29uc3QgU3RyaW5nJiwg
UmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZSwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwor
ICAgIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+IGJlc3RTb3VyY2VzRm9yVHlw
ZUFuZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGUsIFBhc3NSZWZQdHI8TWVk
aWFDb25zdHJhaW50cz4pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBUcmFja1NvdXJjZUluZm9W
ZWN0b3IgZ2V0U291cmNlc0luZm8oY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHZlcmlmeUNvbnN0cmFpbnRzRm9yTWVkaWFUeXBlKFJlYWx0aW1lTWVkaWFTb3VyY2U6
OlR5cGUsIE1lZGlhQ29uc3RyYWludHMqLCBjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICBUcmFja1NvdXJjZUluZm9WZWN0b3IgZ2V0U291cmNlc0luZm8o
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCB2ZXJpZnlDb25zdHJhaW50c0Zvck1l
ZGlhVHlwZShSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBNZWRpYUNvbnN0cmFpbnRzKiwgY29u
c3QgQ2FwdHVyZVNlc3Npb25JbmZvKiwgU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRl
dmljZUNvbm5lY3RlZCgpOwogICAgIHZvaWQgZGV2aWNlRGlzY29ubmVjdGVkKEFWQ2FwdHVyZURl
dmljZSopOwpAQCAtNzUsMTIgKzc1LDEyIEBAIHByb3RlY3RlZDoKICAgICBzdGF0aWMgYm9vbCBp
c0F2YWlsYWJsZSgpOwogCiAgICAgQVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpOwotICAgIHZpcnR1
YWwgfkFWQ2FwdHVyZURldmljZU1hbmFnZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8qLCBSZWFs
dGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVhbHRpbWVNZWRpYVNvdXJjZSogY3JlYXRl
TWVkaWFTb3VyY2VGb3JDYXB0dXJlRGV2aWNlV2l0aENvbnN0cmFpbnRzKGNvbnN0IENhcHR1cmVE
ZXZpY2VJbmZvJiwgTWVkaWFDb25zdHJhaW50cyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ2Fw
dHVyZVNlc3Npb25JbmZvIGRlZmF1bHRDYXB0dXJlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTdXBwb3J0ZWRGcmFtZVJhdGUoZmxvYXQgZnJhbWVSYXRlKSBjb25z
dCBvdmVycmlkZTsKKyAgICB+QVZDYXB0dXJlRGV2aWNlTWFuYWdlcigpIG92ZXJyaWRlOworICAg
IGJvb2wgc2Vzc2lvblN1cHBvcnRzQ29uc3RyYWludChjb25zdCBDYXB0dXJlU2Vzc2lvbkluZm8q
LCBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0
cmluZyYgdmFsdWUpIG92ZXJyaWRlOworICAgIFJlYWx0aW1lTWVkaWFTb3VyY2UqIGNyZWF0ZU1l
ZGlhU291cmNlRm9yQ2FwdHVyZURldmljZVdpdGhDb25zdHJhaW50cyhjb25zdCBDYXB0dXJlRGV2
aWNlSW5mbyYsIE1lZGlhQ29uc3RyYWludHMqKSBvdmVycmlkZTsKKyAgICBDYXB0dXJlU2Vzc2lv
bkluZm8gZGVmYXVsdENhcHR1cmVTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZWZyZXNoQ2FwdHVyZURldmljZUxpc3QoKSBvdmVycmlkZTsKKyAgICBib29sIGlzU3VwcG9ydGVk
RnJhbWVSYXRlKGZsb2F0IGZyYW1lUmF0ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJl
Z2lzdGVyRm9yRGV2aWNlTm90aWZpY2F0aW9ucygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL0RldmljZU1vdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCmluZGV4IDA5OGEzMWE0
NGFiOTc5MWYxNzFlMzZlMmFiMmNlYjcwYWNkNDQ3MjAuLjdjNjI2ODI4ZWE0ZjM5NDFkZTViY2Uw
MTUzNTg4ZDFiMDRjYWU5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svRGV2aWNlTW90aW9uQ2xpZW50TW9jay5oCkBAIC00NSwxMiArNDUsMTIgQEAgcHVibGlj
OgogICAgIERldmljZU1vdGlvbkNsaWVudE1vY2soKTsKIAogICAgIC8vIERldmljZU1vdGlvbkNs
aWVudAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKERldmljZU1vdGlvbkNvbnRyb2xs
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IERldmljZU1vdGlvbkRhdGEqIGxhc3RNb3Rpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X21vdGlvbi5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q29udHJvbGxlcihEZXZpY2VNb3Rpb25Db250
cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKKyAgICBEZXZpY2VNb3Rpb25EYXRhKiBs
YXN0TW90aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9tb3Rpb24uZ2V0KCk7IH0KICAg
ICAvLyBtb2NrIGlzIG93bmVkIGJ5IHRoZSB0ZXN0aW5nIGZyYW1ld29yaywgd2hpY2ggc2hvdWxk
IGhhbmRsZSBkZWxldGlvbgotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVy
RGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9sbGVy
RGVzdHJveWVkKCkgb3ZlcnJpZGUgeyB9CiAKICAgICB2b2lkIHNldE1vdGlvbihQYXNzUmVmUHRy
PERldmljZU1vdGlvbkRhdGE+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgKaW5kZXggMzNhZGJlNzJm
ODJjNjEzNzI2ZmI4YWM0Mzg4MzJiOGZlM2U2YmQyZi4uMTM4NGFmMmU2YmM3NGI4MjUyNDU0MGI2
MjMxYjYyYmRkY2QzOThlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oCkBAIC00NSwxMSArNDUsMTEg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
aygpOwogCiAgICAgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udHJvbGxlcihEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIERldmljZU9yaWVudGF0aW9u
RGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9vcmllbnRh
dGlvbi5nZXQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldENvbnRyb2xsZXIoRGV2aWNl
T3JpZW50YXRpb25Db250cm9sbGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFVwZGF0aW5n
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKKyAgICBEZXZp
Y2VPcmllbnRhdGlvbkRhdGEqIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fb3JpZW50YXRpb24uZ2V0KCk7IH0KKyAgICB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRPcmllbnRhdGlvbihQYXNzUmVmUHRyPERldmljZU9yaWVudGF0aW9uRGF0YT4pOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RUTUZTZW5kZXJIYW5k
bGVyTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9SVENEVE1GU2VuZGVySGFu
ZGxlck1vY2suaAppbmRleCAyMzg4MjNkZDVkYWY2NzcyZjEwZTkxMmQyNTZkNWRkMzE0NTk0MGQ5
Li5hM2RmOTc3YzI3OTQzZjI5MDkwMGRiZGI0NzU4MmFmZGY4YTQxODJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RUTUZTZW5kZXJIYW5kbGVyTW9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRFRNRlNlbmRlckhhbmRsZXJNb2Nr
LmgKQEAgLTM4LDEwICszOCwxMCBAQCBwdWJsaWM6CiAgICAgUlRDRFRNRlNlbmRlckhhbmRsZXJN
b2NrKCk7CiAgICAgdmlydHVhbCB+UlRDRFRNRlNlbmRlckhhbmRsZXJNb2NrKCkgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFJUQ0RUTUZTZW5kZXJIYW5kbGVyQ2xpZW50Kikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY3VycmVudFRvbmVCdWZmZXIoKSBvdmVycmlkZSB7
IHJldHVybiBtX3RvbmVCdWZmZXI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSW5zZXJ0RFRNRigp
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW5zZXJ0RFRNRihj
b25zdCBTdHJpbmcmIHRvbmVzLCBsb25nIGR1cmF0aW9uLCBsb25nIGludGVyVG9uZUdhcCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRDbGllbnQoUlRDRFRNRlNlbmRlckhhbmRsZXJDbGllbnQqKSBv
dmVycmlkZTsKKyAgICBTdHJpbmcgY3VycmVudFRvbmVCdWZmZXIoKSBvdmVycmlkZSB7IHJldHVy
biBtX3RvbmVCdWZmZXI7IH0KKyAgICBib29sIGNhbkluc2VydERUTUYoKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgYm9vbCBpbnNlcnREVE1GKGNvbnN0IFN0cmluZyYgdG9uZXMsIGxv
bmcgZHVyYXRpb24sIGxvbmcgaW50ZXJUb25lR2FwKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBSVENEVE1GU2VuZGVySGFuZGxlckNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2suaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCmlu
ZGV4IDBmMDJmZjJlZDRlZWM2ZGIyOTZmNGNmODM4ZWFjOWU3ZDkxZjM4YzIuLmM5ZmFmOTk0ZDIz
OTBmNjI0NjA3MTRkNjVmZTFhOTIxZTM3YjVlMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDRGF0YUNoYW5uZWxIYW5kbGVyTW9jay5oCkBAIC0zOSwy
MCArMzksMjAgQEAgcHVibGljOgogICAgIFJUQ0RhdGFDaGFubmVsSGFuZGxlck1vY2soY29uc3Qg
U3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAgICAgdmlydHVhbCB+UlRDRGF0
YUNoYW5uZWxIYW5kbGVyTW9jaygpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldENsaWVudChS
VENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENsaWVu
dChSVENEYXRhQ2hhbm5lbEhhbmRsZXJDbGllbnQqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
U3RyaW5nIGxhYmVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYWJlbDsgfQotICAgIHZpcnR1YWwg
Ym9vbCBvcmRlcmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9vcmRlcmVkOyB9Ci0gICAgdmlydHVh
bCB1bnNpZ25lZCBzaG9ydCBtYXhSZXRyYW5zbWl0VGltZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
bWF4UmV0cmFuc21pdFRpbWU7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IG1heFJldHJh
bnNtaXRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9tYXhSZXRyYW5zbWl0czsgfQotICAgIHZpcnR1
YWwgU3RyaW5nIHByb3RvY29sKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm90b2NvbDsgfQotICAg
IHZpcnR1YWwgYm9vbCBuZWdvdGlhdGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZWdvdGlhdGVk
OyB9Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBpZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1f
aWQ7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgYnVmZmVyZWRBbW91bnQoKSBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CisgICAgU3RyaW5nIGxhYmVsKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9s
YWJlbDsgfQorICAgIGJvb2wgb3JkZXJlZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fb3JkZXJlZDsg
fQorICAgIHVuc2lnbmVkIHNob3J0IG1heFJldHJhbnNtaXRUaW1lKCkgb3ZlcnJpZGUgeyByZXR1
cm4gbV9tYXhSZXRyYW5zbWl0VGltZTsgfQorICAgIHVuc2lnbmVkIHNob3J0IG1heFJldHJhbnNt
aXRzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9tYXhSZXRyYW5zbWl0czsgfQorICAgIFN0cmluZyBw
cm90b2NvbCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcHJvdG9jb2w7IH0KKyAgICBib29sIG5lZ290
aWF0ZWQoKSBvdmVycmlkZSB7IHJldHVybiBtX25lZ290aWF0ZWQ7IH0KKyAgICB1bnNpZ25lZCBz
aG9ydCBpZCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KKyAgICB1bnNpZ25lZCBsb25nIGJ1
ZmZlcmVkQW1vdW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgdmlydHVhbCBib29s
IHNlbmRTdHJpbmdEYXRhKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzZW5kUmF3RGF0YShjb25zdCBjaGFyKiwgc2l6ZV90KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKKyAgICBib29sIHNlbmRTdHJpbmdEYXRhKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgc2VuZFJhd0RhdGEoY29uc3QgY2hhciosIHNpemVf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IFJUQ0RhdGFDaGFubmVsSGFuZGxlckNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1JUQ1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2suaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9j
ay5oCmluZGV4IDZlOTBiMDdiZWJhZmVlMGM1ZDY2NjEwNzZlMGQwMmNkOTc0Zjc2OTMuLjQwMjI3
Yjk0ZjE3ODZmZTY2ZGY0MTZmYWYzNzY5ZGM2OWJhYzBmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyTW9j
ay5oCkBAIC00MSwyMiArNDEsMjIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+UlRDUGVlckNv
bm5lY3Rpb25IYW5kbGVyTW9jaygpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUo
UGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uUHJpdmF0ZT4pIG92ZXJyaWRlOworICAgIGJvb2wg
aW5pdGlhbGl6ZShQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb25Qcml2YXRlPikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVz
Y3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnNQcml2YXRlPikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNyZWF0ZUFuc3dlcihQYXNzUmVmUHRyPFJUQ1Nlc3Np
b25EZXNjcmlwdGlvblJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ09mZmVyQW5zd2VyT3B0aW9uc1By
aXZhdGU+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxEZXNjcmlwdGlvbihQ
YXNzUmVmUHRyPFJUQ1ZvaWRSZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRp
b25EZXNjcmlwdG9yPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlbW90ZURlc2Ny
aXB0aW9uKFBhc3NSZWZQdHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbkRlc2NyaXB0b3I+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvcj4gbG9jYWxEZXNjcmlwdGlvbigpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlw
dG9yPiByZW1vdGVEZXNjcmlwdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB1cGRh
dGVJY2UoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uUHJpdmF0ZT4pIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBhZGRJY2VDYW5kaWRhdGUoUGFzc1JlZlB0cjxSVENWb2lkUmVxdWVzdD4s
IFBhc3NSZWZQdHI8UlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvcj4pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBhZGRTdHJlYW0oUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVByaXZhdGU+KSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Qcml2YXRlPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFBhc3NSZWZQ
dHI8UlRDU3RhdHNSZXF1ZXN0Pikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVEYXRhQ2hhbm5lbChjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBSVENEYXRhQ2hhbm5lbEluaXQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVySGFuZGxlcj4gY3JlYXRlRFRNRlNlbmRlcihQ
YXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOworICAgIHZvaWQgY3JlYXRlT2ZmZXIoUGFzc1JlZlB0cjxSVENT
ZXNzaW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlck9wdGlvbnNQcml2
YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBjcmVhdGVBbnN3ZXIoUGFzc1JlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb25SZXF1ZXN0PiwgUGFzc1JlZlB0cjxSVENPZmZlckFuc3dlck9wdGlvbnNQ
cml2YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMb2NhbERlc2NyaXB0aW9uKFBhc3NSZWZQ
dHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlbW90ZURlc2NyaXB0aW9uKFBhc3NSZWZQ
dHI8UlRDVm9pZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2Ny
aXB0b3I+KSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3I+IGxvY2FsRGVzY3JpcHRpb24oKSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3I+IHJlbW90ZURlc2NyaXB0aW9uKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCB1cGRhdGVJY2UoUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uUHJpdmF0
ZT4pIG92ZXJyaWRlOworICAgIGJvb2wgYWRkSWNlQ2FuZGlkYXRlKFBhc3NSZWZQdHI8UlRDVm9p
ZFJlcXVlc3Q+LCBQYXNzUmVmUHRyPFJUQ0ljZUNhbmRpZGF0ZURlc2NyaXB0b3I+KSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZFN0cmVhbShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtUHJpdmF0ZT4pIG92
ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlU3RyZWFtKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Qcml2
YXRlPikgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRTdGF0cyhQYXNzUmVmUHRyPFJUQ1N0YXRzUmVx
dWVzdD4pIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRs
ZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFJUQ0RhdGFD
aGFubmVsSW5pdCYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEVE1GU2VuZGVy
SGFuZGxlcj4gY3JlYXRlRFRNRlNlbmRlcihQYXNzUmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBvdmVycmlkZTsKIAogICAgIGV4cGxpY2l0IFJU
Q1BlZXJDb25uZWN0aW9uSGFuZGxlck1vY2soUlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFy
VGhlbWVNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5oCmluZGV4IGViYTExOWVmYmIxZjc3ZWRlNGE4YTRiNTk5ZjAwOTI1YjhhOWViYWMuLjdm
ZDAzOTIxNDUyMTU0ODg3MTRmYjc1ZWY2ZWQzNzU0YzQwNjRkNzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaApAQCAtMzMsMjMgKzMz
LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFNjcm9sbGJhciB0aGVtZSB1c2VkIGluIGlt
YWdlIHNuYXBzaG90cywgdG8gZWxpbWluYXRlIGFwcGVhcmFuY2UgZGlmZmVyZW5jZXMgYmV0d2Vl
biBwbGF0Zm9ybXMuCiBjbGFzcyBTY3JvbGxiYXJUaGVtZU1vY2sgOiBwdWJsaWMgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUgewogcHVibGljOgotICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpIG92ZXJyaWRlOwor
ICAgIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFy
U2Nyb2xsYmFyKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciYpIG92ZXJyaWRlICB7IHJldHVybiB0cnVlOyB9Cisg
ICAgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZSAgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9s
bGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIG92ZXJyaWRlIHsgcmV0dXJuIElu
dFJlY3QoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSBvdmVycmlkZSB7
IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9s
bGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9
IGZhbHNlKSBvdmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciYsIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyov
ID0gZmFsc2UpIG92ZXJyaWRlIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhciYsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYs
IFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIG92ZXJy
aWRlIHsgcmV0dXJuIDQwOyB9CisgICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKKyAgICBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIG92ZXJyaWRlIHsg
cmV0dXJuIDQwOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCBv
dmVycmlkZTsKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzTW9ja1RoZW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBsYXllck1lZGlhU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVBs
YXllck1lZGlhU291cmNlLmgKaW5kZXggNGNlMTJkM2JiYjA3NzU2MDczZmZkMWM4ZTMzZjgxNzJi
MDE1NzUxZi4uZDAzZTRhMDZlOTI0NTRiN2M4Njk1ZTQ1OGI3YTE5ZDdkOWRjNmY5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFQ
bGF5ZXJNZWRpYVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UuaApAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhZHZhbmNlQ3VycmVudFRpbWUoKTsKICAgICB2b2lkIHVwZGF0ZUR1
cmF0aW9uKGNvbnN0IE1lZGlhVGltZSYpOwogCi0gICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CiAgICAgdm9pZCBzZXROZXR3b3JrU3RhdGUo
TWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSk7CiAgICAgdm9pZCB3YWl0Rm9yU2Vla0NvbXBsZXRl
ZCgpOwpAQCAtNTgsMzMgKzU4LDMzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBNZWRp
YVBsYXllclByaXZhdGUgT3ZlcnJpZGVzCi0gICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgU3Ry
aW5nJiB1cmwpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYg
dXJsLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWQo
Y29uc3QgU3RyaW5nJiB1cmwpIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZChjb25zdCBTdHJpbmcm
IHVybCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIGxvYWQoTWVkaWFTdHJlYW1Qcml2YXRlJikgb3ZlcnJpZGUg
eyB9CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsTG9hZCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzQXVkaW8oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzaWJsZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Vla2luZygpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXVzZWQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgbWF4TWVkaWFUaW1lU2Vla2FibGUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IGJ1ZmZlcmVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGRp
ZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRT
aXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBN
ZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
TWVkaWFUaW1lIGR1cmF0aW9uTWVkaWFUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNlZWtXaXRoVG9sZXJhbmNlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyB0b3RhbFZpZGVvRnJhbWVzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25n
IGRyb3BwZWRWaWRlb0ZyYW1lcygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9u
ZyBjb3JydXB0ZWRWaWRlb0ZyYW1lcygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTWVkaWFUaW1l
IHRvdGFsRnJhbWVEZWxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsTG9hZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2UoKSBvdmVycmlk
ZTsKKyAgICBGbG9hdFNpemUgbmF0dXJhbFNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGhhc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc2V0VmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAgICBib29sIHNl
ZWtpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhdXNlZCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29ya1N0YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTWVkaWFUaW1lIG1heE1lZGlhVGltZVNlZWthYmxlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGRpZExvYWRpbmdQcm9ncmVzcygpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICBNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE1lZGlh
VGltZSBkdXJhdGlvbk1lZGlhVGltZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2Vla1dp
dGhUb2xlcmFuY2UoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVk
aWFUaW1lJikgb3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbG9uZyB0b3RhbFZpZGVvRnJhbWVzKCkg
b3ZlcnJpZGU7CisgICAgdW5zaWduZWQgbG9uZyBkcm9wcGVkVmlkZW9GcmFtZXMoKSBvdmVycmlk
ZTsKKyAgICB1bnNpZ25lZCBsb25nIGNvcnJ1cHRlZFZpZGVvRnJhbWVzKCkgb3ZlcnJpZGU7Cisg
ICAgTWVkaWFUaW1lIHRvdGFsRnJhbWVEZWxheSgpIG92ZXJyaWRlOwogCiAgICAgTWVkaWFQbGF5
ZXIqIG1fcGxheWVyOwogICAgIFJlZlB0cjxNb2NrTWVkaWFTb3VyY2VQcml2YXRlPiBtX21lZGlh
U291cmNlUHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKaW5kZXggNGIx
ZWUyNTZhNzUzOWJmZGYyOWFkNjkwNGZmZmQ5MzAyYmZhMTQ2OS4uOGM3MTY5ZWEwNzQxMmVkNGYw
YTdhMjEzMDg0NDZkMzg1OGY1M2M5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmgKQEAgLTY5LDE0ICs2OSwxNCBAQCBwcml2YXRlOgogICAgIE1vY2tNZWRpYVNvdXJjZVByaXZh
dGUoTW9ja01lZGlhUGxheWVyTWVkaWFTb3VyY2UqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQq
KTsKIAogICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBPdmVycmlkZXMKLSAgICB2aXJ0dWFsIEFk
ZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291cmNl
QnVmZmVyUHJpdmF0ZT4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFu
Z2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0
cmVhbVN0YXR1cykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVubWFya0VuZE9mU3RyZWFt
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9y
U2Vla0NvbXBsZXRlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZWVrQ29tcGxldGVk
KCkgb3ZlcnJpZGU7CisgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50
VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5k
T2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOworICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBv
dmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRDaGFuZ2VBY3RpdmVTdGF0ZShNb2NrU291cmNlQnVmZmVyUHJpdmF0ZSosIGJv
b2wgYWN0aXZlKTsKICAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2
YXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDQ4ZWJk
YmQwOGQ4MTQ5NGVjOGY2NmFlNjc5NWFmMzE3MGMyNDNiOTkuLjc0MTYwZmU3MTcyNTA4ZDc2MDhh
Y2M0M2FkMjlmYThjYzBkZTk2ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUuY3BwCkBAIC01NCwxNyArNTQsMTcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCBNZWRpYVRpbWUgcHJlc2VudGF0aW9uVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fYm94LnByZXNlbnRhdGlvblRpbWVzdGFtcCgpOyB9Ci0gICAgdmlydHVhbCBNZWRpYVRp
bWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRlY29kZVRpbWVz
dGFtcCgpOyB9Ci0gICAgdmlydHVhbCBNZWRpYVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JveC5kdXJhdGlvbigpOyB9Ci0gICAgdmlydHVhbCBBdG9taWNTdHJpbmcg
dHJhY2tJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faWQ7IH0KLSAgICB2aXJ0dWFsIHNp
emVfdCBzaXplSW5CeXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7
IH0KLSAgICB2aXJ0dWFsIFNhbXBsZUZsYWdzIGZsYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBQbGF0Zm9ybVNhbXBsZSBwbGF0Zm9ybVNhbXBsZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBGbG9hdFNpemUoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG9mZnNldFRpbWVzdGFtcHNCeShjb25zdCBN
ZWRpYVRpbWUmIG9mZnNldCkgb3ZlcnJpZGUgeyBtX2JveC5vZmZzZXRUaW1lc3RhbXBzQnkob2Zm
c2V0KTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYg
cHJlc2VudGF0aW9uVGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUmIGRlY29kZVRpbWVzdGFtcCkg
b3ZlcnJpZGUgeyBtX2JveC5zZXRUaW1lc3RhbXBzKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgZGVj
b2RlVGltZXN0YW1wKTsgfQorICAgIE1lZGlhVGltZSBwcmVzZW50YXRpb25UaW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gucHJlc2VudGF0aW9uVGltZXN0YW1wKCk7IH0KKyAgICBN
ZWRpYVRpbWUgZGVjb2RlVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmRlY29k
ZVRpbWVzdGFtcCgpOyB9CisgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9ib3guZHVyYXRpb24oKTsgfQorICAgIEF0b21pY1N0cmluZyB0cmFja0lEKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pZDsgfQorICAgIHNpemVfdCBzaXplSW5CeXRlcygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZihtX2JveCk7IH0KKyAgICBTYW1wbGVGbGFn
cyBmbGFncygpIGNvbnN0IG92ZXJyaWRlOworICAgIFBsYXRmb3JtU2FtcGxlIHBsYXRmb3JtU2Ft
cGxlKCkgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXplIHByZXNlbnRhdGlvblNpemUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQorICAgIHZvaWQgZHVtcChQcmludFN0cmVh
bSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgb2Zmc2V0VGltZXN0YW1wc0J5KGNvbnN0IE1l
ZGlhVGltZSYgb2Zmc2V0KSBvdmVycmlkZSB7IG1fYm94Lm9mZnNldFRpbWVzdGFtcHNCeShvZmZz
ZXQpOyB9CisgICAgdm9pZCBzZXRUaW1lc3RhbXBzKGNvbnN0IE1lZGlhVGltZSYgcHJlc2VudGF0
aW9uVGltZXN0YW1wLCBjb25zdCBNZWRpYVRpbWUmIGRlY29kZVRpbWVzdGFtcCkgb3ZlcnJpZGUg
eyBtX2JveC5zZXRUaW1lc3RhbXBzKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgZGVjb2RlVGltZXN0
YW1wKTsgfQogCiAgICAgdW5zaWduZWQgZ2VuZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYm94
LmdlbmVyYXRpb24oKTsgfQogCkBAIC05NiwxMCArOTYsMTAgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWZQdHI8TW9ja01lZGlhRGVzY3JpcHRpb24+IGNyZWF0ZShjb25zdCBNb2NrVHJhY2tCb3gm
IGJveCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IE1vY2tNZWRpYURlc2NyaXB0aW9uKGJveCkpOyB9
CiAgICAgdmlydHVhbCB+TW9ja01lZGlhRGVzY3JpcHRpb24oKSB7IH0KIAotICAgIHZpcnR1YWwg
QXRvbWljU3RyaW5nIGNvZGVjKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3guY29kZWMo
KTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9ib3gua2luZCgpID09IE1vY2tUcmFja0JveDo6VmlkZW87IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNBdWRpbygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm94LmtpbmQoKSA9PSBNb2NrVHJh
Y2tCb3g6OkF1ZGlvOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm94LmtpbmQoKSA9PSBNb2NrVHJhY2tCb3g6OlRleHQ7IH0KKyAgICBBdG9t
aWNTdHJpbmcgY29kZWMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JveC5jb2RlYygpOyB9
CisgICAgYm9vbCBpc1ZpZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gua2luZCgp
ID09IE1vY2tUcmFja0JveDo6VmlkZW87IH0KKyAgICBib29sIGlzQXVkaW8oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2JveC5raW5kKCkgPT0gTW9ja1RyYWNrQm94OjpBdWRpbzsgfQorICAg
IGJvb2wgaXNUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ib3gua2luZCgpID09IE1v
Y2tUcmFja0JveDo6VGV4dDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja01lZGlhRGVzY3JpcHRp
b24oY29uc3QgTW9ja1RyYWNrQm94JiBib3gpIDogbV9ib3goYm94KSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCAzYjllNWM1YmRhZWZiNzZjMDdmOGYyZDk0MGRi
M2ZkOTE3YTYxZjMwLi4xZmJkZDNmOGY3ZjEwYTE4MDAwNGQxODFmYzM4NWUyNGNiYTBkN2VlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC02MiwxNyArNjIsMTcgQEAg
cHJpdmF0ZToKICAgICBleHBsaWNpdCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFT
b3VyY2VQcml2YXRlKik7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlIG92ZXJyaWRlcwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgdW5zaWduZWQgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBmbHVzaEFuZEVucXVl
dWVOb25EaXNwbGF5aW5nU2FtcGxlcyhWZWN0b3I8UmVmUHRyPE1lZGlhU2FtcGxlPj4sIEF0b21p
Y1N0cmluZykgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGVucXVldWVTYW1wbGUoUGFz
c1JlZlB0cjxNZWRpYVNhbXBsZT4sIEF0b21pY1N0cmluZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpIG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Q2xpZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFwcGVuZChjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgYWJvcnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92
ZWRGcm9tTWVkaWFTb3VyY2UoKSBvdmVycmlkZTsKKyAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKKworICAgIHZvaWQgZmx1c2hBbmRFbnF1
ZXVlTm9uRGlzcGxheWluZ1NhbXBsZXMoVmVjdG9yPFJlZlB0cjxNZWRpYVNhbXBsZT4+LCBBdG9t
aWNTdHJpbmcpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShQYXNzUmVmUHRy
PE1lZGlhU2FtcGxlPiwgQXRvbWljU3RyaW5nKSBvdmVycmlkZTsKKyAgICBib29sIGlzUmVhZHlG
b3JNb3JlU2FtcGxlcyhBdG9taWNTdHJpbmcpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2b2lkIHNldEFjdGl2ZShib29sKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlhbGl6YXRpb25Cb3gmKTsKICAgICB2
b2lkIGRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBsZUJveCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAxNzk4
MjA5NTNkNjUyOWY5NmY5ZjRhYzZiMWM2NzJjZTA4ZjY1NGY5Li45OWMwMzc0N2M0YmI4YzM0M2Vk
Y2UxMmI3ZDE4OTAxMGM5YzFjY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaApAQCAtNTgsMTQgKzU4LDE0IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRTdG9yYWdlSXRlbXMoQmxvYkRhdGEqLCBjb25zdCBC
bG9iRGF0YUl0ZW1MaXN0JiwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBSZWZQdHI8
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3Rv
cjxCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJM
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwo
Y29uc3QgVVJMJiwgUmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3Qg
VVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNV
UkwpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJM
JiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgb3Zl
cnJpZGU7CisgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmKSBvdmVycmlkZTsK
KyAgICBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVS
TCYpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBVUkwm
KSBvdmVycmlkZTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYkRhdGE+PiBtX2Js
b2JzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxv
YlJlc291cmNlSGFuZGxlLmNwcAppbmRleCAxZWJiNjQ3MWYwNDMzN2ViY2I0ODRmOTM3N2MwZGM4
NmY4NDZkOTAwLi40MWQwMDllMzA1MzNkOWFjZjhmZTQxZjYzMWRiY2JhMmRkYmE4Y2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCkBAIC04MywxMCArODMsMTAgQEAgY2xhc3MgQmxvYlJlc291cmNlU3luY2hyb25v
dXNMb2FkZXIgOiBwdWJsaWMgUmVzb3VyY2VIYW5kbGVDbGllbnQgewogcHVibGljOgogICAgIEJs
b2JSZXNvdXJjZVN5bmNocm9ub3VzTG9hZGVyKFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3Bv
bnNlJiwgVmVjdG9yPGNoYXI+Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgLypm
aW5pc2hUaW1lKi8pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBj
aGFyKiwgdW5zaWduZWQsIGludCAvKmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRp
bWUqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlRXJyb3Im
IG1fZXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVzb3VyY2VIYW5kbGUuaAppbmRleCA1NWRjYzFlNmFiNmMyMWJmOGYyMDU0NjY5NDdhZjU1ZmVk
MmU1OTQyLi4xYWVhNjE1N2I2YzZiZTk2MmU3M2E2NDNkZDIyZjg5NTE4NjcxMjYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgfkJsb2JSZXNvdXJj
ZUhhbmRsZSgpOwogCiAgICAgLy8gRmlsZVN0cmVhbUNsaWVudCBtZXRob2RzLgotICAgIHZpcnR1
YWwgdm9pZCBkaWRHZXRTaXplKGxvbmcgbG9uZykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZE9wZW4oYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWQoaW50KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZEdldFNpemUobG9uZyBsb25nKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZE9wZW4oYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWFkKGludCkgb3ZlcnJp
ZGU7CiAKICAgICAvLyBSZXNvdXJjZUhhbmRsZSBtZXRob2RzLgotICAgIHZpcnR1YWwgdm9pZCBj
YW5jZWwoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbCgpIG92ZXJyaWRlOworICAgIHZvaWQg
Y29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZG9TdGFy
dCgpOwogICAgIHZvaWQgZ2V0U2l6ZUZvck5leHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUGluZ0hhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QaW5nSGFuZGxlLmgKaW5kZXggYzJkMDBhYWZhMTIwOTg1ZTc1ODEwNDY0YTEx
ZGRkZDk4MTY3NTIxNC4uYmNlYjhlODYxN2IzMmZiOGQ0MDFlYTFlYzRiMTlkZWRkMmVkY2JjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QaW5nSGFuZGxlLmgKQEAgLTU3
LDEyICs1NywxMiBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGUgeyBkZWxldGUgdGhpczsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgaW50KSBvdmVy
cmlkZSB7IGRlbGV0ZSB0aGlzOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3Im
KSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0FzeW5jQ2Fs
bGJhY2tzKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VzQXN5bmNDYWxsYmFja3MgPT0gVXNlc0Fz
eW5jQ2FsbGJhY2tzOjpZZXM7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJj
ZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlz
OyB9CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIq
LCB1bnNpZ25lZCwgaW50KSBvdmVycmlkZSB7IGRlbGV0ZSB0aGlzOyB9CisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlKSBvdmVycmlkZSB7IGRlbGV0ZSB0
aGlzOyB9CisgICAgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlIHsgZGVsZXRlIHRoaXM7IH0KKyAgICBib29sIHNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2U7IH0KKyAgICBib29sIHVzZXNBc3luY0NhbGxiYWNrcygpIG92
ZXJyaWRlIHsgcmV0dXJuIG1fdXNlc0FzeW5jQ2FsbGJhY2tzID09IFVzZXNBc3luY0NhbGxiYWNr
czo6WWVzOyB9CiAgICAgdm9pZCB0aW1lb3V0VGltZXJGaXJlZCgpIHsgZGVsZXRlIHRoaXM7IH0K
IAogICAgIHZpcnR1YWwgflBpbmdIYW5kbGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCmluZGV4IDFhYzMyYjQzYTE1ODJkOTdhMTgyYmQ1
MjkwM2YyOGJiZGQ0MWQzYmIuLjdmYjlmYWY5MGZjYTk0ZjY1NGM5MDAwNjc5MWFjNjhlZjcxYWRm
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VI
YW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFu
ZGxlLmgKQEAgLTExMSwxMSArMTExLDExIEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGTkVUV09SSykgfHwgVVNFKENVUkwpIHx8IFVTRShTT1VQKQogICAgIGJvb2wgc2hv
dWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwotICAgIHZpcnR1
YWwgdm9pZCByZWNlaXZlZENyZWRlbnRpYWwoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
LCBjb25zdCBDcmVkZW50aWFsJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVk
UmVxdWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZENhbmNlbGxhdGlv
bihjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRD
aGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYsIGNvbnN0IENyZWRlbnRpYWwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY2VpdmVkUmVxdWVz
dFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVjZWl2ZWRDaGFsbGVuZ2VSZWplY3Rpb24oY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
Q09DT0EpIHx8IFVTRShDRk5FVFdPUkspCkBAIC0yNjUsOCArMjY1LDggQEAgcHJpdmF0ZToKICAg
ICBib29sIHN0YXJ0KCk7CiAgICAgc3RhdGljIHZvaWQgcGxhdGZvcm1Mb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgU3Rv
cmVkQ3JlZGVudGlhbHMsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9y
PGNoYXI+JiBkYXRhKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZBdXRoZW50aWNhdGlvbkNsaWVu
dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZBdXRoZW50aWNh
dGlvbkNsaWVudCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQorICAgIHZvaWQgcmVmQXV0aGVudGlj
YXRpb25DbGllbnQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGTkVUV09SSykKICAgICBlbnVtIGNsYXNzIFNjaGVkdWxpbmdCZWhhdmlvciB7
IEFzeW5jaHJvbm91cywgU3luY2hyb25vdXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvU3luY2hyb25vdXNMb2FkZXJDbGllbnQuaAppbmRleCA3YzY3
NWU3NjBhNjMyN2M2ODc2MzZkOGI1YzM1MzgwNTE4OGU3M2VjLi5kNDQyZDA1MzQ2OWM3NzY4Njgy
ZDg2ZTcwYjk4ZDIwNDdlYzE0ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1N5bmNocm9ub3VzTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9TeW5jaHJvbm91c0xvYWRlckNsaWVudC5oCkBAIC00NSwxNSArNDUs
MTUgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUVycm9yIHBs
YXRmb3JtQmFkUmVzcG9uc2VFcnJvcigpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VIYW5kbGUqLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiAvKnJlZGlyZWN0UmVzcG9uc2UqLykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKFJlc291cmNlSGFuZGxlKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFJlc291cmNlSGFuZGxlKiwgZG91YmxlIC8qZmluaXNoVGltZSovKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZUhh
bmRsZSosIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIC8qcmVkaXJl
Y3RSZXNwb25zZSovKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9y
YWdlKFJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNl
SGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGludCAv
KmVuY29kZWREYXRhTGVuZ3RoKi8pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSAvKmZpbmlzaFRpbWUqLykgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIG92ZXJy
aWRlOwogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdmlydHVh
bCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKKyAgICBib29sIGNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBQcm90
ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgYm9vbCBtX2FsbG93U3RvcmVk
Q3JlZGVudGlhbHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuaAppbmRl
eCBjYWRjMTI1N2M4OGI0MTNlYjllNGMxM2QyNmE1MTk2MjcwYTJmZDNlLi5kYTBiMWQ0ZTQxMmRk
MTA3MzlhZTNkZjhkYzA3MzQ4ODUyZTc0Nzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWUuaApAQCAtNDMsMzEgKzQzLDMxIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBoYXNI
YW5kbGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXR1cFJlcXVlc3QoQ0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldHVwQ29ubmVjdGlv
blNjaGVkdWxpbmcoQ0ZVUkxDb25uZWN0aW9uUmVmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVsZWFzZUhhbmRsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0dXBSZXF1ZXN0KENGTXV0
YWJsZVVSTFJlcXVlc3RSZWYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0dXBDb25uZWN0aW9uU2No
ZWR1bGluZyhDRlVSTENvbm5lY3Rpb25SZWYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVsZWFzZUhh
bmRsZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRS
ZXF1ZXN0KENGVVJMUmVxdWVzdFJlZiwgQ0ZVUkxSZXNwb25zZVJlZikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJM
UmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShD
RkRhdGFSZWYsIENGSW5kZXggb3JpZ2luYWxMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoQ0ZFcnJvclJlZikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNl
UmVmIHdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJl
Zikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRv
dGFsQnl0ZXNXcml0dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIG92
ZXJyaWRlOworICAgIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0
UmVmLCBDRlVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShDRlVSTENvbm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZEZhaWwoQ0ZFcnJvclJlZikgb3ZlcnJpZGU7CisgICAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiB3aWxsQ2FjaGVSZXNwb25zZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoQ0ZVUkxBdXRoQ2hhbGxlbmdlUmVmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRvdGFsQnl0ZXNXcml0dGVuLCBD
RkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIG92ZXJyaWRlOworICAgIEJvb2xlYW4g
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZpcnR1YWwgQm9vbGVhbiBjYW5SZXNwb25kVG9Q
cm90ZWN0aW9uU3BhY2UoQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYpIG92ZXJyaWRlOworICAgIEJv
b2xlYW4gY2FuUmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVm
KSBvdmVycmlkZTsKICNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNL
KQogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KSBvdmVycmlk
ZTsKICNlbmRpZiAvLyBVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25zZShDRkNhY2hl
ZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0KENGVVJMUmVxdWVzdFJlZikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY29udGludWVXaWxsQ2FjaGVSZXNwb25z
ZShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCkgb3ZlcnJpZGU7
CiAjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKIAogICAgIGRp
c3BhdGNoX3F1ZXVlX3QgbV9xdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1N5bmNocm9ub3Vz
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZS5oCmluZGV4IDhjMTFjNzFjYTQ2
YzRmNGU1ZWUxMjFhMDFhZGM4OGU3NmNmOWFkMmMuLjk3ODlmODllMWQwODRlNjVlOTNkZmIyMjQx
ZDUxZGUyNzFhYTM0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU3luY2hyb25vdXNSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9TeW5jaHJvbm91c1Jlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGUuaApAQCAtMzYsMzIgKzM2LDMyIEBAIGNs
YXNzIFN5bmNocm9ub3VzUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZSBmaW5h
bCA6IHB1YmxpYyBSZXNvdXJjZUhhCiBwdWJsaWM6CiAgICAgU3luY2hyb25vdXNSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlKFJlc291cmNlSGFuZGxlKik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3Ro
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKENGRXJyb3JSZWYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoQ0ZEYXRhUmVmLCBDRkluZGV4IG9yaWdpbmFsTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEZhaWwoQ0ZFcnJvclJlZikgb3ZlcnJpZGU7CiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZ
X0NBTExCQUNLKQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlS
ZWYgZGF0YUFycmF5KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZB
cnJheVJlZiBkYXRhQXJyYXkpIG92ZXJyaWRlOwogI2VuZGlmIC8vIFVTRShORVRXT1JLX0NGREFU
QV9BUlJBWV9DQUxMQkFDSykKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgc2V0dXBSZXF1
ZXN0KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXR1cFJlcXVlc3QoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXR1cENvbm5lY3Rpb25TY2hlZHVsaW5nKENGVVJMQ29ubmVjdGlvblJlZikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZV
UkxSZXF1ZXN0UmVmLCBDRlVSTFJlc3BvbnNlUmVmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKENGVVJMQ29ubmVjdGlvblJlZiwgQ0ZVUkxSZXNwb25zZVJl
Zikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmIHdpbGxDYWNo
ZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJlZikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNlbmRCb2R5RGF0YShDRkluZGV4IHRvdGFsQnl0ZXNXcml0
dGVuLCBDRkluZGV4IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgQm9vbGVhbiBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpIG92ZXJyaWRlOworICAg
IENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmLCBDRlVSTFJl
c3BvbnNlUmVmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShDRlVSTENv
bm5lY3Rpb25SZWYsIENGVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworICAgIENGQ2FjaGVkVVJM
UmVzcG9uc2VSZWYgd2lsbENhY2hlUmVzcG9uc2UoQ0ZDYWNoZWRVUkxSZXNwb25zZVJlZikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKENGVVJMQXV0aENoYWxsZW5nZVJl
Zikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTZW5kQm9keURhdGEoQ0ZJbmRleCB0b3RhbEJ5dGVz
V3JpdHRlbiwgQ0ZJbmRleCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBvdmVycmlkZTsKKyAg
ICBCb29sZWFuIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKCkgb3ZlcnJpZGU7CiAjaWYgVVNF
KFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2aXJ0dWFsIEJvb2xlYW4gY2Fu
UmVzcG9uZFRvUHJvdGVjdGlvblNwYWNlKENGVVJMUHJvdGVjdGlvblNwYWNlUmVmKSBvdmVycmlk
ZTsKKyAgICBCb29sZWFuIGNhblJlc3BvbmRUb1Byb3RlY3Rpb25TcGFjZShDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZikgb3ZlcnJpZGU7CiAjZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVU
SF9DQUxMQkFDSykKIAotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChD
RlVSTFJlcXVlc3RSZWYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVdpbGxD
YWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworICAgIHZvaWQg
Y29udGludWVXaWxsU2VuZFJlcXVlc3QoQ0ZVUkxSZXF1ZXN0UmVmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250
aW51ZVdpbGxDYWNoZVJlc3BvbnNlKENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOwog
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdmlydHVhbCB2b2lk
IGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShib29sKSBvdmVycmlkZTsKICNlbmRpZiAvLyBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRI
X0NBTExCQUNLKQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAppbmRleCBiYzU4Y2M3MmQ1NTJi
Y2I4MjI1MDA5ZDM5MmJmOWVlYzEwYjllOGYzLi5kYTEwMDVjYzRkOTcxYWYzODFkNGRiMjQwZTc3
NTUxZWJiMTlkYjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMTM2LDE3ICsxMzYsMTcg
QEAgcHVibGljOgogICAgIH0KICNlbmRpZiAvLyBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNDksIDkx
KQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSos
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVycmlkZQorICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFJlc291cmNlSGFuZGxl
KiwgY29uc3QgY2hhciogLyogZGF0YSAqLywgdW5zaWduZWQgLyogbGVuZ3RoICovLCBpbnQpIG92
ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNo
YXIqIC8qIGRhdGEgKi8sIHVuc2lnbmVkIC8qIGxlbmd0aCAqLywgaW50KSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyLCBpbnQgLyogZW5jb2RlZExlbmd0aCAqLykgb3ZlcnJpZGUKKyAgICB2b2lk
IGRpZFJlY2VpdmVCdWZmZXIoUmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyLCBpbnQgLyogZW5jb2RlZExlbmd0aCAqLykgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIC8vIFRoaXMgcGF0dGVybiBpcyBzdWdnZXN0ZWQgYnkgU2hhcmVkQnVmZmVyLmguCiAgICAg
ICAgIGNvbnN0IGNoYXIqIHNlZ21lbnQ7CkBAIC0xNTcsMjYgKzE1NywyNiBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhSZXNv
dXJjZUhhbmRsZSosIGRvdWJsZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoZ19t
YWluX2xvb3BfaXNfcnVubmluZyhtX21haW5Mb29wLmdldCgpKSkKICAgICAgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIG1fZmluaXNoZWQgPSB0cnVl
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFp
bChSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIG1fZXJyb3IgPSBlcnJvcjsKICAgICAgICAgZGlkRmluaXNo
TG9hZGluZyhoYW5kbGUsIDApOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8vIFdlIGRv
IG5vdCBoYW5kbGUgYXV0aGVudGljYXRpb24gZm9yIHN5bmNocm9ub3VzIFhNTEh0dHBSZXF1ZXN0
cy4KICAgICAgICAgY2hhbGxlbmdlLmF1dGhlbnRpY2F0aW9uQ2xpZW50KCktPnJlY2VpdmVkUmVx
dWVzdFRvQ29udGludWVXaXRob3V0Q3JlZGVudGlhbChjaGFsbGVuZ2UpOwogICAgIH0KIAotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhhbmRsZSop
IG92ZXJyaWRlCisgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShSZXNvdXJjZUhh
bmRsZSopIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9zdG9yZWRDcmVkZW50aWFs
cyA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0xvY2FsZUlDVS5oCmluZGV4IDBmMDdiNTA1ODhhNjQwNWNhZjI1NmZiODYwNTFjYjli
MzA0YzFmMWQuLjU0YjFmYjNkMDY0Mjc1YjcyNDViMDExZGMxODMwODhiODhlMzJmOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlSUNVLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVJQ1UuaApAQCAtNDksMTggKzQ5LDE4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Mb2NhbGVJQ1UoKTsKIAogI2lmIEVOQUJMRShEQVRFX0FO
RF9USU1FX0lOUFVUX1RZUEVTKQotICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3JtYXQoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBtb250aEZvcm1hdCgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU3RyaW5nIHNob3J0TW9udGhGb3JtYXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0
cmluZyB0aW1lRm9ybWF0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2hvcnRUaW1l
Rm9ybWF0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGF0ZVRpbWVGb3JtYXRXaXRo
U2Vjb25kcygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0
aG91dFNlY29uZHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBtb250aExhYmVscygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNob3J0TW9udGhMYWJlbHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBzdGFuZEFsb25lTW9udGhMYWJlbHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRpbWVBTVBNTGFiZWxzKCkg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIGRhdGVGb3JtYXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcg
bW9udGhGb3JtYXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2hvcnRNb250aEZvcm1hdCgpIG92
ZXJyaWRlOworICAgIFN0cmluZyB0aW1lRm9ybWF0KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNo
b3J0VGltZUZvcm1hdCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBkYXRlVGltZUZvcm1hdFdpdGhT
ZWNvbmRzKCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29u
ZHMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSBv
dmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRNb250aExhYmVscygpIG92
ZXJyaWRlOworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGFuZEFsb25lTW9udGhMYWJlbHMo
KSBvdmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRTdGFuZEFsb25lTW9u
dGhMYWJlbHMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGltZUFNUE1M
YWJlbHMoKSBvdmVycmlkZTsKICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNjgsNyArNjgsNyBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBkZWNpbWFsU3ltYm9sKFVOdW1iZXJGb3JtYXRTeW1ib2wpOwog
ICAgIFN0cmluZyBkZWNpbWFsVGV4dEF0dHJpYnV0ZShVTnVtYmVyRm9ybWF0VGV4dEF0dHJpYnV0
ZSk7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUxvY2FsZURhdGEoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGU7CiAKICNpZiBF
TkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKICAgICBib29sIGluaXRpYWxpemVTaG9y
dERhdGVGb3JtYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
TG9jYWxlTm9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZU5vbmUu
Y3BwCmluZGV4IGVhMThhN2I2ODVhMjk5ZGFhZjgzNDE4NWYzMDNlMDM3Yjc2M2FkMzguLjM1MWMx
OTZkMjY1NzRiZWExMzBmODAyZjhjNzQzOTcyYTJkOWQ1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlTm9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9Mb2NhbGVOb25lLmNwcApAQCAtMzQsMjAgKzM0LDIwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Mb2NhbGVOb25lKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IGluaXRpYWxpemVMb2NhbGVEYXRhKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBpbml0aWFs
aXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlIGZpbmFsOwogI2lmIEVOQUJMRShEQVRFX0FORF9USU1F
X0lOUFVUX1RZUEVTKQotICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVGb3JtYXQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBtb250aEZvcm1hdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
U3RyaW5nIHNob3J0TW9udGhGb3JtYXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyB0
aW1lRm9ybWF0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2hvcnRUaW1lRm9ybWF0
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25k
cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aG91dFNl
Y29uZHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtb250
aExhYmVscygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHNo
b3J0TW9udGhMYWJlbHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzdGFuZEFsb25lTW9udGhMYWJlbHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRpbWVBTVBNTGFiZWxzKCkgb3ZlcnJp
ZGU7CisgICAgU3RyaW5nIGRhdGVGb3JtYXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgbW9udGhG
b3JtYXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2hvcnRNb250aEZvcm1hdCgpIG92ZXJyaWRl
OworICAgIFN0cmluZyB0aW1lRm9ybWF0KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNob3J0VGlt
ZUZvcm1hdCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBkYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRz
KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKSBv
dmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRNb250aExhYmVscygpIG92ZXJyaWRl
OworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGFuZEFsb25lTW9udGhMYWJlbHMoKSBvdmVy
cmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRTdGFuZEFsb25lTW9udGhMYWJl
bHMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGltZUFNUE1MYWJlbHMo
KSBvdmVycmlkZTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fdGltZUFNUE1MYWJlbHM7CiAgICAg
VmVjdG9yPFN0cmluZz4gbV9zaG9ydE1vbnRoTGFiZWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybUxvY2FsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9jYWxlLmNwcAppbmRleCBjNTExNmJiM2NkYmY3Mzc4ZWUx
MGU1ZmJjNjdlYTYxZjNlMDg4MzEzLi44Yjk2MmJjMDU0ZGUwYjg1M2RlNjljNWZmMGFiMDFhYzQ4
OGVlNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3Jt
TG9jYWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtTG9j
YWxlLmNwcApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gRGF0
ZVRpbWVGb3JtYXQ6OlRva2VuSGFuZGxlciBmdW5jdGlvbnMuCi0gICAgdmlydHVhbCB2b2lkIHZp
c2l0RmllbGQoRGF0ZVRpbWVGb3JtYXQ6OkZpZWxkVHlwZSwgaW50KSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgdmlzaXRGaWVsZChEYXRlVGltZUZvcm1hdDo6RmllbGRUeXBlLCBpbnQp
IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgdmlzaXRMaXRlcmFsKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgU3RyaW5nIHplcm9QYWRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
c2l6ZV90IHdpZHRoKTsKICAgICB2b2lkIGFwcGVuZE51bWJlcihpbnQgbnVtYmVyLCBzaXplX3Qg
d2lkdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9j
YWxlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApp
bmRleCA4NjUxYzQzZWM0ZmE1Y2I1YjBmOTI1ODQ1MDE0OTVjZmVmOTY0Njc0Li42ZjRjOWUyZmNi
MGQyOWM5ZTIyYjFiODhlZTUyYTJmYjZmMTdhMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApAQCAtNTEsMjcgKzUxLDI3IEBAIHB1YmxpYzoKICAg
ICB+TG9jYWxlTWFjKCk7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBTdHJpbmcg
Zm9ybWF0RGF0ZVRpbWUoY29uc3QgRGF0ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0
VHlwZVVuc3BlY2lmaWVkKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZm9ybWF0RGF0ZVRpbWUoY29u
c3QgRGF0ZUNvbXBvbmVudHMmLCBGb3JtYXRUeXBlID0gRm9ybWF0VHlwZVVuc3BlY2lmaWVkKSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMp
Ci0gICAgdmlydHVhbCBTdHJpbmcgZGF0ZUZvcm1hdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
U3RyaW5nIG1vbnRoRm9ybWF0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc2hvcnRN
b250aEZvcm1hdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHRpbWVGb3JtYXQoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzaG9ydFRpbWVGb3JtYXQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBkYXRlVGltZUZvcm1hdFdpdGhTZWNvbmRzKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcygpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIG1vbnRoTGFiZWxzKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRNb250aExhYmVs
cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHN0YW5kQWxv
bmVNb250aExhYmVscygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdGltZUFNUE1MYWJlbHMoKSBvdmVycmlkZTsKKyAgICBTdHJp
bmcgZGF0ZUZvcm1hdCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBtb250aEZvcm1hdCgpIG92ZXJy
aWRlOworICAgIFN0cmluZyBzaG9ydE1vbnRoRm9ybWF0KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IHRpbWVGb3JtYXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc2hvcnRUaW1lRm9ybWF0KCkgb3Zl
cnJpZGU7CisgICAgU3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMoKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgZGF0ZVRpbWVGb3JtYXRXaXRob3V0U2Vjb25kcygpIG92ZXJyaWRlOworICAg
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBtb250aExhYmVscygpIG92ZXJyaWRlOworICAgIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBzaG9ydE1vbnRoTGFiZWxzKCkgb3ZlcnJpZGU7CisgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHN0YW5kQWxvbmVNb250aExhYmVscygpIG92ZXJyaWRlOworICAgIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydFN0YW5kQWxvbmVNb250aExhYmVscygpIG92ZXJyaWRl
OworICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0aW1lQU1QTUxhYmVscygpIG92ZXJyaWRlOwog
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gc2hvcnRE
YXRlRm9ybWF0dGVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVMb2NhbGVEYXRhKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlOwogCiAg
ICAgUmV0YWluUHRyPE5TTG9jYWxlPiBtX2xvY2FsZTsKICAgICBSZXRhaW5QdHI8TlNDYWxlbmRh
cj4gbV9ncmVnb3JpYW5DYWxlbmRhcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvd2luL0xvY2FsZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmgKaW5kZXggOWZiZjk5NWRiMTRiMjllMzg2M2E0ZGJjMWE4NzRhNWE3YzVh
YjdlZi4uMGZlZDNiYmYxYTMxNzQyNmIyMjc1ODVjMjljMmU0YWNiMGE4MzFmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmgKQEAgLTQ3LDE4ICs0Nywx
OCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTG9jYWxlV2luKExDSUQpOwogICAgIH5Mb2NhbGVX
aW4oKTsKICNpZiBFTkFCTEUoREFURV9BTkRfVElNRV9JTlBVVF9UWVBFUykKLSAgICB2aXJ0dWFs
IFN0cmluZyBkYXRlRm9ybWF0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgbW9udGhG
b3JtYXQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzaG9ydE1vbnRoRm9ybWF0KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGltZUZvcm1hdCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgU3RyaW5nIHNob3J0VGltZUZvcm1hdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
U3RyaW5nIGRhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBkYXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaG9ydE1vbnRoTGFiZWxzKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc3RhbmRBbG9uZU1vbnRoTGFiZWxz
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2hvcnRTdGFu
ZEFsb25lTW9udGhMYWJlbHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiB0aW1lQU1QTUxhYmVscygpIG92ZXJyaWRlOworICAgIFN0cmluZyBkYXRlRm9ybWF0
KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIG1vbnRoRm9ybWF0KCkgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIHNob3J0TW9udGhGb3JtYXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGltZUZvcm1hdCgp
IG92ZXJyaWRlOworICAgIFN0cmluZyBzaG9ydFRpbWVGb3JtYXQoKSBvdmVycmlkZTsKKyAgICBT
dHJpbmcgZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpIG92ZXJyaWRlOworICAgIFN0cmluZyBk
YXRlVGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9y
PFN0cmluZz4mIG1vbnRoTGFiZWxzKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHNob3J0TW9udGhMYWJlbHMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgc3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHNob3J0U3RhbmRBbG9uZU1vbnRoTGFiZWxzKCkgb3ZlcnJpZGU7CisgICAgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHRpbWVBTVBNTGFiZWxzKCkgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMg
U3RyaW5nIGRhdGVGb3JtYXQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKQEAgLTY5LDcgKzY5LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZVNob3J0TW9udGhMYWJlbHMoKTsKICAgICB2b2lk
IGVuc3VyZU1vbnRoTGFiZWxzKCk7CiAgICAgLy8gTG9jYWxlIGZ1bmN0aW9uOgotICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplTG9jYWxlRGF0YSgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZUxvY2FsZURhdGEoKSBvdmVycmlkZTsKIAogICAgIExDSUQgbV9sY2lkOwogI2lmIEVOQUJM
RShEQVRFX0FORF9USU1FX0lOUFVUX1RZUEVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5oCmluZGV4IDJhOWI4YTVlMzY3N2FkMzAxZDY3M2JmOGJkYTA5NTg4MzMw
ODczMmUuLmE2OWRkYzg5OWM3ODliZDg2NTJlODQyYmFlZDgxZDc0MTk4NDczYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmgKQEAgLTkxLDIzICs5MSwyMyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2Nyb2xsYmFyQ2FwdHVyaW5nTW91c2UoYm9vbCBiKSB7
IG1fc2Nyb2xsYmFyQ2FwdHVyaW5nTW91c2UgPSBiOyB9CiAKICAgICAvLyBTY3JvbGxhYmxlQXJl
YQotICAgIHZpcnR1YWwgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRh
dGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbE9mZnNldChj
b25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlU2Ny
b2xsYmFyUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNv
bnN0IG92ZXJyaWRlOworICAgIGludCBzY3JvbGxPZmZzZXQoU2Nyb2xsYmFyT3JpZW50YXRpb24p
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFBvaW50
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29y
bmVyUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICBTY3JvbGxhYmxlQXJlYSogZW5j
bG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAg
dmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRh
YmxlQW5jZXN0b3IoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29s
IGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3Jv
bGxiYXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGJhci5nZXQoKTsgfQotICAg
IHZpcnR1YWwgSW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElu
dFJlY3Qgc2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveChib29sKiA9IG51bGxwdHIpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVzU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzU2Nyb2xsYWJs
ZU9yUnViYmVyYmFuZGFibGUoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBo
YXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZUFuY2VzdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNTY3JvbGxDb3JuZXJWaXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Ny
b2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JvbGxiYXIuZ2V0KCk7IH0KKyAg
ICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBjb250
ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91
bmRpbmdCb3goYm9vbCogPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHVwZGF0
ZXNTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9y
UGVyZm9ybWFuY2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIC8vIE5PVEU6IFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBvdmVycmlkZW4g
c2V0U2Nyb2xsT2Zmc2V0IGZyb20gU2Nyb2xsYWJsZUFyZWEuCiAgICAgdm9pZCBzY3JvbGxUbyhp
bnQgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxiYXJUaGVtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmgKaW5kZXggYmQwNTk0N2RjZTQyNjMxOWZmMjU3ZWQ0NjY0NWRhZDIwMTRhNjZmNi4u
YzRiNGNmNjA2MmVkZWU5Zjk0ODhkN2U1MTU1NjQ4ZDQ4YTQ4NDdlNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXImKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uUHJlc3NBY3Rpb24gaGFuZGxlTW91c2VQcmVz
c0V2ZW50KFNjcm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIFNjcm9sbGJhclBh
cnQpIG92ZXJyaWRlOworICAgIFNjcm9sbGJhckJ1dHRvblByZXNzQWN0aW9uIGhhbmRsZU1vdXNl
UHJlc3NFdmVudChTY3JvbGxiYXImLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBTY3JvbGxi
YXJQYXJ0KSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNj
cm9sbGJhciYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQXV0b1RhYmxlTGF5b3V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxl
TGF5b3V0LmgKaW5kZXggY2UxMDhhZDkwOThiYTdhYWZkMjlhY2NiNWViYTU4NzJhMWEyMzM5NC4u
YjAyNDE4ZDFkZGUzOWI5YTY1NzgyMGVkYTg4YzkyMmExNjdkYWM5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuaApAQCAtMzYsOSArMzYsOSBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQXV0b1RhYmxlTGF5b3V0KFJlbmRlclRhYmxlKik7CiAgICAgdmlydHVh
bCB+QXV0b1RhYmxlTGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlQcmVmZXJyZWRMb2dpY2FsV2lkdGhR
dWlya3MoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0
VW5pdCYgbWF4V2lkdGgpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhRdWlya3MoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgZnVsbFJlY2FsYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NsaXBQYXRoT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBh
dGhPcGVyYXRpb24uaAppbmRleCAyOTY2ZWEyNmU3YWVkZWE5ZWJhYTgxZGZiNTk0MjhjMmU1YWI4
NTY0Li42ZTMxZjUxY2VlZWRiMzljOGQxNGRlNGM0YTcxOWNjNzljMzkxNzU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaApAQCAtNzUsNyArNzUsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhZ21lbnQ7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBDbGlwUGF0aE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvdGhlcikpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMDksNyArMTA5LDcgQEAgcHVibGljOgogICAgIENTU0JveFR5cGUgcmVmZXJl
bmNlQm94KCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3g7IH0KIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgb3RoZXIp
IGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0
aW9uJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlw
ZShvdGhlcikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDUsNyArMTQ1LDcgQEAg
cHVibGljOgogICAgIENTU0JveFR5cGUgcmVmZXJlbmNlQm94KCkgY29uc3QgeyByZXR1cm4gbV9y
ZWZlcmVuY2VCb3g7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDbGlwUGF0aE9wZXJhdGlvbiYgb3RoZXIpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvdGhlcikgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmICghaXNTYW1lVHlwZShvdGhlcikpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRWxsaXBzaXNC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0JveC5oCmluZGV4IDQ0YzA1
ZGFmMWFkMjRiY2ZiMDhmYzNjNDljZGExNGFiNzZjZjExMDIuLmM0YjkzMTViMjg0ZDI1NjI3YTc0
Mjk2ZTQ0MmFjNGFlYzQ0MDAyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FbGxpcHNpc0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FbGxpcHNpc0Jv
eC5oCkBAIC0zMSw4ICszMSw4IEBAIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBFbGxpcHNp
c0JveCBmaW5hbCA6IHB1YmxpYyBJbmxpbmVFbGVtZW50Qm94IHsKIHB1YmxpYzoKICAgICBFbGxp
cHNpc0JveChSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBBdG9taWNTdHJpbmcmIGVsbGlwc2lzU3Ry
LCBJbmxpbmVGbG93Qm94KiBwYXJlbnQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHksIGJv
b2wgZmlyc3RMaW5lLCBib29sIGlzVmVydGljYWwsIElubGluZUJveCogbWFya3VwQm94KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3Vs
dCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5
b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVu
aXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwg
TGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVBdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlv
biYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFj
dGlvbikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShSZW5kZXJP
YmplY3Q6OlNlbGVjdGlvblN0YXRlIHMpIHsgbV9zZWxlY3Rpb25TdGF0ZSA9IHM7IH0KICAgICBJ
bnRSZWN0IHNlbGVjdGlvblJlY3QoKTsKIApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIHZvaWQgcGFpbnRNYXJrdXBCb3goUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRv
bSwgY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
bV9oZWlnaHQ7IH0KLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2Vs
ZWN0aW9uU3RhdGUoKSBvdmVycmlkZSB7IHJldHVybiBtX3NlbGVjdGlvblN0YXRlOyB9CisgICAg
UmVuZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0KICAgICB2b2lkIHBhaW50U2VsZWN0aW9uKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25z
dCBGb250Q2FzY2FkZSYpOwogICAgIElubGluZUJveCogbWFya3VwQm94KCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKaW5kZXgg
M2UxMzM3ZDNkMTVmNzYxMTkzNGQ1YzZkNTc2YTlmMTgyMDE0NzhhYi4uMGY5YjlhZDE0MWI1OTBi
ZTYyMTFmNzRmNTZjODgyOTJjYzY0ZTVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTk4LDEwICs5OCwxMCBAQCBwdWJsaWM6CiAg
ICAgICAgIHNldEZpbHRlclJlZ2lvbihzb3VyY2VJbWFnZVJlY3QpOwogICAgICAgICBtX2dyYXBo
aWNzQnVmZmVyQXR0YWNoZWQgPSBmYWxzZTsKICAgICB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
c291cmNlSW1hZ2VSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zb3VyY2VEcmF3aW5n
UmVnaW9uOyB9CisgICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fc291cmNlRHJhd2luZ1JlZ2lvbjsgfQogCiAgICAgdm9pZCBzZXRGaWx0ZXJS
ZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBm
aWx0ZXJSZWdpb247IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQorICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQogCiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBpbnB1dENvbnRleHQoKTsKICAgICBJbWFnZUJ1ZmZlciogb3V0
cHV0KCkgY29uc3QgeyByZXR1cm4gbGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5oCmluZGV4IDE0NGZiMDAy
M2I2OGUyY2ZhMDc4MTc5YjBjMDAwNzc1MThiYzFmNjAuLjBmYWI2MjZjZDZlNDNiZDM2OTU0ODIz
MDkwYzk4MDJmMTY0ODQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aXhlZFRhYmxlTGF5b3V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBGaXhlZFRhYmxlTGF5b3V0IGZpbmFs
IDogcHVibGljIFRhYmxlTGF5b3V0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBGaXhlZFRhYmxl
TGF5b3V0KFJlbmRlclRhYmxlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNp
Y0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlQcmVmZXJyZWRMb2dpY2FsV2lkdGhR
dWlya3MoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBj
b21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5XaWR0aCwgTGF5b3V0
VW5pdCYgbWF4V2lkdGgpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhRdWlya3MoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIGZsb2F0IGNhbGNXaWR0aEFycmF5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
bG9hdGluZ09iamVjdHMuY3BwCmluZGV4IGUzMWY3ZGZiYzMxMzE0ODcyMDI1OWExZTRhZGJkMTk3
ZmU1NDY0YTIuLjA1Mjk4MTE2YzQwY2Q5NWM1OTRkYjQwYjUzMmQ0NmMzOTBmYTIwZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC0xNjIsNyAr
MTYyLDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgaGVpZ2h0UmVtYWluaW5nKCkgY29uc3Q7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29u
c3QgRmxvYXRpbmdPYmplY3QmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIHVwZGF0ZU9mZnNl
dElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9OwogCiB0
ZW1wbGF0ZSA8RmxvYXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+CkBAIC0xNzYsNyAr
MTc2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVM
YXlvdXRBZGFwdGVyKCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRl
T2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0Jikgb3ZlcnJp
ZGUgZmluYWw7CiB9OwogCiBjbGFzcyBGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXIg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUVsZW1lbnRCb3gu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVFbGVtZW50Qm94LmgKaW5kZXggNzgz
MTE1Mzg2MjBhNmE2N2M5YjBjZjM4ZjdmZDljYzNlMzkzNDI2OC4uMzcxNzBmMTNiYzdjZGE4MWM5
MmFmN2UyNGVmODBhMzllMTljYjQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUVsZW1lbnRCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lRWxlbWVudEJveC5oCkBAIC00NCwxNSArNDQsMTUgQEAgcHVibGljOgogCiAgICAgUmVuZGVy
Qm94TW9kZWxPYmplY3QmIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8UmVuZGVy
Qm94TW9kZWxPYmplY3Q+KElubGluZUJveDo6cmVuZGVyZXIoKSk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGV4dHJh
Y3RMaW5lKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUoKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRlbGV0ZUxpbmUoKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIGV4dHJhY3RMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBhdHRhY2hMaW5l
KCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJv
dHRvbSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExh
eW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKKyAgICBi
b29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNv
bnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBib29sIGlzSW5saW5lRWxlbWVudEJveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIGlzSW5saW5lRWxlbWVudEJveCgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCmluZGV4IDYwNjI0OWFiNTAyM2QzYWE4
ZDdiYmFjZWYxNDYxYTExMjU3Y2U1NjUuLmI4NzgxZmE3ZWFjNjM2MDM3NDA3NjY2Mzg1NTE4N2Y0
Y2QzZWMxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guaApAQCAt
NzIsOCArNzIsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lO
RykKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd0xpbmVUcmVlQW5kTWFyayhjb25zdCBJbmxpbmVCb3gq
IG1hcmtlZEJveCwgaW50IGRlcHRoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIGJveE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dMaW5lVHJlZUFu
ZE1hcmsoY29uc3QgSW5saW5lQm94KiBtYXJrZWRCb3gsIGludCBkZXB0aCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAK
ICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBkb3du
Y2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4oSW5saW5lQm94OjpyZW5kZXJlcigpKTsgfQpAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgSW5saW5lQm94KiBmaXJzdENoaWxkKCkgY29uc3Qg
eyBjaGVja0NvbnNpc3RlbmN5KCk7IHJldHVybiBtX2ZpcnN0Q2hpbGQ7IH0KICAgICBJbmxpbmVC
b3gqIGxhc3RDaGlsZCgpIGNvbnN0IHsgY2hlY2tDb25zaXN0ZW5jeSgpOyByZXR1cm4gbV9sYXN0
Q2hpbGQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0xlYWYoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNMZWFmKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBJbmxpbmVCb3gqIGZpcnN0TGVhZkNoaWxk
KCkgY29uc3Q7CiAgICAgSW5saW5lQm94KiBsYXN0TGVhZkNoaWxkKCkgY29uc3Q7CkBAIC05NSw3
ICs5NSw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHZvaWQgKCpDdXN0b21JbmxpbmVCb3hSYW5n
ZVJldmVyc2UpKHZvaWQqIHVzZXJEYXRhLCBWZWN0b3I8SW5saW5lQm94Kj46Oml0ZXJhdG9yIGZp
cnN0LCBWZWN0b3I8SW5saW5lQm94Kj46Oml0ZXJhdG9yIGxhc3QpOwogICAgIHZvaWQgY29sbGVj
dExlYWZCb3hlc0luTG9naWNhbE9yZGVyKFZlY3RvcjxJbmxpbmVCb3gqPiYsIEN1c3RvbUlubGlu
ZUJveFJhbmdlUmV2ZXJzZSBjdXN0b21SZXZlcnNlSW1wbGVtZW50YXRpb24gPSBudWxscHRyLCB2
b2lkKiB1c2VyRGF0YSA9IG51bGxwdHIpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHNldENv
bnN0cnVjdGVkKCkgb3ZlcnJpZGUgZmluYWwKKyAgICB2b2lkIHNldENvbnN0cnVjdGVkKCkgb3Zl
cnJpZGUgZmluYWwKICAgICB7CiAgICAgICAgIElubGluZUJveDo6c2V0Q29uc3RydWN0ZWQoKTsK
ICAgICAgICAgZm9yIChJbmxpbmVCb3gqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hp
bGQgPSBjaGlsZC0+bmV4dE9uTGluZSgpKQpAQCAtMTAzLDI0ICsxMDMsMjQgQEAgcHVibGljOgog
ICAgIH0KIAogICAgIHZvaWQgYWRkVG9MaW5lKElubGluZUJveCogY2hpbGQpOwotICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGV4
dHJhY3RMaW5lKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaExpbmUo
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UG9zaXRpb24oZmxvYXQg
ZHgsIGZsb2F0IGR5KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUxpbmUoKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIGV4dHJhY3RMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBh
dHRhY2hMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBhZGp1c3RQb3NpdGlvbihmbG9h
dCBkeCwgZmxvYXQgZHkpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGV4dHJhY3RMaW5l
Qm94RnJvbVJlbmRlck9iamVjdCgpOwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5lQm94VG9S
ZW5kZXJPYmplY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTGluZUJveEZyb21SZW5kZXJP
YmplY3QoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjbGVhclRydW5jYXRpb24oKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNsZWFyVHJ1bmNhdGlvbigpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludEJv
eERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdm9pZCBw
YWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2b2lkIHBhaW50
RmlsbExheWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXll
ciosIGNvbnN0IExheW91dFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIpOwogICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
Q29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQ29tcG9zaXRlT3Bl
cmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IFJlbmRlclN0eWxlJiwgU2hhZG93U3R5bGUsIGNvbnN0IExh
eW91dFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxp
bmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQg
bGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICBib29sIGJveFNoYWRvd0NhbkJlQXBwbGll
ZFRvQmFja2dyb3VuZChjb25zdCBGaWxsTGF5ZXImKSBjb25zdDsKIApAQCAtMjAyLDEwICsyMDIs
MTAgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgcmVtb3ZlQ2hpbGQoSW5saW5lQm94KiBjaGls
ZCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9u
U3RhdGUoKSBvdmVycmlkZTsKKyAgICBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0YXRlIHNlbGVj
dGlvblN0YXRlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjb21tb2RhdGVF
bGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50IGVsbGlwc2lzV2lkdGgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgZmxvYXQgcGxhY2VFbGxpcHNpc0JveChib29s
IGx0ciwgZmxvYXQgYmxvY2tMZWZ0RWRnZSwgZmxvYXQgYmxvY2tSaWdodEVkZ2UsIGZsb2F0IGVs
bGlwc2lzV2lkdGgsIGZsb2F0ICZ0cnVuY2F0ZWRXaWR0aCwgYm9vbCYpIG92ZXJyaWRlOworICAg
IGJvb2wgY2FuQWNjb21tb2RhdGVFbGxpcHNpcyhib29sIGx0ciwgaW50IGJsb2NrRWRnZSwgaW50
IGVsbGlwc2lzV2lkdGgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGZsb2F0IHBsYWNlRWxs
aXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZsb2F0IGJsb2NrUmlnaHRF
ZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBmbG9hdCAmdHJ1bmNhdGVkV2lkdGgsIGJvb2wmKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaGFzVGV4dENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNUZXh0Q2hpbGRyZW47IH0KICAgICBib29sIGhhc1RleHREZXNjZW5kYW50cygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzVGV4dERlc2NlbmRhbnRzOyB9CkBAIC0zMDMsNyArMzAzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWlu
TG9naWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0
RGVjb3JhdGlvbikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzSW5saW5l
Rmxvd0JveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzSW5saW5lRmxvd0JveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
ICAgICB2b2lkIGJveE1vZGVsT2JqZWN0KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICB2b2lkIGFk
ZEJveFNoYWRvd1Zpc3VhbE92ZXJmbG93KExheW91dFJlY3QmIGxvZ2ljYWxWaXN1YWxPdmVyZmxv
dyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCA1M2I4NDhm
YzA2MTdhYThmMGI2ODdkZWM4NmIxZTlhNjUxNDE1ZWEzLi5mMjdlMzA2MDg5MTg0YmU1NDgyYzNm
ZWU2MzkzMGM0ZTdmODRjMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0
Qm94LmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgc2hvcnQgdHJ1
bmNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJ1bmNhdGlvbjsgfQogCi0gICAgdmlydHVhbCB2
b2lkIG1hcmtEaXJ0eShib29sIGRpcnR5ID0gdHJ1ZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCBtYXJrRGlydHkoYm9vbCBkaXJ0eSA9IHRydWUpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdXNp
bmcgSW5saW5lQm94OjpoYXNIeXBoZW47CiAgICAgdXNpbmcgSW5saW5lQm94OjpzZXRIYXNIeXBo
ZW47CkBAIC04OCw4ICs4OCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBj
b21wYXJlQnlTdGFydChjb25zdCBJbmxpbmVUZXh0Qm94KiBmaXJzdCwgY29uc3QgSW5saW5lVGV4
dEJveCogc2Vjb25kKSB7IHJldHVybiBmaXJzdC0+c3RhcnQoKSA8IHNlY29uZC0+c3RhcnQoKTsg
fQogCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKIAogICAgIGJvb2wgZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92
ZShjb25zdCBSZW5kZXJTdHlsZSYsIGJvb2wmIGlzQWJvdmUpIGNvbnN0OwogCkBAIC0xMDMsOCAr
MTAzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXJ0eU93bkxpbmVCb3hlcygpIHsg
ZGlydHlMaW5lQm94ZXMoKTsgfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotICAgIHZp
cnR1YWwgdm9pZCBzaG93TGluZUJveChib29sIG1hcmssIGludCBkZXB0aCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBib3hOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCBzaG93TGluZUJveChib29sIG1hcmssIGludCBkZXB0aCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMTYsMzcgKzExNiwzNyBAQCBwcml2
YXRlOgogICAgIFRleHRSdW4gY29uc3RydWN0VGV4dFJ1bihjb25zdCBSZW5kZXJTdHlsZSYsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgU3RyaW5nLCB1bnNpZ25lZCBtYXhpbXVtTGVuZ3RoLCBTdHJpbmcq
IGh5cGhlbmF0ZWRTdHJpbmdCdWZmZXIgPSBudWxscHRyKSBjb25zdDsKIAogcHVibGljOgotICAg
IHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJpZXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBGbG9hdFJlY3QoeCgpLCB5KCksIHdpZHRoKCksIGhlaWdodCgpKTsgfQorICAgIEZs
b2F0UmVjdCBjYWxjdWxhdGVCb3VuZGFyaWVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxv
YXRSZWN0KHgoKSwgeSgpLCB3aWR0aCgpLCBoZWlnaHQoKSk7IH0KIAogICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBsb2NhbFNlbGVjdGlvblJlY3QoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSBjb25z
dDsKICAgICBib29sIGlzU2VsZWN0ZWQoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSBjb25zdDsK
ICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc1BvcywgaW50JiBlUG9zKTsKIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRv
cCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5l
VG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOworICAgIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBIaXRU
ZXN0QWN0aW9uKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
TGluZSgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBleHRyYWN0TGluZSgpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hMaW5lKCkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBkZWxldGVMaW5lKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBleHRy
YWN0TGluZSgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgYXR0YWNoTGluZSgpIG92ZXJyaWRl
IGZpbmFsOwogCiBwdWJsaWM6Ci0gICAgdmlydHVhbCBSZW5kZXJPYmplY3Q6OlNlbGVjdGlvblN0
YXRlIHNlbGVjdGlvblN0YXRlKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVuZGVyT2JqZWN0OjpT
ZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJyaWRlIGZpbmFsOwogCiBwcml2YXRl
OgotICAgIHZpcnR1YWwgdm9pZCBjbGVhclRydW5jYXRpb24oKSBvdmVycmlkZSBmaW5hbCB7IG1f
dHJ1bmNhdGlvbiA9IGNOb1RydW5jYXRpb247IH0KLSAgICB2aXJ0dWFsIGZsb2F0IHBsYWNlRWxs
aXBzaXNCb3goYm9vbCBmbG93SXNMVFIsIGZsb2F0IHZpc2libGVMZWZ0RWRnZSwgZmxvYXQgdmlz
aWJsZVJpZ2h0RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRo
LCBib29sJiBmb3VuZEJveCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjbGVhclRydW5jYXRp
b24oKSBvdmVycmlkZSBmaW5hbCB7IG1fdHJ1bmNhdGlvbiA9IGNOb1RydW5jYXRpb247IH0KKyAg
ICBmbG9hdCBwbGFjZUVsbGlwc2lzQm94KGJvb2wgZmxvd0lzTFRSLCBmbG9hdCB2aXNpYmxlTGVm
dEVkZ2UsIGZsb2F0IHZpc2libGVSaWdodEVkZ2UsIGZsb2F0IGVsbGlwc2lzV2lkdGgsIGZsb2F0
ICZ0cnVuY2F0ZWRXaWR0aCwgYm9vbCYgZm91bmRCb3gpIG92ZXJyaWRlIGZpbmFsOwogCiBwdWJs
aWM6Ci0gICAgdmlydHVhbCBib29sIGlzTGluZUJyZWFrKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgYm9vbCBpc0xpbmVCcmVhaygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiBwcml2YXRl
OgotICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZVRleHRCb3goKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc0lubGluZVRleHRCb3goKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGludCBj
YXJldE1pbk9mZnNldCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgaW50IGNh
cmV0TWF4T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50IGNhcmV0TWluT2Zm
c2V0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgdGV4dFBvcygpIGNvbnN0
OyAvLyByZXR1cm5zIHRoZSB4IHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBsZWZ0IHN0YXJ0IG9m
IHRoZSB0ZXh0IGxpbmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQXR0YWNobWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1l
bnQuaAppbmRleCBhMTkwZmRhM2Y5MzdmOTM0ZDg3ZWU0ZDJkNTBjN2ViODY2YmUwN2UyLi5lZDNl
MWJmYWM0ZGUyMzdjOTg3N2RmYzNkMDZhZGMxMDg5MTFiYzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKQEAgLTQ0LDE0ICs0NCwxNCBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAgdmly
dHVhbCBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyQXR0YWNobWVudCI7IH0KKyAgICBib29sIGlzQXR0YWNobWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckF0dGFjaG1lbnQiOyB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRHJhd1NlbGVjdGlvblRpbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgc2hvdWxkRHJhd1NlbGVjdGlvblRpbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJy
aWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQ
b3NpdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNv
bnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCAzZDBiZDNiMDk0NTU2NzFhNzg1MjhiYTE4NmQx
OGYzNGY2MTU2MzRiLi40NzhkOWYwMTU1NWZjY2U4ODJmOTg1ODUxMjBjNTQ0NzY2NGQ2Zjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNjcsMTYgKzY3LDE2IEBA
IHByb3RlY3RlZDoKIAogcHVibGljOgogICAgIC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgYXJlIG92
ZXJyaWRkZW4gZm9yIGlubGluZS1ibG9jay4KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUg
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGludCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIExheW91dFVuaXQgbWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVyZXIoYm9v
bCBpc0ZpcnN0TGluZSwgTGF5b3V0VW5pdCByZXBsYWNlZEhlaWdodCkgY29uc3Q7CiAKICAgICAv
LyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMg
aGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGlu
ZXMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxk
LCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hp
bGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDAp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7
CiAKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCk7CiAKQEAgLTExNSw3ICsxMTUsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBnZW5lcmF0ZXNMaW5lQm94ZXNGb3JJbmxpbmVDaGlsZChSZW5kZXJP
YmplY3QqKTsKIAogICAgIHZvaWQgbWFya1Bvc2l0aW9uZWRPYmplY3RzRm9yTGF5b3V0KCk7Ci0g
ICAgdmlydHVhbCB2b2lkIG1hcmtGb3JQYWdpbmF0aW9uUmVsYXlvdXRJZk5lZWRlZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgbWFya0ZvclBhZ2luYXRpb25SZWxheW91dElmTmVlZGVkKCkgb3ZlcnJp
ZGU7CiAgICAgCiAgICAgLy8gRklYTUUtQkxPQ0tGTE9XOiBSZW1vdmUgdmlydHVhbGl6YWlvbiB3
aGVuIGFsbCBvZiB0aGUgbGluZSBsYXlvdXQgY29kZSBoYXMgYmVlbiBtb3ZlZCBvdXQgb2YgUmVu
ZGVyQmxvY2sKICAgICB2aXJ0dWFsIGJvb2wgY29udGFpbnNGbG9hdHMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHB1YmxpYzoKIAogICAgIExheW91dFVuaXQg
dGV4dEluZGVudE9mZnNldCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24g
cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiop
IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICBHYXBSZWN0
cyBzZWxlY3Rpb25HYXBSZWN0c0ZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lcik7CiAgICAgTGF5b3V0UmVjdCBsb2dpY2FsTGVmdFNlbGVjdGlv
bkdhcChSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jaywK
QEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDb250aW51YXRpb25XaXRo
T3V0bGluZShSZW5kZXJJbmxpbmUqKTsKICAgICBib29sIHBhaW50c0NvbnRpbnVhdGlvbk91dGxp
bmUoUmVuZGVySW5saW5lKik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2
aXJ0dWFsQ29udGludWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gY29udGlu
dWF0aW9uKCk7IH0KKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogdmlydHVhbENvbnRpbnVhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGNvbnRpbnVhdGlvbigpOyB9CiAgICAg
Ym9vbCBpc0Fub255bW91c0Jsb2NrQ29udGludWF0aW9uKCkgY29uc3QgeyByZXR1cm4gaXNBbm9u
eW1vdXNCbG9jaygpICYmIGNvbnRpbnVhdGlvbigpOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVu
ZGVySW5saW5lKiBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3Q7CiAgICAgUmVuZGVy
QmxvY2sqIGJsb2NrRWxlbWVudENvbnRpbnVhdGlvbigpIGNvbnN0OwpAQCAtMTk4LDcgKzE5OCw3
IEBAIHB1YmxpYzoKICAgICBSZW5kZXJCbG9jayogY3JlYXRlQW5vbnltb3VzQmxvY2soRURpc3Bs
YXkgZGlzcGxheSA9IEJMT0NLKSBjb25zdCB7IHJldHVybiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFy
ZW50UmVuZGVyZXJBbmREaXNwbGF5KHRoaXMsIGRpc3BsYXkpOyB9CiAgICAgc3RhdGljIHZvaWQg
ZHJvcEFub255bW91c0JveENoaWxkKFJlbmRlckJsb2NrJiBwYXJlbnQsIFJlbmRlckJsb2NrJiBj
aGlsZCk7CiAKLSAgICB2aXJ0dWFsIFJlbmRlckJveCogY3JlYXRlQW5vbnltb3VzQm94V2l0aFNh
bWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlbmRlckJveCogY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVy
T2JqZWN0KiBwYXJlbnQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxk
U2tpcENyZWF0aW5nUnVuc0Zvck9iamVjdChSZW5kZXJPYmplY3QmIG9iaikKICAgICB7CkBAIC0y
OTgsOSArMjk4LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2hlY2tQb3NpdGlvbmVkT2JqZWN0c05l
ZWRMYXlvdXQoKTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1
bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuRHJvcEFub255
bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBSZW5kZXJGbG93
VGhyZWFkKiBjYWNoZWRGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CkBAIC0zMDgs
MTAgKzMwOCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhY2hlZEZsb3dUaHJlYWRD
b250YWluaW5nQmxvY2tOZWVkc1VwZGF0ZSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmly
dHVhbCBSZW5kZXJGbG93VGhyZWFkKiBsb2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJy
aWRlOworICAgIFJlbmRlckZsb3dUaHJlYWQqIGxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2soKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0
KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dFBvc2l0aW9uZWRPYmplY3RzKGJvb2wgcmVs
YXlvdXRDaGlsZHJlbiwgYm9vbCBmaXhlZFBvc2l0aW9uT2JqZWN0c09ubHkgPSBmYWxzZSk7CiAg
ICAgdmlydHVhbCB2b2lkIGxheW91dFBvc2l0aW9uZWRPYmplY3QoUmVuZGVyQm94JiwgYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBib29sIGZpeGVkUG9zaXRpb25PYmplY3RzT25seSk7CkBAIC0zMjAs
OCArMzIwLDggQEAgcHJvdGVjdGVkOgogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5JbnRyaW5zaWNM
b2dpY2FsV2lkdGhGb3JDaGlsZChSZW5kZXJCb3gmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZv
JiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wg
dXNlUHJpbnRSZWN0KTsKICAgICBlbnVtIFBhaW50QmxvY2tUeXBlIHsgUGFpbnRBc0Jsb2NrLCBQ
YWludEFzSW5saW5lQmxvY2sgfTsKICAgICBib29sIHBhaW50Q2hpbGQoUmVuZGVyQm94JiwgUGFp
bnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQs
IGJvb2wgdXNlUHJpbnRSZWN0LCBQYWludEJsb2NrVHlwZSBwYWludFR5cGUgPSBQYWludEFzQmxv
Y2spOwpAQCAtMzM1LDEzICszMzUsMTMgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gYWRq
dXN0TG9naWNhbExlZnRPZmZzZXRGb3JMaW5lKGxvZ2ljYWxMZWZ0RmxvYXRPZmZzZXRGb3JMaW5l
KGxvZ2ljYWxUb3AsIGZpeGVkT2Zmc2V0LCBsb2dpY2FsSGVpZ2h0KSwgYXBwbHlUZXh0SW5kZW50
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbklu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RB
Y3Rpb24pIG92ZXJyaWRlOworICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVl
c3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29u
dGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rp
b24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2Fs
V2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNh
bFdpZHRoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxp
bnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRl
OworICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gRGVsYXkgdXBkYXRpbmcgc2Nyb2xsYmFycyB1bnRp
bCBlbmRBbmRDb21taXRVcGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpIGlz
IGNhbGxlZC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkCiAgICAgLy8gd2hlbiBhIGZsZXhib3gg
aXMgbGF5aW5nIG91dCBpdHMgZGVzY2VuZGFudHMuIElmIG11bHRpcGxlIGNhbGxzIGFyZSBtYWRl
IHRvIGJlZ2luVXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQpAQCAtMzUz
LDggKzM1Myw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVy
TGF5b3V0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0Owog
ICAgIApAQCAtMzcxLDcgKzM3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG9mZnNldEZvckNvbnRl
bnRzKExheW91dFBvaW50JikgY29uc3Q7CiAgICAgLy8gT2J0YWlucyB0aGUgbmVhcmVzdCBlbmNs
b3NpbmcgYmxvY2sgKGluY2x1ZGluZyB0aGlzIGJsb2NrKSB0aGF0IGNvbnRyaWJ1dGVzIGEgZmly
c3QtbGluZSBzdHlsZSB0byBvdXIgaW5saW5lCiAgICAgLy8gY2hpbGRyZW4uCi0gICAgdmlydHVh
bCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5k
ZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpOwpAQCAtMzgxLDcgKzM4
MSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbVBvc2l0aW9uZWRPYmpl
Y3RzKCk7CiAgICAgdm9pZCBhZGRWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZSgpOwogCi0gICAgdmly
dHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExh
eW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzRm9ySW5saW5lQ2hpbGRy
ZW4oVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZz
ZXQsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyKTsKIAogICAg
IHZvaWQgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoY29uc3QgUmVuZGVyQm94JikgY29u
c3Q7CkBAIC00MDEsOSArNDAxLDkgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IGFkanVzdExv
Z2ljYWxSaWdodE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBvZmZzZXRGcm9tRmxvYXRzLCBib29s
IGFwcGx5VGV4dEluZGVudCkgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBhZGp1c3RMb2dpY2FsTGVm
dE9mZnNldEZvckxpbmUoTGF5b3V0VW5pdCBvZmZzZXRGcm9tRmxvYXRzLCBib29sIGFwcGx5VGV4
dEluZGVudCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVwbGFjZWQoKTsgfQor
ICAgIGJvb2wgaXNJbmxpbmVCbG9ja09ySW5saW5lVGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBpc0lubGluZSgpICYmIGlzUmVwbGFjZWQoKTsgfQogCiAgICAgdm9pZCBtYWtl
Q2hpbGRyZW5Ob25JbmxpbmUoUmVuZGVyT2JqZWN0KiBpbnNlcnRpb25Qb2ludCA9IG51bGxwdHIp
OwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJs
b2NrKiBjaGlsZCk7CkBAIC00MTIsOSArNDEyLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgbW92ZUFsbENoaWxkcmVuSW5jbHVkaW5nRmxvYXRzVG8oUmVuZGVyQmxvY2smIHRvQmxvY2ss
IGJvb2wgZnVsbFJlbW92ZUluc2VydCkgeyBtb3ZlQWxsQ2hpbGRyZW5UbygmdG9CbG9jaywgZnVs
bFJlbW92ZUluc2VydCk7IH0KIAogICAgIHZvaWQgYWRkQ2hpbGRUb0NvbnRpbnVhdGlvbihSZW5k
ZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJPYmplY3QqIG5ld0No
aWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENo
aWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2Jq
ZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTZWxmQ29s
bGFwc2luZ0Jsb2NrKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlbGZDb2xsYXBzaW5n
QmxvY2soKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRyZW5QcmV2ZW50
U2VsZkNvbGxhcHNpbmcoKSBjb25zdDsKICAgICAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJl
bW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJC
bG9ja0Zsb3cKQEAgLTQzNiw3ICs0MzYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRTZWxl
Y3Rpb24oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2b2lkIHBhaW50Q2Fy
ZXQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBDYXJldFR5cGUpOwogCi0gICAgdmly
dHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXZvaWRz
RmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdENvbnRl
bnRzKGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92
ZSB2aXJ0dWFsaXphdGlvbiB3aGVuIGFsbCBjYWxsZXJzIGhhdmUgbW92ZWQgdG8gUmVuZGVyQmxv
Y2tGbG93CkBAIC00NDcsMTggKzQ0NywxOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRl
QmxvY2tQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwg
TGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0
UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlclN0eWxlJiBvdXRsaW5lU3R5bGVG
b3JSZXBhaW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0UmVjdCByZWN0V2l0
aE91dGxpbmVGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICBjb25zdCBSZW5kZXJTdHlsZSYgb3V0bGluZVN0eWxlRm9yUmVwYWludCgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBSZW5kZXJFbGVtZW50KiBob3ZlckFuY2VzdG9y
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURyYWdTdGF0
ZShib29sIGRyYWdPbikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkQmVj
YW1lTm9uSW5saW5lKFJlbmRlckVsZW1lbnQmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBSZW5kZXJF
bGVtZW50KiBob3ZlckFuY2VzdG9yKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVEcmFnU3RhdGUoYm9vbCBkcmFnT24pIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY2hp
bGRCZWNhbWVOb25JbmxpbmUoUmVuZGVyRWxlbWVudCYpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IHNlbGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgLypjbGlwVG9WaXNpYmxlQ29u
dGVudCovKSBvdmVycmlkZSBmaW5hbAorICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCAvKmNsaXBUb1Zpc2libGVDb250ZW50Ki8pIG92ZXJyaWRlIGZpbmFsCiAgICAgewogICAgICAg
ICByZXR1cm4gc2VsZWN0aW9uR2FwUmVjdHNGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwog
ICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRTZWxlY3Rpb25HYXBzKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBzaG91bGRQYWludFNlbGVjdGlvbkdhcHMoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKICAgICBib29sIGlzU2VsZWN0aW9uUm9vdCgpIGNvbnN0OwogICAg
IEdhcFJlY3RzIHNlbGVjdGlvbkdhcHMoUmVuZGVyQmxvY2smIHJvb3RCbG9jaywgY29uc3QgTGF5
b3V0UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9m
ZnNldEZyb21Sb290QmxvY2ssCiAgICAgICAgIExheW91dFVuaXQmIGxhc3RMb2dpY2FsVG9wLCBM
YXlvdXRVbml0JiBsYXN0TG9naWNhbExlZnQsIExheW91dFVuaXQmIGxhc3RMb2dpY2FsUmlnaHQs
IGNvbnN0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMmLCBjb25zdCBQYWludEluZm8qID0g
MCk7CkBAIC00NzQsMTIgKzQ3NCwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjbGlw
T3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJsb2NrJiwgY29uc3QgUGFpbnRJbmZvKiwgY29uc3Qg
TGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRTaXplJikgeyB9OwogICAgIGZyaWVuZCBjbGFzcyBM
b2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzOwogCi0gICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zm
c2V0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVj
dG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHBhaW50Q29udGludWF0aW9uT3V0bGluZXMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gq
LCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDAp
IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94
KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAw
KSBvdmVycmlkZSBmaW5hbDsKICAgICAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2
aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zs
b3cKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGlu
ZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKik7CkBAIC00
OTksNyArNDk5LDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgcmVjb21wdXRlTG9naWNhbFdpZHRo
KCk7CiAgICAgCiBwdWJsaWM6Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEZyb21Mb2dp
Y2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IG9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFBhZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBSZW5kZXJS
ZWdpb24qIHJlZ2lvbkF0QmxvY2tPZmZzZXQoTGF5b3V0VW5pdCkgY29uc3Q7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkgdG8gYWxsb3cgdXMgdG8gbW92ZSBjb2RlIGZyb20gUmVu
ZGVyQmxvY2sgaW50byBSZW5kZXJCbG9ja0Zsb3cgdGhhdCBhY2Nlc3NlcyBtZW1iZXIgdmFyaWFi
bGVzIHRoYXQgd2UgaGF2ZW4ndCBtb3ZlZCBvdXQgb2YKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA0YjRjM2U3N2JmMzBiYWIwNzRhNjBhMWRmZjk2ZmFl
ZDQ4ODdiZTVkLi43YWI1ZjQ3MDFhOTJjMDJmZTg4ZjRkODk0ZjJiMTRlZjNhNTNhYzdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC01OSwxMSArNTks
MTEgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrRmxvdyhEb2N1bWVudCYsIFJlZjxSZW5kZXJT
dHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyQmxvY2tGbG93KCk7CiAgICAgICAgIAotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVu
aXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDAp
IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1Ry
ZWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxs
QmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxs
ZWQgYXQgdGhlIHN0YXJ0IG9mIGxheW91dCB0byB3aXBlIGF3YXkgYWxsIG9mIHRoZSBmbG9hdHMg
aW4gb3VyIGZsb2F0aW5nIG9iamVjdHMgbGlzdC4gSXQgYWxzbwogICAgIC8vIHJlcG9wdWxhdGVz
IHRoZSBsaXN0IHdpdGggYW55IGZsb2F0cyB0aGF0IGludHJ1ZGUgZnJvbSBwcmV2aW91cyBzaWJs
aW5ncyBvciBwYXJlbnRzLiBGbG9hdHMgdGhhdCB3ZXJlIGFkZGVkIGJ5CkBAIC03NywxMyArNzcs
MTMgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0JiByZXBhaW50TG9naWNhbFRvcCwgTGF5b3V0VW5pdCYg
cmVwYWludExvZ2ljYWxCb3R0b20pOwogCiAgICAgLy8gUmVuZGVyQmxvY2tGbG93cyBvdmVycmlk
ZSB0aGVzZSBtZXRob2RzLCBzaW5jZSB0aGV5IGFyZSB0aGUgb25seSBjbGFzcyB0aGF0IHN1cHBv
cnRzIG1hcmdpbiBjb2xsYXBzaW5nLgotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRN
YXJnaW5CZWZvcmUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtYXhQb3NpdGl2ZU1h
cmdpbkJlZm9yZSgpIC0gbWF4TmVnYXRpdmVNYXJnaW5CZWZvcmUoKTsgfQotICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIG1heFBvc2l0aXZlTWFyZ2luQWZ0ZXIoKSAtIG1heE5lZ2F0aXZlTWFyZ2luQWZ0ZXIo
KTsgfQorICAgIExheW91dFVuaXQgY29sbGFwc2VkTWFyZ2luQmVmb3JlKCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gbWF4UG9zaXRpdmVNYXJnaW5CZWZvcmUoKSAtIG1heE5lZ2F0aXZl
TWFyZ2luQmVmb3JlKCk7IH0KKyAgICBMYXlvdXRVbml0IGNvbGxhcHNlZE1hcmdpbkFmdGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbWF4UG9zaXRpdmVNYXJnaW5BZnRlcigpIC0g
bWF4TmVnYXRpdmVNYXJnaW5BZnRlcigpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5l
c0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkgb3ZlcnJpZGUgZmluYWwgeyBs
aW5lQm94ZXMoKS5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcywgY2hpbGQpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpIG92ZXJyaWRl
IGZpbmFsIHsgbGluZUJveGVzKCkuZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNo
aWxkKTsgfQorICAgIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q29sdW1uUnVsZXMoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogcHVibGljOgogICAgIGNsYXNzIE1hcmdpblZh
bHVlcyB7CkBAIC0yNTgsNyArMjU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlQWZ0ZXJT
aWRlT2ZCbG9jayhMYXlvdXRVbml0IHRvcCwgTGF5b3V0VW5pdCBib3R0b20sIE1hcmdpbkluZm8m
KTsKICAgICB2b2lkIHNldENvbGxhcHNlZEJvdHRvbU1hcmdpbihjb25zdCBNYXJnaW5JbmZvJik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRyZW5QcmV2ZW50U2VsZkNvbGxhcHNpbmcoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGNoaWxkcmVuUHJldmVudFNlbGZDb2xsYXBzaW5n
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBib29sIHNob3VsZEJyZWFrQXRMaW5lVG9B
dm9pZFdpZG93KCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZUJsb2NrRmxvd0RhdGEoKSAmJiByYXJl
QmxvY2tGbG93RGF0YSgpLT5tX2xpbmVCcmVha1RvQXZvaWRXaWRvdyA+PSAwOyB9CiAgICAgdm9p
ZCBjbGVhclNob3VsZEJyZWFrQXRMaW5lVG9Bdm9pZFdpZG93KCkgY29uc3Q7CkBAIC0yNjksNyAr
MjY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3coKSBj
b25zdCB7IHJldHVybiBoYXNSYXJlQmxvY2tGbG93RGF0YSgpICYmIHJhcmVCbG9ja0Zsb3dEYXRh
KCktPm1fZGlkQnJlYWtBdExpbmVUb0F2b2lkV2lkb3c7IH0KICAgICBib29sIHJlbGF5b3V0VG9B
dm9pZFdpZG93cyhMYXlvdXRTdGF0ZU1haW50YWluZXImKTsKIAotICAgIHZpcnR1YWwgYm9vbCBj
YW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkhh
dmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUm9vdElubGluZUJv
eCogbGluZUdyaWRCb3goKSBjb25zdCB7IHJldHVybiBoYXNSYXJlQmxvY2tGbG93RGF0YSgpID8g
cmFyZUJsb2NrRmxvd0RhdGEoKS0+bV9saW5lR3JpZEJveC5nZXQoKSA6IG51bGxwdHI7IH0KICAg
ICB2b2lkIHNldExpbmVHcmlkQm94KHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBib3gp
CkBAIC0yNzgsMTkgKzI3OCwxOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZvaWQgbGF5b3V0TGlu
ZUdyaWRCb3goKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGls
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOyB9
CisgICAgYm9vbCBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICFyZW5kZXJOYW1lZEZsb3dGcmFnbWVudCgpOyB9CiAgICAgUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQqIHJlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3QgeyByZXR1cm4gaGFzUmFy
ZUJsb2NrRmxvd0RhdGEoKSA/IHJhcmVCbG9ja0Zsb3dEYXRhKCktPm1fcmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dChSZW5kZXJOYW1lZEZsb3dGcmFnbWVudCopOwogCiAgICAgUmVuZGVyTXVsdGlDb2x1bW5GbG93
VGhyZWFkKiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiBoYXNSYXJlQmxv
Y2tGbG93RGF0YSgpID8gcmFyZUJsb2NrRmxvd0RhdGEoKS0+bV9tdWx0aUNvbHVtbkZsb3dUaHJl
YWQgOiBudWxscHRyOyB9CiAgICAgdm9pZCBzZXRNdWx0aUNvbHVtbkZsb3dUaHJlYWQoUmVuZGVy
TXVsdGlDb2x1bW5GbG93VGhyZWFkKik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNvbnRhaW5z
RmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1f
ZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0KKyAgICBib29sIGNvbnRhaW5zRmxv
YXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxv
YXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5KCk7IH0KICAgICBib29sIGNvbnRhaW5zRmxvYXQo
UmVuZGVyQm94JikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZXMoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZU92ZXJmbG93KExheW91dFVuaXQgb2xkQ2xp
ZW50QWZ0ZXJFZGdlLCBib29sIHJlY29tcHV0ZUZsb2F0cyA9IGZhbHNlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWxldGVMaW5l
cygpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZU92ZXJmbG93KExheW91dFVuaXQgb2xkQ2xp
ZW50QWZ0ZXJFZGdlLCBib29sIHJlY29tcHV0ZUZsb2F0cyA9IGZhbHNlKSBvdmVycmlkZTsKKyAg
ICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZW1vdmVGbG9hdGluZ09i
amVjdHMoKTsKICAgICB2b2lkIG1hcmtBbGxEZXNjZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQo
UmVuZGVyQm94KiBmbG9hdFRvUmVtb3ZlID0gbnVsbHB0ciwgYm9vbCBpbkxheW91dCA9IHRydWUp
OwpAQCAtMzQ1LDggKzM0NSw4IEBAIHB1YmxpYzoKICAgICBSb290SW5saW5lQm94KiBmaXJzdFJv
b3RCb3goKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxSb290SW5saW5lQm94PihtX2xpbmVCb3hl
cy5maXJzdExpbmVCb3goKSk7IH0KICAgICBSb290SW5saW5lQm94KiBsYXN0Um9vdEJveCgpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PFJvb3RJbmxpbmVCb3g+KG1fbGluZUJveGVzLmxhc3RMaW5l
Qm94KCkpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzTGluZXMoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCkgb3ZlcnJp
ZGUgZmluYWw7CisgICAgYm9vbCBoYXNMaW5lcygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IHZvaWQgaW52YWxpZGF0ZUxpbmVMYXlvdXRQYXRoKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBl
bnVtIExpbmVMYXlvdXRQYXRoIHsgVW5kZXRlcm1pbmVkUGF0aCA9IDAsIFNpbXBsZUxpbmVzUGF0
aCwgTGluZUJveGVzUGF0aCwgRm9yY2VMaW5lQm94ZXNQYXRoIH07CiAgICAgTGluZUxheW91dFBh
dGggbGluZUxheW91dFBhdGgoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxMaW5lTGF5b3V0
UGF0aD4ocmVuZGVyQmxvY2tGbG93TGluZUxheW91dFBhdGgoKSk7IH0KQEAgLTM4NCw4ICszODQs
OCBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0Rm9yQ2hpbGRGb3JGcmFn
bWVudGF0aW9uKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpIGNvbnN0OwogICAgIGJvb2wgaGFzTmV4
dFBhZ2UoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91bmRhcnlSdWxlID0gRXhjbHVk
ZVBhZ2VCb3VuZGFyeSkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVy
T2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCog
YmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9i
amVjdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBjcmVhdGVNdWx0aUNvbHVtbkZsb3dUaHJlYWQo
KTsKICAgICB2b2lkIGRlc3Ryb3lNdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsKQEAgLTM5MywxMCAr
MzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNvbHVtblByb2dyZXNzaW9uRnJvbVN0
eWxlKFJlbmRlclN0eWxlJik7CiAgICAgdm9pZCB1cGRhdGVTdHlsZXNGb3JDb2x1bW5DaGlsZHJl
bigpOwogCi0gICAgdmlydHVhbCBib29sIG5lZWRzTGF5b3V0QWZ0ZXJSZWdpb25SYW5nZUNoYW5n
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgbmVlZHNMYXlvdXRBZnRlclJlZ2lvblJhbmdl
Q2hhbmdlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAg
IC8vIEEgcGFnZSBicmVhayBpcyByZXF1aXJlZCBhdCBzb21lIG9mZnNldCBkdWUgdG8gc3BhY2Ug
c2hvcnRhZ2UgaW4gdGhlIGN1cnJlbnQgZnJhZ21lbnRhaW5lci4KICAgICB2b2lkIHNldFBhZ2VC
cmVhayhMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0VW5pdCBzcGFjZVNob3J0YWdlKTsKQEAgLTQ0
MywyMyArNDQzLDIzIEBAIHByb3RlY3RlZDoKICAgICBib29sIG11c3RTZXBhcmF0ZU1hcmdpbkJl
Zm9yZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogICAgIGJvb2wgbXVzdFNlcGFy
YXRlTWFyZ2luQWZ0ZXJGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAotICAgIHZp
cnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgT3B0aW9u
YWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25N
b2RlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc011bHRpQ29sdW1uQmxv
Y2tGbG93KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbXVsdGlDb2x1bW5GbG93VGhyZWFkKCk7
IH0KKyAgICBib29sIGlzTXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtdWx0aUNvbHVtbkZsb3dUaHJlYWQoKTsgfQogICAgIAogICAgIHZvaWQgc2V0Q29tcHV0
ZWRDb2x1bW5Db3VudEFuZFdpZHRoKGludCwgTGF5b3V0VW5pdCk7CiAKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVkQ29sdW1uV2lkdGgoKSBjb25zdDsKICAgICB1bnNpZ25lZCBjb21wdXRlZENvbHVt
bkNvdW50KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzVG9wTGF5b3V0T3ZlcmZs
b3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTGVmdExheW91
dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUb3BMYXlvdXRP
dmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTGVmdExheW91dE92
ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBtb3ZlRmxvYXRzVG8o
UmVuZGVyQmxvY2tGbG93KiB0b0Jsb2NrKTsKICAgICAKQEAgLTQ4MCwxMiArNDgwLDEyIEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIGNoZWNrRm9yUGFnaW5hdGlvbkxvZ2ljYWxIZWlnaHRDaGFuZ2Uo
Ym9vbCYgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCYgcGFnZUxvZ2ljYWxIZWlnaHQsIGJv
b2wmIHBhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50SW5saW5lQ2hpbGRyZW4oUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRGbG9hdHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmLCBib29sIHByZXNlcnZlUGhhc2UgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YWludElubGluZUNoaWxkcmVuKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwYWludEZsb2F0cyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IGJvb2wgcHJlc2VydmVQaGFzZSA9IGZhbHNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBtb3ZlQWxsQ2hpbGRyZW5JbmNsdWRpbmdGbG9hdHNUbyhSZW5kZXJCbG9jayYgdG9CbG9jaywg
Ym9vbCBmdWxsUmVtb3ZlSW5zZXJ0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwYWlu
dE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxEZXNjZW5kYW50cykgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCB2b2lkIGNsaXBPdXRGbG9hdGluZ09iamVjdHMoUmVuZGVyQmxvY2sm
LCBjb25zdCBQYWludEluZm8qLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFNpemUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVBbGxDaGlsZHJlbkluY2x1ZGluZ0Zsb2F0c1RvKFJl
bmRlckJsb2NrJiB0b0Jsb2NrLCBib29sIGZ1bGxSZW1vdmVJbnNlcnQpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVwYWludE92ZXJoYW5naW5nRmxvYXRzKGJvb2wgcGFpbnRBbGxEZXNjZW5kYW50cykg
b3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjbGlwT3V0RmxvYXRpbmdPYmplY3RzKFJlbmRlckJs
b2NrJiwgY29uc3QgUGFpbnRJbmZvKiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRT
aXplJikgb3ZlcnJpZGU7CiAKICAgICBGbG9hdGluZ09iamVjdCogaW5zZXJ0RmxvYXRpbmdPYmpl
Y3QoUmVuZGVyQm94Jik7CiAgICAgdm9pZCByZW1vdmVGbG9hdGluZ09iamVjdChSZW5kZXJCb3gm
KTsKQEAgLTQ5OCw4ICs0OTgsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckZsb2F0cyhF
Q2xlYXIpOwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodEZsb2F0T2Zmc2V0
Rm9yTGluZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0RmxvYXRPZmZzZXRGb3JMaW5lKExheW91dFVuaXQgbG9naWNhbFRv
cCwgTGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodEZsb2F0T2Zmc2V0Rm9yTGlu
ZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVu
aXQgbG9naWNhbEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBsb2dpY2Fs
TGVmdEZsb2F0T2Zmc2V0Rm9yTGluZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQg
Zml4ZWRPZmZzZXQsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodE9mZnNldEZvclBvc2l0aW9uaW5nRmxvYXQoTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBib29sIGFwcGx5VGV4
dEluZGVudCwgTGF5b3V0VW5pdCogaGVpZ2h0UmVtYWluaW5nKSBjb25zdDsKICAgICBMYXlvdXRV
bml0IGxvZ2ljYWxMZWZ0T2Zmc2V0Rm9yUG9zaXRpb25pbmdGbG9hdChMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExheW91dFVuaXQgZml4ZWRPZmZzZXQsIGJvb2wgYXBwbHlUZXh0SW5kZW50LCBMYXlv
dXRVbml0KiBoZWlnaHRSZW1haW5pbmcpIGNvbnN0OwpAQCAtNTE4LDIzICs1MTgsMjMgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgZGV0ZXJtaW5lTG9naWNhbExlZnRQb3NpdGlvbkZvckNoaWxkKFJl
bmRlckJveCYgY2hpbGQsIEFwcGx5TGF5b3V0RGVsdGFNb2RlID0gRG9Ob3RBcHBseUxheW91dERl
bHRhKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaGl0VGVzdEZsb2F0cyhjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGhpdFRlc3RJbmxpbmVDaGlsZHJlbihjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgb3ZlcnJpZGU7CisgICAgYm9vbCBoaXRUZXN0RmxvYXRzKGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBvdmVycmlk
ZTsKKyAgICBib29sIGhpdFRlc3RJbmxpbmVDaGlsZHJlbihjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUZsb2F0cygpOwotICAgIHZpcnR1
YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21JbmxpbmVDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRkT3ZlcmZsb3dGcm9tSW5saW5lQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKICAgICB2
b2lkIGZpdEJvcmRlclRvTGluZXNJZk5lZWRlZCgpOyAvLyBTaHJpbmsgdGhlIGJveCBpbiB3aGlj
aCB0aGUgYm9yZGVyIHBhaW50cyBpZiBib3JkZXItZml0IGlzIHNldC4KICAgICB2b2lkIGFkanVz
dEZvckJvcmRlckZpdChMYXlvdXRVbml0IHgsIExheW91dFVuaXQmIGxlZnQsIExheW91dFVuaXQm
IHJpZ2h0KSBjb25zdDsKIAogICAgIHZvaWQgbWFya0xpbmVzRGlydHlJbkJsb2NrUmFuZ2UoTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20sIFJvb3RJbmxpbmVC
b3gqIGhpZ2hlc3QgPSAwKTsKIAotICAgIHZpcnR1YWwgR2FwUmVjdHMgaW5saW5lU2VsZWN0aW9u
R2FwcyhSZW5kZXJCbG9jayYgcm9vdEJsb2NrLCBjb25zdCBMYXlvdXRQb2ludCYgcm9vdEJsb2Nr
UGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3RCbG9jaywK
KyAgICBHYXBSZWN0cyBpbmxpbmVTZWxlY3Rpb25HYXBzKFJlbmRlckJsb2NrJiByb290QmxvY2ss
IGNvbnN0IExheW91dFBvaW50JiByb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlv
dXRTaXplJiBvZmZzZXRGcm9tUm9vdEJsb2NrLAogICAgICAgICBMYXlvdXRVbml0JiBsYXN0TG9n
aWNhbFRvcCwgTGF5b3V0VW5pdCYgbGFzdExvZ2ljYWxMZWZ0LCBMYXlvdXRVbml0JiBsYXN0TG9n
aWNhbFJpZ2h0LCBjb25zdCBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzJiwgY29uc3QgUGFp
bnRJbmZvKikgb3ZlcnJpZGU7CiAgICAgCiAgICAgUG9zaXRpb24gcG9zaXRpb25Gb3JCb3goSW5s
aW5lQm94KiwgYm9vbCBzdGFydCA9IHRydWUpIGNvbnN0OwotICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZl
Y3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zm
c2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50SW5Mb2dpY2FsQ29udGVudHMsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJy
aWRlOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHNGb3JJbmxpbmVDaGlsZHJlbihWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwg
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIG92ZXJyaWRlOwogCiAvLyBGSVhNRS1CTE9D
S0ZMT1c6IFRoZXNlIG1ldGhvZHMgaGF2ZSBpbXBsZW1lbnRhdGlvbnMgaW4KIC8vIFJlbmRlckJs
b2NrTGluZUxheW91dC4gVGhleSBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIHByb3BlciBoZWFkZXIg
b25jZSB0aGUKQEAgLTU5Miw3ICs1OTIsNyBAQCBwcml2YXRlOgogLy8gRU5EIE1FVEhPRFMgREVG
SU5FRCBJTiBSZW5kZXJCbG9ja0xpbmVMYXlvdXQKIAogICAgIGJvb2wgbmFtZWRGbG93RnJhZ21l
bnROZWVkc1VwZGF0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4o
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdm9pZCBjb21wdXRlSW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3Q7CiAKQEAgLTYwMCw3ICs2MDAsNyBAQCBwcml2YXRlOgogICAgIGludCBtX3dpZHRoRm9yVGV4
dEF1dG9zaXppbmc7CiAgICAgdW5zaWduZWQgbV9saW5lQ291bnRGb3JUZXh0QXV0b3NpemluZyA6
IDI7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9u
U3RhdGUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0
aW9uU3RhdGUpIG92ZXJyaWRlIGZpbmFsOwogCiBwdWJsaWM6CiAgICAgLy8gRklYTUUtQkxPQ0tG
TE9XOiBUaGVzZSBjYW4gYmUgbWFkZSBwcm90ZWN0ZWQgYWdhaW4gb25jZSBhbGwgY2FsbGVycyBo
YXZlIGJlZW4gbW92ZWQgaGVyZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRl
eCBhNWUzMzk5MTQzMzgyMmMxYWViNTA1YWE2M2FiZjI4ZDZjNTgxNGNkLi4zN2UxMGFhMzkxZjVl
ZDE1Y2MwYTQ0NGNhNDY0MzBkMWI2YjQwNWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCkBAIC01MSwxNCArNTEsMTQgQEAgcHVibGljOgogCiAgICAgLy8gaGFzQXV0b1pJbmRl
eCBvbmx5IHJldHVybnMgdHJ1ZSBpZiB0aGUgZWxlbWVudCBpcyBwb3NpdGlvbmVkIG9yIGEgZmxl
eC1pdGVtIHNpbmNlCiAgICAgLy8gcG9zaXRpb246c3RhdGljIGVsZW1lbnRzIHRoYXQgYXJlIG5v
dCBmbGV4LWl0ZW1zIGdldCB0aGVpciB6LWluZGV4IGNvZXJjZWQgdG8gYXV0by4KLSAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlCisgICAgYm9vbCByZXF1aXJl
c0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBpc0RvY3VtZW50
RWxlbWVudFJlbmRlcmVyKCkgfHwgaXNQb3NpdGlvbmVkKCkgfHwgY3JlYXRlc0dyb3VwKCkgfHwg
aGFzQ2xpcFBhdGgoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKQogICAgICAgICAgICAgfHwgaGFzVHJh
bnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNSZWZs
ZWN0aW9uKCkgfHwgc3R5bGUoKS5zcGVjaWZpZXNDb2x1bW5zKCkKICAgICAgICAgICAgIHx8ICFz
dHlsZSgpLmhhc0F1dG9aSW5kZXgoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2dy
b3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3QmIGxvY2FsUmVjdCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9vbCBiYWNrZ3JvdW5kSXNLbm93blRvQmVPcGFx
dWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxSZWN0KSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKIAogICAgIC8vIFVzZSB0aGlzIHdpdGggY2F1dGlvbiEgTm8gdHlwZSBjaGVja2luZyBpcyBk
b25lIQogICAgIFJlbmRlckJveCogZmlyc3RDaGlsZEJveCgpIGNvbnN0OwpAQCAtMTUzLDcgKzE1
Myw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgTGF5b3V0UmVjdCBib3JkZXJCb3hSZWN0KCkgY29u
c3QgeyByZXR1cm4gTGF5b3V0UmVjdChMYXlvdXRQb2ludCgpLCBzaXplKCkpOyB9CiAgICAgTGF5
b3V0UmVjdCBwYWRkaW5nQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9yZGVy
TGVmdCgpLCBib3JkZXJUb3AoKSwgY29udGVudFdpZHRoKCkgKyBwYWRkaW5nTGVmdCgpICsgcGFk
ZGluZ1JpZ2h0KCksIGNvbnRlbnRIZWlnaHQoKSArIHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0
b20oKSk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiBlbmNsb3NpbmdJbnRSZWN0KGJvcmRlckJveFJlY3QoKSk7
IH0KKyAgICBJbnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChib3JkZXJCb3hSZWN0KCkpOyB9CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSb3VuZGVkUmVjdDo6UmFkaWkgYm9yZGVyUmFkaWkoKSBjb25zdDsKIApAQCAt
MTY5LDExICsxNjksMTEgQEAgcHVibGljOgogICAgIExheW91dFJlY3QgY29tcHV0ZWRDU1NDb250
ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9yZGVyTGVmdCgpICsgY29t
cHV0ZWRDU1NQYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ1Rv
cCgpLCBjbGllbnRXaWR0aCgpIC0gY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpIC0gY29tcHV0ZWRD
U1NQYWRkaW5nUmlnaHQoKSwgY2xpZW50SGVpZ2h0KCkgLSBjb21wdXRlZENTU1BhZGRpbmdUb3Ao
KSAtIGNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSgpKTsgfQogCiAgICAgLy8gQm91bmRzIG9mIHRo
ZSBvdXRsaW5lIGJveCBpbiBhYnNvbHV0ZSBjb29yZHMuIFJlc3BlY3RzIHRyYW5zZm9ybXMKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGNvbnN0IFJlbmRlckdlb21l
dHJ5TWFwKikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3Vz
UmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlv
bmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9
IG51bGxwdHIpIG92ZXJyaWRlOworICAgIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFp
bnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIGNv
bnN0IFJlbmRlckdlb21ldHJ5TWFwKikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBh
ZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYg
YWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250
YWluZXIgPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBy
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJv
cmRlckJveFJlY3QoKTsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9yZGVyQm94UmVjdCgpOyB9CisgICAgRmxvYXRS
ZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gYm9yZGVyQm94UmVjdCgpOyB9CisgICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gYm9yZGVyQm94UmVjdCgpOyB9CiAKICAgICAvLyBVc2Ug
dGhpcyB3aXRoIGNhdXRpb24hIE5vIHR5cGUgY2hlY2tpbmcgaXMgZG9uZSEKICAgICBSZW5kZXJC
b3gqIHByZXZpb3VzU2libGluZ0JveCgpIGNvbnN0OwpAQCAtMjE2LDggKzIxNiw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIElFIGV4dGVuc2lvbnMuIFVzZWQgdG8gY2FsY3VsYXRlIG9mZnNldFdpZHRo
L0hlaWdodC4gIE92ZXJyaWRkZW4gYnkgaW5saW5lcyAoUmVuZGVyRmxvdykKICAgICAvLyB0byBy
ZXR1cm4gdGhlIHJlbWFpbmluZyB3aWR0aCBvbiBhIGdpdmVuIGxpbmUgKGFuZCB0aGUgaGVpZ2h0
IG9mIGEgc2luZ2xlIGxpbmUpLgotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaGVpZ2h0KCk7IH0KKyAg
ICBMYXlvdXRVbml0IG9mZnNldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gd2lkdGgo
KTsgfQorICAgIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gaGVpZ2h0KCk7IH0KIAogICAgIC8vIE1vcmUgSUUgZXh0ZW5zaW9ucy4gIGNsaWVudFdpZHRo
IGFuZCBjbGllbnRIZWlnaHQgcmVwcmVzZW50IHRoZSBpbnRlcmlvciBvZiBhbiBvYmplY3QKICAg
ICAvLyBleGNsdWRpbmcgYm9yZGVyIGFuZCBzY3JvbGxiYXIuICBjbGllbnRMZWZ0L1RvcCBhcmUg
anVzdCB0aGUgYm9yZGVyTGVmdFdpZHRoIGFuZCBib3JkZXJUb3BXaWR0aC4KQEAgLTI0MiwxMCAr
MjQyLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGVmdChpbnQpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxUb3AoaW50KTsKIAotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX21hcmdpbkJveC50b3Ao
KTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX21hcmdpbkJveC5ib3R0b20oKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBtYXJnaW5MZWZ0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9tYXJnaW5Cb3gubGVmdCgp
OyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9tYXJnaW5Cb3gucmlnaHQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luVG9w
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9tYXJnaW5Cb3gudG9wKCk7IH0KKyAgICBMYXlv
dXRVbml0IG1hcmdpbkJvdHRvbSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWFyZ2luQm94
LmJvdHRvbSgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9tYXJnaW5Cb3gubGVmdCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5SaWdo
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWFyZ2luQm94LnJpZ2h0KCk7IH0KICAgICB2
b2lkIHNldE1hcmdpblRvcChMYXlvdXRVbml0IG1hcmdpbikgeyBtX21hcmdpbkJveC5zZXRUb3Ao
bWFyZ2luKTsgfQogICAgIHZvaWQgc2V0TWFyZ2luQm90dG9tKExheW91dFVuaXQgbWFyZ2luKSB7
IG1fbWFyZ2luQm94LnNldEJvdHRvbShtYXJnaW4pOyB9CiAgICAgdm9pZCBzZXRNYXJnaW5MZWZ0
KExheW91dFVuaXQgbWFyZ2luKSB7IG1fbWFyZ2luQm94LnNldExlZnQobWFyZ2luKTsgfQpAQCAt
MjU0LDE0ICsyNTQsMTQgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgbWFyZ2luTG9naWNhbExl
ZnQoKSBjb25zdCB7IHJldHVybiBtX21hcmdpbkJveC5zdGFydChzdHlsZSgpLndyaXRpbmdNb2Rl
KCkpOyB9CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Mb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVy
biBtX21hcmdpbkJveC5lbmQoc3R5bGUoKS53cml0aW5nTW9kZSgpKTsgfQogICAgIAotICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqIG92ZXJyaWRl
U3R5bGUgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX21hcmdpbkJv
eC5iZWZvcmUoKG92ZXJyaWRlU3R5bGUgPyBvdmVycmlkZVN0eWxlIDogJnN0eWxlKCkpLT53cml0
aW5nTW9kZSgpKTsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcihjb25zdCBS
ZW5kZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIG1fbWFyZ2luQm94LmFmdGVyKChvdmVycmlkZVN0eWxlID8gb3ZlcnJpZGVTdHls
ZSA6ICZzdHlsZSgpKS0+d3JpdGluZ01vZGUoKSk7IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
bWFyZ2luU3RhcnQoY29uc3QgUmVuZGVyU3R5bGUqIG92ZXJyaWRlU3R5bGUgPSBudWxscHRyKSBj
b25zdCBvdmVycmlkZSBmaW5hbAorICAgIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKGNvbnN0IFJl
bmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gbV9tYXJnaW5Cb3guYmVmb3JlKChvdmVycmlkZVN0eWxlID8gb3ZlcnJpZGVTdHls
ZSA6ICZzdHlsZSgpKS0+d3JpdGluZ01vZGUoKSk7IH0KKyAgICBMYXlvdXRVbml0IG1hcmdpbkFm
dGVyKGNvbnN0IFJlbmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0gbnVsbHB0cikgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gbV9tYXJnaW5Cb3guYWZ0ZXIoKG92ZXJyaWRlU3R5bGUgPyBv
dmVycmlkZVN0eWxlIDogJnN0eWxlKCkpLT53cml0aW5nTW9kZSgpKTsgfQorICAgIExheW91dFVu
aXQgbWFyZ2luU3RhcnQoY29uc3QgUmVuZGVyU3R5bGUqIG92ZXJyaWRlU3R5bGUgPSBudWxscHRy
KSBjb25zdCBvdmVycmlkZSBmaW5hbAogICAgIHsKICAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlVG9Vc2UgPSBvdmVycmlkZVN0eWxlID8gb3ZlcnJpZGVTdHlsZSA6ICZzdHlsZSgpOwog
ICAgICAgICByZXR1cm4gbV9tYXJnaW5Cb3guc3RhcnQoc3R5bGVUb1VzZS0+d3JpdGluZ01vZGUo
KSwgc3R5bGVUb1VzZS0+ZGlyZWN0aW9uKCkpOwogICAgIH0KLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgbWFyZ2luRW5kKGNvbnN0IFJlbmRlclN0eWxlKiBvdmVycmlkZVN0eWxlID0gbnVsbHB0cikg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwKKyAgICBMYXlvdXRVbml0IG1hcmdpbkVuZChjb25zdCBSZW5k
ZXJTdHlsZSogb3ZlcnJpZGVTdHlsZSA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlIGZpbmFsCiAg
ICAgewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IG92ZXJyaWRlU3R5
bGUgPyBvdmVycmlkZVN0eWxlIDogJnN0eWxlKCk7CiAgICAgICAgIHJldHVybiBtX21hcmdpbkJv
eC5lbmQoc3R5bGVUb1VzZS0+d3JpdGluZ01vZGUoKSwgc3R5bGVUb1VzZS0+ZGlyZWN0aW9uKCkp
OwpAQCAtMjkwLDE4ICsyOTAsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBj
b2xsYXBzZWRNYXJnaW5CZWZvcmUoKSBjb25zdCB7IHJldHVybiBtYXJnaW5CZWZvcmUoKTsgfQog
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb2xsYXBzZWRNYXJnaW5BZnRlcigpIGNvbnN0IHsgcmV0
dXJuIG1hcmdpbkFmdGVyKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhYnNvbHV0
ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogICAgIGludCBy
ZWZsZWN0aW9uT2Zmc2V0KCkgY29uc3Q7CiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmpl
Y3QncyBjb29yZGluYXRlIHNwYWNlLCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHJlY3QgaW4g
dGhlIHJlZmxlY3Rpb24uCiAgICAgTGF5b3V0UmVjdCByZWZsZWN0ZWRSZWN0KGNvbnN0IExheW91
dFJlY3QmKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRl
OworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBub2RlQXRQb2ludChjb25z
dCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24m
IGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNl
dCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlv
dXRVbml0IG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIExh
eW91dFVuaXQgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
TGF5b3V0VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVuYW1lIHRoZXNlIGJhY2sgdG8gb3ZlcnJpZGVMb2dp
Y2FsSGVpZ2h0L1dpZHRoIGFuZCBoYXZlIHRoZW0gc3RvcmUKICAgICAvLyB0aGUgYm9yZGVyLWJv
eCBoZWlnaHQvd2lkdGggbGlrZSB0aGUgcmVndWxhciBoZWlnaHQvd2lkdGggYWNjZXNzb3JzIG9u
IFJlbmRlckJveC4KQEAgLTMzMyw3ICszMzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckV4
dHJhSW5saW5lQW5kQmxvY2tPZmZlc3RzKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgTGF5b3V0
U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25z
dCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgTGF5b3V0VW5pdCBhZGp1c3RCb3JkZXJCb3hMb2dpY2Fs
V2lkdGhGb3JCb3hTaXppbmcoTGF5b3V0VW5pdCB3aWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0VW5p
dCBhZGp1c3RCb3JkZXJCb3hMb2dpY2FsSGVpZ2h0Rm9yQm94U2l6aW5nKExheW91dFVuaXQgaGVp
Z2h0KSBjb25zdDsKQEAgLTM5MSwxMiArMzkxLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElu
bGluZUJveFdyYXBwZXIoSW5saW5lRWxlbWVudEJveCopOwogICAgIHZvaWQgZGVsZXRlTGluZUJv
eFdyYXBwZXIoKTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY29tcHV0ZVJlY3RGb3JS
ZXBhaW50KGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IG92ZXJyaWRlOworICAg
IExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5
b3V0UmVjdCBjb21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxz
ZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXBhaW50RHVyaW5nTGF5b3V0SWZNb3ZlZChj
b25zdCBMYXlvdXRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIHJlcGFpbnRPdmVyaGFuZ2luZ0Zs
b2F0cyhib29sIHBhaW50QWxsRGVzY2VuZGFudHMpOwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0
IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxIZWln
aHRGb3JDb250ZW50KEF2YWlsYWJsZUxvZ2ljYWxIZWlnaHRUeXBlKSBjb25zdDsKIAogICAgIExh
eW91dFVuaXQgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudEluUmVnaW9uKFJl
bmRlclJlZ2lvbiopIGNvbnN0OwpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1Vuc3BsaXR0YWJsZVNjcm9sbGluZ092ZXJmbG93KCkgY29uc3Q7CiAgICAgYm9vbCBpc1Vu
c3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVj
dCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQq
IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgIExheW91dFJl
Y3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0
KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgTGF5b3V0UmVjdCBvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlv
biwgUmVuZGVyUmVnaW9uKiwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVP
dmVybGF5U2Nyb2xsYmFyU2l6ZSwgUGFpbnRQaGFzZSA9IFBhaW50UGhhc2VCbG9ja0JhY2tncm91
bmQpOwogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdmVyZmxvd0NsaXBSZWN0Rm9yQ2hpbGRMYXll
cnMoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3Zl
cmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSB7IHJldHVybiBvdmVyZmxvd0Ns
aXBSZWN0KGxvY2F0aW9uLCByZWdpb24sIHJlbGV2YW5jeSk7IH0KQEAgLTUwMSw3ICs1MDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q2xpcHBp
bmdNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0gICAgdmlydHVhbCB2b2lk
IGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CisgICAgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJ
bnRSZWN0KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gYSBwb3Np
dGlvbmVkIG9iamVjdCBtb3ZlcyBidXQgZG9lc24ndCBuZWNlc3NhcmlseSBjaGFuZ2Ugc2l6ZS4g
IEEgc2ltcGxpZmllZCBsYXlvdXQgaXMgYXR0ZW1wdGVkCiAgICAgLy8gdGhhdCBqdXN0IHVwZGF0
ZXMgdGhlIG9iamVjdCdzIHBvc2l0aW9uLiBJZiB0aGUgc2l6ZSBkb2VzIGNoYW5nZSwgdGhlIG9i
amVjdCByZW1haW5zIGRpcnR5LgpAQCAtNTE4LDcgKzUxOCw3IEBAIHB1YmxpYzoKIAogICAgIExh
eW91dFJlY3QgbWFza0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCk7CiAK
LSAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdp
b24qKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVtb3ZlRmxvYXRpbmdPclBvc2l0aW9uZWRDaGls
ZEZyb21CbG9ja0xpc3RzKCk7CiAgICAgCkBAIC01MzcsMTEgKzUzNywxMSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc0RlcHJlY2F0ZWRGbGV4SXRlbSgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgp
ICYmICFpc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFy
ZW50KCktPmlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCk7IH0KICAgICBib29sIGlzRmxleEl0ZW1J
bmNsdWRpbmdEZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlzRmxv
YXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNG
bGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogICAgIAotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGlu
ZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0
KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldExlZnQoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0VG9wKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5p
dCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFBvaW50IGZsaXBGb3JX
cml0aW5nTW9kZUZvckNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFBv
aW50JikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBmbGlwRm9yV3JpdGluZ01vZGUoTGF5b3V0VW5p
dCBwb3NpdGlvbikgY29uc3Q7IC8vIFRoZSBvZmZzZXQgaXMgaW4gdGhlIGJsb2NrIGRpcmVjdGlv
biAoeSBmb3IgaG9yaXpvbnRhbCB3cml0aW5nIG1vZGVzLCB4IGZvciB2ZXJ0aWNhbCB3cml0aW5n
IG1vZGVzKS4KQEAgLTYzMyw5ICs2MzMsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyQm94KEVs
ZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIEJhc2VUeXBlRmxhZ3MpOwogICAgIFJlbmRlckJv
eChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJiwgQmFzZVR5cGVGbGFncyk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVG
cm9tU3R5bGUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkg
b3ZlcnJpZGU7CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gUmV0dXJu
cyBmYWxzZSBpZiBpdCBjb3VsZCBub3QgY2hlYXBseSBjb21wdXRlIHRoZSBleHRlbnQgKGUuZy4g
Zml4ZWQgYmFja2dyb3VuZCksIGluIHdoaWNoIGNhc2UgdGhlIHJldHVybmVkIHJlY3QgbWF5IGJl
IGluY29ycmVjdC4KICAgICBib29sIGdldEJhY2tncm91bmRQYWludGVkRXh0ZW50KGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCwgTGF5b3V0UmVjdCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBmb3JlZ3JvdW5kSXNLbm93blRvQmVPcGFxdWVJblJlY3QoY29uc3QgTGF5b3V0UmVjdCYg
bG9jYWxSZWN0LCB1bnNpZ25lZCBtYXhEZXB0aFRvVGVzdCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGNvbXB1dGVCYWNrZ3JvdW5kSXNLbm93blRvQmVPYnNjdXJlZChjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpIG92ZXJyaWRlOworICAgIGJvb2wgY29tcHV0ZUJhY2tncm91bmRJc0tu
b3duVG9CZU9ic2N1cmVkKGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7
CiAgICAgCkBAIC02NjMsOSArNjYzLDkgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDb21wdXRlU2l6ZUFzUmVwbGFjZWQoKSBjb25zdCB7IHJldHVybiBpc1JlcGxh
Y2VkKCkgJiYgIWlzSW5saW5lQmxvY2tPcklubGluZVRhYmxlKCk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9v
bCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2Jq
ZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBt
YXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1TdGF0
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYs
IE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCosIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFu
c2Zvcm1TdGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludFJvb3RCb3hGaWxs
TGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYpOwogCkBAIC02ODcsNyArNjg3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIGluY2x1ZGVWZXJ0aWNhbFNjcm9sbGJhclNpemUoKSBjb25zdDsKICAgICBib29s
IGluY2x1ZGVIb3Jpem9udGFsU2Nyb2xsYmFyU2l6ZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBi
b29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVCb3goKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBkaWQgYSBmdWxsIHJlcGFpbnQKICAgICBib29s
IHJlcGFpbnRMYXllclJlY3RzRm9ySW1hZ2UoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBG
aWxsTGF5ZXIqIGxheWVycywgYm9vbCBkcmF3aW5nQmFja2dyb3VuZCk7CkBAIC03MjIsNyArNzIy
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGVzZSBpbmNsdWRlIHRhYmxlcywgcG9zaXRpb25lZCBv
YmplY3RzLCBmbG9hdHMgYW5kIGZsZXhpYmxlIGJveGVzLgogICAgIHZpcnR1YWwgdm9pZCBjb21w
dXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIHsgc2V0UHJlZmVycmVkTG9naWNhbFdpZHRoc0Rp
cnR5KGZhbHNlKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGZyYW1lUmVjdEZvclN0aWNr
eVBvc2l0aW9uaW5nKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZnJhbWVSZWN0KCk7
IH0KKyAgICBMYXlvdXRSZWN0IGZyYW1lUmVjdEZvclN0aWNreVBvc2l0aW9uaW5nKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZnJhbWVSZWN0KCk7IH0KICAgICAKICAgICB2b2lkIGFw
cGx5VG9wTGVmdExvY2F0aW9uT2Zmc2V0V2l0aEZsaXBwaW5nKExheW91dFBvaW50JikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
aW5kZXggNmUzNmFkN2Y1NzVhMDZjODdhYzEyNWVjYjM4NjVlNGY2YzYxZDAyNC4uNWJhY2NiOTZk
OTIwZTZkNmVmNzYyZGE5YzAyZDQyYmMwMzE1OWMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTEyNSw5ICsxMjUsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFdpZHRoKCkgY29uc3QgPSAwOwogICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVGcm9t
U3R5bGUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gaXNEb2N1bWVudEVsZW1lbnRSZW5kZXJlcigpIHx8IGlzUG9z
aXRpb25lZCgpIHx8IGNyZWF0ZXNHcm91cCgpIHx8IGhhc0NsaXBQYXRoKCkgfHwgaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNSZWZsZWN0
aW9uKCk7IH0KKyAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBpc0RvY3VtZW50RWxlbWVudFJlbmRlcmVyKCkgfHwgaXNQb3NpdGlvbmVkKCkgfHwgY3JlYXRl
c0dyb3VwKCkgfHwgaGFzQ2xpcFBhdGgoKSB8fCBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSB8fCBoYXNIaWRkZW5CYWNrZmFjZSgpIHx8IGhhc1JlZmxlY3Rpb24oKTsgfQogCiAgICAgLy8g
VGhpcyB3aWxsIHdvcmsgb24gaW5saW5lcyB0byByZXR1cm4gdGhlIGJvdW5kaW5nIGJveCBvZiBh
bGwgb2YgdGhlIGxpbmVzJyBib3JkZXIgYm94ZXMuCiAgICAgdmlydHVhbCBJbnRSZWN0IGJvcmRl
ckJvdW5kaW5nQm94KCkgY29uc3QgPSAwOwpAQCAtMjE1LDkgKzIxNSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWFw
QWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENv
b3JkaW5hdGVzRmxhZ3MsIFRyYW5zZm9ybVN0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBjYW5IYXZlQm94SW5mb0luUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gIWlzRmxvYXRp
bmcoKSAmJiAhaXNSZXBsYWNlZCgpICYmICFpc0lubGluZSgpICYmICFpc1RhYmxlQ2VsbCgpICYm
IGlzUmVuZGVyQmxvY2soKSAmJiAhaXNSZW5kZXJTVkdCbG9jaygpOyB9CiAKQEAgLTI0MSw3ICsy
NDEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QoRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJiwgQmFzZVR5cGVGbGFncyk7CiAgICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIEJhc2VUeXBlRmxhZ3MpOwogCi0gICAg
dmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEJl
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBvc2l0aW9u
UmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKaW5kZXggYmMwOGEyN2ZmNWIxMjJlYzg5
YjE1MGU4OTE2YjdjNGQ2NmJjMTY5YS4uMzExZWNlM2Y0NzAyZWNlMWM1NjQ1Y2YzNThiNTA1ZWJi
MDdiZmFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaApAQCAtNDAs
MzkgKzQwLDM5IEBAIHB1YmxpYzoKIAogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQmIGZvcm1D
b250cm9sRWxlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9u
TGVhZigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBu
ZXdDaGlsZCwgUmVuZGVyT2JqZWN0ICpiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVzQW5vbnltb3VzV3JhcHBlcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVj
dCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCAqYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVt
b3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRlIHsgfQorICAg
IGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKICAgICB2b2lkIHNldHVwSW5uZXJTdHlsZShSZW5kZXJTdHlsZSopOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRl
RnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlR2VuZXJh
dGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udHJv
bENsaXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IGNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmlu
ZyB0ZXh0KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAog
cHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJCdXR0b24iOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyQnV0dG9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyQnV0dG9uIjsgfQorICAgIGJvb2wgaXNSZW5kZXJC
dXR0b24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZv
aWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
d1N0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzTGluZUlm
RW1wdHkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNl
ZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBib29sIGlzRmxleGlibGVCb3hJbXBsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQ29tYmluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCmluZGV4IGQ2NTA0NmIzMjg3MTI4N2M4YzZkMjQzYWEw
MzVjNGY1M2RkZTkxZDEuLjAyNjE4OTk0MThiZDY5N2QzNGNhYTIzMjU4N2VjOTBiZjZlZDRlYWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb21iaW5lVGV4dC5oCkBAIC00
NSwxMSArNDUsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIG5vZGUoKSBjb25zdCA9
IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NvbWJpbmVUZXh0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgZmxvYXQgd2lkdGgodW5zaWduZWQgZnJv
bSwgdW5zaWduZWQgbGVuZ3RoLCBjb25zdCBGb250Q2FzY2FkZSYsIGZsb2F0IHhQb3NpdGlvbiwg
SGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMgPSAwLCBHbHlwaE92ZXJmbG93KiA9
IDApIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJDb21iaW5lVGV4dCI7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSZW5kZXJlZFRleHQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NvbWJpbmVUZXh0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGZsb2F0IHdpZHRoKHVuc2lnbmVkIGZyb20s
IHVuc2lnbmVkIGxlbmd0aCwgY29uc3QgRm9udENhc2NhZGUmLCBmbG9hdCB4UG9zaXRpb24sIEhh
c2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzID0gMCwgR2x5cGhPdmVyZmxvdyogPSAw
KSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlckNvbWJpbmVUZXh0IjsgfQorICAgIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0UmVuZGVyZWRUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwog
CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBtX2NvbWJpbmVGb250U3R5bGU7CiAgICAgZmxvYXQg
bV9jb21iaW5lZFRleHRXaWR0aCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJDb3VudGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5oCmluZGV4IDc1ZGNmYzg0MTkwYWJiMjMzZGY0OTY5YzJiNDRjYTljNjVhMjg0N2Eu
LjhmYTIzMzJlMjk5MzRjMGIzMDY3MTg0NTZiY2M0OWY4NzYwNWRjYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuaApAQCAtNDMsMTEgKzQzLDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZUNvdW50ZXIoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXND
b3VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgb3JpZ2luYWxUZXh0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNDb3VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IG9yaWdpbmFsVGV4dCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoKSBv
dmVycmlkZTsKIAogICAgIC8vIFJlbW92ZXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgQ291bnRlck5v
ZGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVuZGVyZXIuCiAgICAgLy8gVGhpcyBpcyB1c2VkIHRv
IGNhdXNlIGEgY291bnRlciBkaXNwbGF5IHVwZGF0ZSB3aGVuIHRoZSBDb3VudGVyTm9kZSB0cmVl
IGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94LmgKaW5kZXggZGFhYzkyZTQ2OTU0NDk3YTllNjY0MTJlNzk0MDMw
NzA1Yjk1ODk5NS4uM2M2MTBjYmRkZDU4N2JkMWVlY2E2NGEzZjliOThmZjY3ZTQyMzllZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxl
eGlibGVCb3guaApAQCAtMzYsMjUgKzM2LDI1IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQmIGVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnlt
b3VzKCkpOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIG5ld1N0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlV2lsbENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VIZWlnaHQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlSGVpZ2h0ID0gMCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsYXlvdXRIb3Jpem9udGFsQm94KGJvb2wgcmVsYXlvdXRDaGlsZHJlbik7
CiAgICAgdm9pZCBsYXlvdXRWZXJ0aWNhbEJveChib29sIHJlbGF5b3V0Q2hpbGRyZW4pOwogCiAg
ICAgYm9vbCBpc1N0cmV0Y2hpbmdDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyZXRjaGlu
Z0NoaWxkcmVuOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5Ecm9wQW5vbnltb3Vz
QmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBh
dm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBj
YW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICB2b2lkIHBsYWNlQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0
UG9pbnQmIGxvY2F0aW9uLCBMYXlvdXRTaXplKiBjaGlsZExheW91dERlbHRhID0gbnVsbHB0cik7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Rl
cHJlY2F0ZWRGbGV4aWJsZUJveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAKICAgICBM
YXlvdXRVbml0IGFsbG93ZWRDaGlsZEZsZXgoUmVuZGVyQm94KiBjaGlsZCwgYm9vbCBleHBhbmRp
bmcsIHVuc2lnbmVkIGdyb3VwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXRhaWxzTWFya2VyLmgKaW5kZXggYzc4MWQ5OGU2ZTg1NDQyMTZlZGY4ZGFkNjFiMzI5NmE2
MjBiYThmOC4uMDhiNDUxNGUyM2M1NDk4NWVmZWQ2NTYxMTNhODQ1N2NhYjNmN2YyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRldGFpbHNNYXJrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGV0YWlsc01hcmtlci5oCkBAIC0zNiw5
ICszNiw5IEBAIHB1YmxpYzoKICAgICBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJEZXRhaWxzTWFya2VyIjsgfQotICAgIHZpcnR1YWwgYm9v
bCBpc0RldGFpbHNNYXJrZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJp
ZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJSZW5kZXJEZXRhaWxzTWFya2VyIjsgfQorICAgIGJvb2wgaXNEZXRhaWxzTWFya2VyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNPcGVuKCkgY29uc3Q7
CiAgICAgUGF0aCBnZXRDYW5vbmljYWxQYXRoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCA2Y2QxNzFmNjFkODI5MzJjNDNlMzdkYjFmY2U2NTgw
Mzg1NzgyNDZhLi40YjFmYTc3MjlkZTVmN2VjZjMzZjY5YzdhODM1MjQwYjc4ODU4ZDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1f
Zmlyc3RDaGlsZDsgfQogICAgIFJlbmRlck9iamVjdCogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1
cm4gbV9sYXN0Q2hpbGQ7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIWZpcnN0Q2hpbGQoKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICFmaXJzdENoaWxkKCk7IH0KIAogICAgIGJvb2wgY2FuQ29udGFp
bkZpeGVkUG9zaXRpb25PYmplY3RzKCkgY29uc3Q7CiAgICAgYm9vbCBjYW5Db250YWluQWJzb2x1
dGVseVBvc2l0aW9uZWRPYmplY3RzKCkgY29uc3Q7CkBAIC0yNDgsOSArMjQ4LDkgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRSZW5kZXJJ
bmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKGJvb2wgYikgeyBtX3JlbmRlcklubGluZUFsd2F5
c0NyZWF0ZXNMaW5lQm94ZXMgPSBiOyB9CiAgICAgYm9vbCByZW5kZXJJbmxpbmVBbHdheXNDcmVh
dGVzTGluZUJveGVzKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJJbmxpbmVBbHdheXNDcmVhdGVz
TGluZUJveGVzOyB9CkBAIC0yODYsOCArMjg2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGlzVGV4
dCgpIGNvbnN0ID0gZGVsZXRlOwogICAgIHZvaWQgaXNSZW5kZXJFbGVtZW50KCkgY29uc3QgPSBk
ZWxldGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogZmlyc3RDaGlsZFNsb3coKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmaXJzdENoaWxkKCk7IH0KLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogbGFzdENoaWxkU2xvdygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IGxhc3RDaGlsZCgpOyB9CisgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkU2xvdygpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZpcnN0Q2hpbGQoKTsgfQorICAgIFJlbmRlck9iamVj
dCogbGFzdENoaWxkU2xvdygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGxhc3RDaGls
ZCgpOyB9CiAKICAgICAvLyBDYWxsZWQgd2hlbiBhbiBvYmplY3QgdGhhdCB3YXMgZmxvYXRpbmcg
b3IgcG9zaXRpb25lZCBiZWNvbWVzIGEgbm9ybWFsIGZsb3cgb2JqZWN0CiAgICAgLy8gYWdhaW4u
ICBXZSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGUgcmVuZGVyIHRyZWUgdXBkYXRlcyBhcyBuZWVkZWQg
dG8gYWNjb21tb2RhdGUgdGhlIG5ldwpAQCAtMzA3LDcgKzMwNyw3IEBAIHByaXZhdGU6CiAgICAg
U3R5bGVEaWZmZXJlbmNlIGFkanVzdFN0eWxlRGlmZmVyZW5jZShTdHlsZURpZmZlcmVuY2UsIHVu
c2lnbmVkIGNvbnRleHRTZW5zaXRpdmVQcm9wZXJ0aWVzKSBjb25zdDsKICAgICBSZW5kZXJTdHls
ZSogY2FjaGVkRmlyc3RMaW5lU3R5bGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBuZXdJ
bWFnZUFuaW1hdGlvbkZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJikgZmluYWwgb3ZlcnJpZGU7
CisgICAgdm9pZCBuZXdJbWFnZUFuaW1hdGlvbkZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJikg
ZmluYWwgb3ZlcnJpZGU7CiAKICAgICBib29sIGdldExlYWRpbmdDb3JuZXIoRmxvYXRQb2ludCYg
b3V0cHV0KSBjb25zdDsKICAgICBib29sIGdldFRyYWlsaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91
dHB1dCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5oCmluZGV4IGIwNjAwY2YwNTk2OGJiODhhZjAwZWI0MTkwODZlZmRhZDRkZTlkNzku
LjUxODM3Y2E5ZjVjZDVjMmE0YmFkZDk1YmIzNTA2NTM4MTViMmNmZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oCkBAIC02MSwyNyArNjEs
MjcgQEAgcHVibGljOgogICAgIGJvb2wgYWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNv
bnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3Qg
TGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBvdmVycmlkZTsKKyAgICBDdXJzb3JEaXJlY3Rp
dmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGU7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRW1iZWRkZWRP
YmplY3QiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJFbWJlZGRlZE9iamVjdCI7IH0KKyAgICBi
b29sIGlzRW1iZWRkZWRPYmplY3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICB2b2lkIHBhaW50U25hcHNob3RJbWFnZShQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYsIEltYWdlJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHBhaW50
Q29udGVudHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsK
IAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVz
dWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlIGZp
bmFsOworICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0
UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25z
dCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRl
IGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwgRWxlbWVudCoqIHN0b3BFbGVtZW50
ID0gbnVsbHB0ciwgUmVuZGVyQm94KiBzdGFydEJveCA9IG51bGxwdHIsIGNvbnN0IEludFBvaW50
JiB3aGVlbEV2ZW50QWJzb2x1dGVQb2ludCA9IEludFBvaW50KCkpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgYm9vbCBsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNj
cm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQp
IG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgc2Nyb2xsKFNjcm9sbERpcmVjdGlvbiwgU2Nyb2xs
R3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQg
PSBudWxscHRyLCBSZW5kZXJCb3gqIHN0YXJ0Qm94ID0gbnVsbHB0ciwgY29uc3QgSW50UG9pbnQm
IHdoZWVsRXZlbnRBYnNvbHV0ZVBvaW50ID0gSW50UG9pbnQoKSkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgYm9vbCBsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQpIG92ZXJyaWRl
IGZpbmFsOwogCiAgICAgdm9pZCBzZXRVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcklzUHJlc3Nl
ZChib29sKTsKICAgICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihjb25zdCBN
b3VzZUV2ZW50JikgY29uc3Q7CkBAIC04OSw3ICs4OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBn
ZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQsIEZsb2F0UmVjdCYgY29udGVudFJlY3QsIEZsb2F0UmVjdCYgaW5kaWNhdG9yUmVjdCwg
RmxvYXRSZWN0JiByZXBsYWNlbWVudFRleHRSZWN0LCBGbG9hdFJlY3QmIGFycm93UmVjdCwgRm9u
dENhc2NhZGUmLCBUZXh0UnVuJiwgZmxvYXQmIHRleHRXaWR0aCkgY29uc3Q7CiAgICAgTGF5b3V0
UmVjdCB1bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckJvdW5kcyhjb25zdCBMYXlvdXRQb2ludCYp
IGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVXaWRnZXQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBib29sIG1faXNQbHVnaW5VbmF2YWlsYWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKaW5kZXggNmY4OTMyMTIyZmIxMTY5ODMyYzM0ODhiYTU4
ZTQ0MDUyMzk3ODBlNC4uNTFkZjFiNGFlMDhiNWU3NDAyN2M2NzQ0NTA5OTQxYWVlMjJkYzllYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmgKQEAgLTQzLDE2ICs0
MywxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVs
ZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlckZpZWxkU2V0IjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0ZpZWxk
c2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRmllbGRTZXQiOyB9Cisg
ICAgYm9vbCBpc0ZpZWxkc2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CisgICAgUmVuZGVyT2JqZWN0KiBsYXlvdXRTcGVj
aWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCb3hEZWNvcmF0aW9ucyhQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludE1hc2soUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Qm94
RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuaAppbmRleCAxMDhkZTY5MWFjMDZiYjFk
NGYzZWJhNGNkMzQwMDc0OWIzMzIzN2RkLi4zNmIxMDE4ZDRlZWU5MjZhOTE5N2RjZjExMmY3MWM3
YTg1YTY1MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmls
ZVVwbG9hZENvbnRyb2wuaApAQCAtNDQsMjAgKzQ0LDIwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNG
aWxlVXBsb2FkQ29udHJvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBi
b29sIGlzRmlsZVVwbG9hZENvbnRyb2woKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wiOyB9CisgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJGaWxlVXBsb2FkQ29udHJv
bCI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0
JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0
IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92
ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1By
b3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcmVx
dWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgaW50IG1heEZpbGVuYW1lV2lkdGgoKSBjb25zdDsKICAgICAKLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CisgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24q
KSBvdmVycmlkZTsKIAogICAgIEhUTUxJbnB1dEVsZW1lbnQqIHVwbG9hZEJ1dHRvbigpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCmluZGV4
IDliYWUzMTZhYWYzN2QwZWQyNGExMDMyNjEwYjlmN2Y3MDE3ZjM1ZTAuLjA5OTVlYmM1ODNiNDI0
ZDc4NjE0OTI0ZDI4YmI0MmE5NmE0YjE5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbGV4aWJsZUJveC5oCkBAIC00MiwyOCArNDIsMjggQEAgcHVibGljOgogICAgIFJl
bmRlckZsZXhpYmxlQm94KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICB2aXJ0
dWFsIH5SZW5kZXJGbGV4aWJsZUJveCgpOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuRHJvcEFu
b255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29s
IGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBib29sIGNhbkRyb3BBbm9ueW1vdXNCbG9ja0NoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlIGZpbmFsOwog
Ci0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBPcHRpb25h
bDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJy
aWRlOworICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jh
c2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQm
LCBQYWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7CiAKICAg
ICBib29sIGlzSG9yaXpvbnRhbEZsb3coKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Rv
cExheW91dE92ZXJmbG93QWxsb3dlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzVG9wTGF5b3V0T3ZlcmZsb3dBbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c0xlZnRMYXlvdXRPdmVyZmxvd0FsbG93ZWQoKSBjb25zdCBvdmVycmlkZTsKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRV
bml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBlbnVtIEZsZXhTaWduIHsKQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICAvLyBVc2UgYW4gaW5saW5lIGNhcGFjaXR5IG9mIDgsIHNpbmNlIGZs
ZXhib3ggY29udGFpbmVycyB1c3VhbGx5IGhhdmUgbGVzcyB0aGFuIDggY2hpbGRyZW4uCiAgICAg
dHlwZWRlZiBWZWN0b3I8TGF5b3V0UmVjdCwgOD4gQ2hpbGRGcmFtZVJlY3RzOwogCi0gICAgdmly
dHVhbCBib29sIGlzRmxleGlibGVCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc0ZsZXhpYmxlQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzT3J0aG9nb25hbEZsb3coUmVuZGVyQm94JiBjaGls
ZCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbHVtbkZsb3coKSBjb25zdDsKICAgICBib29sIGlzTGVm
dFRvUmlnaHRGbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuaAppbmRleCAyYmUxN2RiY2U2MTc2Y2NiNTMxNTcyNmQ4MjhiMTZlNmIyODc2MzY5
Li44MWZjNDA0MDNlM2MyMDc0OTY4NzM4YmFmZWE5MjM5MjE4ODA3OWFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTcwLDE2ICs3MCwxNiBAQCBw
dWJsaWM6CiAgICAgYm9vbCBjaGVja0xpbmVzQ29uc2lzdGVuY3koY29uc3QgUmVuZGVyQmxvY2tG
bG93KikgY29uc3Q7CiAjZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlTGluZXMo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGV0ZUxpbmVzKCkgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgYWRkUmVnaW9uVG9UaHJlYWQoUmVuZGVyUmVnaW9uKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJlbmRlclJlZ2lvbiopOwogICAgIGNvbnN0
IFJlbmRlclJlZ2lvbkxpc3QmIHJlbmRlclJlZ2lvbkxpc3QoKSBjb25zdCB7IHJldHVybiBtX3Jl
Z2lvbkxpc3Q7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTG9naWNhbFdp
ZHRoKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbm9k
ZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAgIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCiAgICAgYm9vbCBoYXNSZWdp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpb25MaXN0LnNpemUoKTsgfQogICAgIHZpcnR1YWwg
dm9pZCByZWdpb25DaGFuZ2VkV3JpdGluZ01vZGUoUmVuZGVyUmVnaW9uKikgeyB9CkBAIC0xMDEs
NyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRl
Rmxvd1RocmVhZFN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBy
ZXBhaW50UmVjdGFuZ2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKICAgICAK
QEAgLTIyMiwxNCArMjIyLDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBhYnNvbHV0
ZVF1YWRzRm9yQm94KFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCosIGNvbnN0IFJlbmRlckJveCos
IGZsb2F0LCBmbG9hdCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBzZXRDdXJyZW50UmVnaW9uTWFpbnRhaW5lcihDdXJyZW50UmVuZGVyUmVnaW9uTWFpbnRh
aW5lciogY3VycmVudFJlZ2lvbk1haW50YWluZXIpIHsgbV9jdXJyZW50UmVnaW9uTWFpbnRhaW5l
ciA9IGN1cnJlbnRSZWdpb25NYWludGFpbmVyOyB9CiAgICAgUmVuZGVyUmVnaW9uKiBjdXJyZW50
UmVnaW9uKCkgY29uc3Q7CiAKICAgICBDb250YWluaW5nUmVnaW9uTWFwJiBjb250YWluaW5nUmVn
aW9uTWFwKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FjaGVkRmxvd1RocmVhZENvbnRhaW5pbmdC
bG9ja05lZWRzVXBkYXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBi
b29sIGNhY2hlZEZsb3dUaHJlYWRDb250YWluaW5nQmxvY2tOZWVkc1VwZGF0ZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBGSVhNRTogRXZlbnR1YWxseSBhcyBj
b2x1bW4gYW5kIHJlZ2lvbiBmbG93IHRocmVhZHMgc3RhcnQgbmVzdGluZywgdGhpcyBtYXkgZW5k
IHVwIGNoYW5naW5nLgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGVja0NvbHVtbkJyZWFrcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMzcsMjMgKzIzNywyMyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIC8vIEFsd2F5cyBjcmVhdGUgYSBSZW5kZXJMYXllciBmb3IgdGhlIFJlbmRl
ckZsb3dUaHJlYWQgc28gdGhhdCB3ZQogICAgIC8vIGNhbiBlYXNpbHkgYXZvaWQgZHJhd2luZyB0
aGUgY2hpbGRyZW4gZGlyZWN0bHkuCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBj
b25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCByZXF1aXJlc0xh
eWVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVyRmxvd1RocmVhZChEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAK
LSAgICB2aXJ0dWFsIFJlbmRlckZsb3dUaHJlYWQqIGxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5n
QmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlckZsb3dUaHJl
YWQqPih0aGlzKTsgfQorICAgIFJlbmRlckZsb3dUaHJlYWQqIGxvY2F0ZUZsb3dUaHJlYWRDb250
YWluaW5nQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb25zdF9jYXN0PFJlbmRlckZs
b3dUaHJlYWQqPih0aGlzKTsgfQogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGUgPSAwOworICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSA9IDA7CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IGNvbHVtbnMvcGFnZXMgdG8g
c2V0IHVwIGFuIGluaXRpYWwgbG9naWNhbCB3aWR0aCBvZiB0aGUgcGFnZSB3aWR0aCBldmVuIHdo
ZW4KICAgICAvLyBubyByZWdpb25zIGhhdmUgYmVlbiBnZW5lcmF0ZWQgeWV0LgogICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBpbml0aWFsTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gMDsgfTsK
ICAgICAKICAgICB2b2lkIGNsZWFyTGluZXNUb1JlZ2lvbk1hcCgpOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUm
LCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVSZWdpb25z
Rmxvd1RocmVhZFBvcnRpb25SZWN0KGNvbnN0IFJlbmRlclJlZ2lvbiogPSBudWxscHRyKTsKICAg
ICBib29sIHNob3VsZFJlcGFpbnQoY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAppbmRleCA5NTZiNzNhMjRkNzgwNWI2MDEwYzE4OWM0
MWZlNzQzZTVhNTY1MmVmLi4yYzIzOTAzMmE2YWUyN2U2ZGU4NTcxMTJjMDQ1YTYwYTM0NGFiNjQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWUuaApAQCAtNDAsMTAgKzQwLDEw
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZyYW1lIjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Zy
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRnJhbWUiOyB9CisgICAg
Ym9vbCBpc0ZyYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVG
cm9tRWxlbWVudCgpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lU2V0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQuaAppbmRleCBkZDc3OTE5ZmFiNzc0
OTJlNzNmZGM3NWNiZmI2NzBhY2M5ZGRlZWM0Li4wMTk4ZTZlMGQ3NDNjNjQ1OGY0OTU5NmI5NjNl
M2EzZDUyOGFlYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhbWVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVTZXQu
aApAQCAtOTEsMTQgKzkxLDE0IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBtX3NwbGl0UmVzaXpl
T2Zmc2V0OwogICAgIH07CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyRnJhbWVTZXQiOyB9Ci0gICAgdmlydHVhbCBi
b29sIGlzRnJhbWVTZXQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBn
ZXRDdXJzb3IoY29uc3QgTGF5b3V0UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
ckZyYW1lU2V0IjsgfQorICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgY2Fu
SGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91
dFBvaW50JiwgQ3Vyc29yJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGZsYXR0ZW5GcmFt
ZVNldCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRnVsbFNjcmVlbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3Jl
ZW4uaAppbmRleCBiYjZmODM2OWU0ZWRhODA0ZWJkNWIyYzVlMjY1MDAzNzhjNjcyN2RiLi43NTdk
MmUyZmEzOGNjYWJmYzc5NzMwNzEzOTQwMWM2NTAxM2IxYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUmVu
ZGVyRnVsbFNjcmVlbiBmaW5hbCA6IHB1YmxpYyBSZW5kZXJGbGV4aWJsZUJveCB7CiBwdWJsaWM6
CiAgICAgUmVuZGVyRnVsbFNjcmVlbihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAK
LSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyRnVsbFNjcmVlbiI7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckZ1bGxTY3JlZW4iOyB9CiAKICAgICB2b2lk
IHNldFBsYWNlaG9sZGVyKFJlbmRlckJsb2NrKik7CiAgICAgUmVuZGVyQmxvY2sqIHBsYWNlaG9s
ZGVyKCkgeyByZXR1cm4gbV9wbGFjZWhvbGRlcjsgfQpAQCAtNDYsOCArNDYsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCB1bndyYXBSZW5kZXJlcihib29sJiByZXF1aXJlc1JlbmRlclRyZWVSZWJ1aWxk
KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJGdWxsU2NyZWVuKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0
cm95ZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGlzUmVuZGVyRnVsbFNjcmVlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJy
aWRlOwogICAgIGJvb2wgaXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5o
CmluZGV4IGY0ZjRkMzhlZjc1ZWMxOGYyYTllMWIzODY4OWI4NGVlZWE1ZjFkN2MuLmZjMzk1NzI4
MTg0YjQwZWM0ZTA4ZDVjZGZmYzM3NGEzYzJjNGExZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaApAQCAtNTEsMTEgKzUxLDExIEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQm
IGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5v
bnltb3VzKCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFn
ZUxvZ2ljYWxIZWlnaHQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDApIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zs
b2F0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgY29uc3QgVmVjdG9yPExheW91dFVuaXQ+JiBjb2x1
bW5Qb3NpdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtblBvc2l0aW9uczsgfQogICAgIGNv
bnN0IFZlY3RvcjxMYXlvdXRVbml0PiYgcm93UG9zaXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9y
b3dQb3NpdGlvbnM7IH0KQEAgLTYzLDkgKzYzLDkgQEAgcHVibGljOgogICAgIExheW91dFVuaXQg
Z3V0dGVyc1NpemUoR3JpZFRyYWNrU2l6aW5nRGlyZWN0aW9uLCBzaXplX3Qgc3BhbikgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyR3JpZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dp
Y2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzUmVuZGVyR3JpZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExh
eW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGNvbXB1dGVJbnRyaW5z
aWNMb2dpY2FsQ29udGVudEhlaWdodFVzaW5nKExlbmd0aCBsb2dpY2FsSGVpZ2h0TGVuZ3RoLCBP
cHRpb25hbDxMYXlvdXRVbml0PiBpbnRyaW5zaWNDb250ZW50SGVpZ2h0LCBMYXlvdXRVbml0IGJv
cmRlckFuZFBhZGRpbmcpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC0xNDksNyArMTQ5LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgYXBwbHlTdHJldGNoQWxpZ25tZW50VG9UcmFja3NJZk5lZWRlZChH
cmlkVHJhY2tTaXppbmdEaXJlY3Rpb24sIEdyaWRTaXppbmdEYXRhJik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQ
cmludFJlY3QpIG92ZXJyaWRlOwogICAgIGJvb2wgbmVlZFRvU3RyZXRjaENoaWxkTG9naWNhbEhl
aWdodChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBMYXlvdXRVbml0IG1hcmdpbkxvZ2lj
YWxIZWlnaHRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKICAgICBMYXlvdXRVbml0
IGNvbXB1dGVNYXJnaW5Mb2dpY2FsSGVpZ2h0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZh
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuaAppbmRleCAw
M2UyZWRlZTg0ZDZkYTQ2OTM4MmNjMjczMWQwYmMxZDM0NjkxZDYyLi42Yjg4ODAwMWM1ZGI1ODBk
MjMwMDI4NDgwMzViNTMwZGUwZDA2OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySFRNTENhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJIVE1MQ2FudmFzLmgKQEAgLTQyLDExICs0MiwxMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7Ci0gICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDYW52YXMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckhUTUxDYW52YXMi
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5n
ZWQoKSBvdmVycmlkZSB7IGNhbnZhc1NpemVDaGFuZ2VkKCk7IH0KKyAgICBib29sIHJlcXVpcmVz
TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ2FudmFzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySFRNTENhbnZhcyI7IH0KKyAgICB2b2lkIHBhaW50UmVw
bGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGludHJpbnNpY1NpemVDaGFuZ2VkKCkgb3ZlcnJpZGUgeyBjYW52YXNTaXplQ2hhbmdlZCgpOyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySUZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySUZyYW1lLmgKaW5kZXggN2EyZTEzYjcwYWJmN2FkY2QzNmU1YzFkM2Q3NTZhYThiMWVhZmZk
My4uZTRkMDJkOTlkZWYyZDY3MjVhYWUzYTM1YjFlMGE4NTFlNzU1ZDQ2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJRnJhbWUuaApAQCAtNDMsMjEgKzQzLDIxIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZU93bmVyRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwog
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENvbXB1dGVTaXplQXNSZXBsYWNlZCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkQ29tcHV0ZVNpemVBc1JlcGxhY2VkKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0lubGluZUJsb2NrT3JJbmxpbmVUYWJsZSgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJJRnJhbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1JlbmRlcklGcmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAvLyBGSVhNRTogRG8gd2Ugc3RpbGwgbmVlZCB0aGlzIHdvcmthcm91bmQgdG8gYXZvaWQg
YnJlYWtpbmcgbGF5b3V0IHRlc3RzPwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQYXJ0T2JqZWN0IjsgfQorICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUGFy
dE9iamVjdCI7IH0KICNlbHNlCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklGcmFtZSI7IH0KKyAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlcklGcmFtZSI7IH0K
ICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFJlbmRl
clZpZXcqIGNvbnRlbnRSb290UmVuZGVyZXIoKSBjb25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGM4MTA0NzRmNDI0NjI1MDlkNjRiMTcwNjEyNTBlZWY4
NzZkMmJjYzcuLmM4M2MwZjg1MTE3YTA2ZmUxYmJkNGRhYjlhZDRhNDYwYTdhYmFlYzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFyZWFFbGVtZW50Rm9jdXNDaGFuZ2VkKEhUTUxBcmVhRWxlbWVudCopOwog
ICAgIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFNlbGVjdGlv
blJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYsIHVuc2lnbmVkLCB1bnNpZ25lZCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+
JiwgdW5zaWduZWQsIHVuc2lnbmVkKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRJ
c0dlbmVyYXRlZENvbnRlbnQoYm9vbCBnZW5lcmF0ZWQgPSB0cnVlKSB7IG1faXNHZW5lcmF0ZWRD
b250ZW50ID0gZ2VuZXJhdGVkOyB9CkBAIC03Miw0MiArNzIsNDIgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SGFzU2hhZG93Q29udHJvbHMoYm9vbCBoYXNTaGFkb3dDb250cm9scykgeyBtX2hhc1No
YWRvd0NvbnRyb2xzID0gaGFzU2hhZG93Q29udHJvbHM7IH0KIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgYm9vbCBuZWVkc1ByZWZlcnJlZFdpZHRoc1JlY2FsY3VsYXRpb24oKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNS
YXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5z
aWNSYXRpbykgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBib29sIGZvcmVncm91
bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3QsIHVu
c2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG5lZWRzUHJl
ZmVycmVkV2lkdGhzUmVjYWxjdWxhdGlvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIFJl
bmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNp
Y1NpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IGJvb2wgZm9yZWdyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IExheW91dFJlY3Qm
IGxvY2FsUmVjdCwgdW5zaWduZWQgbWF4RGVwdGhUb1Rlc3QpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVu
ZGVyU3R5bGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBp
bWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpIG92
ZXJyaWRlOworICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50
UmVjdCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcGFpbnRJbnRvUmVjdChHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSBvdmVycmlk
ZQorICAgIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgaW1hZ2VDaGFuZ2VkKGltYWdlUmVzb3VyY2UoKS5pbWFnZVB0cigpKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlckltYWdlIjsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5IYXZl
Q2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0ltYWdlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
ckltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzUmVu
ZGVySW1hZ2UoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGNvbXB1dGVCYWNrZ3JvdW5k
SXNLbm93blRvQmVPYnNjdXJlZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpIG92ZXJy
aWRlIGZpbmFsOworICAgIGJvb2wgY29tcHV0ZUJhY2tncm91bmRJc0tub3duVG9CZU9ic2N1cmVk
KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIExheW91dFVuaXQgbWluaW11bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBtaW5pbXVtUmVwbGFjZWRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFj
dGlvbikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNv
dXJjZSopIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRl
c3RBY3Rpb24pIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGJveFNoYWRvd1No
b3VsZEJlQXBwbGllZFRvQmFja2dyb3VuZChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQs
IEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCopIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOworICAgIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNv
bnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJ
bmxpbmVGbG93Qm94KikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wg
c2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5b3V0TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmgKaW5kZXggOTZmODkwOGNlYTE5OTY5ZDAxMWFiZjk4MGJl
MDc1ZGM3OTEwNGIxNi4uYzdjOTFhNWE2ZWU3ZjQyODQ0YjdkOThhNjZjNTRlMDc0MzZhNTFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlLmgKQEAgLTQwLDIxICs0MCwyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZShSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNodXRkb3duKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplKFJlbmRlckVs
ZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNodXRkb3duKCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGltYWdlKGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQg
PSAwKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9Cisg
ICAgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBS
ZWZQdHI8SW1hZ2U+IGltYWdlKGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIGVycm9yT2NjdXJyZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3N0eWxlSW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNl
dENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisgICAgdm9pZCBzZXRDb250
YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgSW50U2l6ZSYpIG92ZXJyaWRlOworICAgIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKTsgfQorICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGZs
b2F0IG11bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExheW91dFNpemUobV9zdHls
ZUltYWdlLT5pbWFnZVNpemUobV9yZW5kZXJlciwgbXVsdGlwbGllcikpOyB9Ci0gICAgdmlydHVh
bCBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gTGF5b3V0U2l6ZShtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZShtX3JlbmRlcmVy
LCBtdWx0aXBsaWVyKSk7IH0KKyAgICBMYXlvdXRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBs
aWVyKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRTaXplKG1fc3R5bGVJbWFnZS0+aW1h
Z2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpKTsgfQorICAgIExheW91dFNpemUgaW50cmlu
c2ljU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRT
aXplKG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpKTsgfQog
Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmRhdGEoKTsgfQorICAgIFdyYXBwZWRJbWFnZVB0ciBpbWFn
ZVB0cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZGF0YSgpOyB9CiAK
ICAgICBSZWY8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCA3NjQxMWRjNzk0NjZmZTM3MTAxMTUxYjNjNWFiNmQz
NWU4ODRiYzY0Li40N2VmMDRiYjkwNzA3NWY2YWM5ODE5NjBiNjBlNDI5MjkwOThjZTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0zNywyMyArMzcsMjMgQEAg
cHVibGljOgogICAgIFJlbmRlcklubGluZShFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsK
ICAgICBSZW5kZXJJbmxpbmUoRG9jdW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblRvcCgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luQmVmb3JlKGNvbnN0IFJl
bmRlclN0eWxlKiBvdGhlclN0eWxlID0gMCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCBMYXlvdXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxl
ID0gMCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdp
blN0YXJ0KGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlID0gMCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkVuZChjb25zdCBSZW5kZXJTdHls
ZSogb3RoZXJTdHlsZSA9IDApIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFVuaXQg
bWFyZ2luTGVmdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFVuaXQgbWFyZ2lu
UmlnaHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBMYXlvdXRVbml0IG1hcmdpblRvcCgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFVuaXQgbWFyZ2luQm90dG9tKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgUmVu
ZGVyU3R5bGUqIG90aGVyU3R5bGUgPSAwKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBMYXlv
dXRVbml0IG1hcmdpbkFmdGVyKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlID0gMCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydChjb25zdCBSZW5k
ZXJTdHlsZSogb3RoZXJTdHlsZSA9IDApIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91
dFVuaXQgbWFyZ2luRW5kKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlclN0eWxlID0gMCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWJzb2x1
dGVSZWN0cyhWZWN0b3I8SW50UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRP
ZmZzZXQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBjb25z
dCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gbnVsbHB0cikgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJl
bmRlckVsZW1lbnQmLCBjb25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBv
aW50ID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIEludFJl
Y3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbAorICAgIEludFJlY3Qg
Ym9yZGVyQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbAogICAgIHsKICAgICAgICAg
SW50UmVjdCBib3VuZGluZ0JveCA9IGxpbmVzQm91bmRpbmdCb3goKTsKICAgICAgICAgcmV0dXJu
IEludFJlY3QoMCwgMCwgYm91bmRpbmdCb3gud2lkdGgoKSwgYm91bmRpbmdCb3guaGVpZ2h0KCkp
OwpAQCAtNzcsMTcgKzc3LDE3IEBAIHB1YmxpYzoKICAgICBJbmxpbmVCb3gqIGxhc3RMaW5lQm94
SW5jbHVkaW5nQ3VsbGluZygpIGNvbnN0IHsgcmV0dXJuIGFsd2F5c0NyZWF0ZUxpbmVCb3hlcygp
ID8gbGFzdExpbmVCb3goKSA6IGN1bGxlZElubGluZUxhc3RMaW5lQm94KCk7IH0KIAogI2lmIFBM
QVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkc0ZvclNlbGVjdGlvbihW
ZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWJzb2x1
dGVRdWFkc0ZvclNlbGVjdGlvbihWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMpIGNvbnN0IG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFJlbmRlckJveE1vZGVsT2JqZWN0KiB2aXJ0dWFs
Q29udGludWF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gY29udGludWF0aW9u
KCk7IH0KKyAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCogdmlydHVhbENvbnRpbnVhdGlvbigpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGNvbnRpbnVhdGlvbigpOyB9CiAgICAgUmVuZGVy
SW5saW5lKiBpbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRHJhZ1N0YXRlKGJvb2wgZHJhZ09uKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2
b2lkIHVwZGF0ZURyYWdTdGF0ZShib29sIGRyYWdPbikgb3ZlcnJpZGUgZmluYWw7CiAgICAgCiAg
ICAgTGF5b3V0U2l6ZSBvZmZzZXRGb3JJbkZsb3dQb3NpdGlvbmVkSW5saW5lKGNvbnN0IFJlbmRl
ckJveCogY2hpbGQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3Rz
KFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0
LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdm9p
ZCBwYWludE91dGxpbmUoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHVz
aW5nIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb250aW51YXRpb247CkBAIC05NywyMiArOTcsMjIg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0QWx3YXlzQ3JlYXRlTGluZUJveGVzKCkgeyBzZXRSZW5k
ZXJJbmxpbmVBbHdheXNDcmVhdGVzTGluZUJveGVzKHRydWUpOyB9CiAgICAgdm9pZCB1cGRhdGVB
bHdheXNDcmVhdGVMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KTsKIAotICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQsIExheW91dFVuaXQqIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2NhbENh
cmV0UmVjdChJbmxpbmVCb3gqLCBpbnQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBib29sIGhpdFRlc3RDdWxsZWRJbmxpbmUoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBs
b2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBMYXlvdXRSZWN0IGN1bGxlZElubGluZVZpc3VhbE92ZXJmbG93Qm91
bmRpbmdCb3goKSBjb25zdDsKICAgICBJbmxpbmVCb3gqIGN1bGxlZElubGluZUZpcnN0TGluZUJv
eCgpIGNvbnN0OwpAQCAtMTI0LDUyICsxMjQsNTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdlbmVy
YXRlQ3VsbGVkTGluZUJveFJlY3RzKEdlbmVyYXRvckNvbnRleHQmIHlpZWxkLCBjb25zdCBSZW5k
ZXJJbmxpbmUqIGNvbnRhaW5lcikgY29uc3Q7CiAKICAgICB2b2lkIGFkZENoaWxkVG9Db250aW51
YXRpb24oUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCk7
Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkSWdub3JpbmdDb250aW51YXRpb24oUmVuZGVyT2Jq
ZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgYWRkQ2hpbGRJZ25vcmluZ0NvbnRpbnVhdGlvbihSZW5kZXJP
YmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cikgb3Zl
cnJpZGUgZmluYWw7CiAKICAgICB2b2lkIHNwbGl0SW5saW5lcyhSZW5kZXJCbG9jayogZnJvbUJs
b2NrLCBSZW5kZXJCbG9jayogdG9CbG9jaywgUmVuZGVyQmxvY2sqIG1pZGRsZUJsb2NrLAogICAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQsIFJlbmRlckJveE1v
ZGVsT2JqZWN0KiBvbGRDb250KTsKICAgICB2b2lkIHNwbGl0RmxvdyhSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkLCBSZW5kZXJCbG9jayogbmV3QmxvY2tCb3gsCiAgICAgICAgICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyQm94TW9kZWxPYmplY3QqIG9sZENvbnQpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlIGZpbmFsIHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IH0gLy8gRG8gbm90aGluZyBmb3IgbGF5b3V0KCkKKyAgICB2b2lkIGxheW91dCgp
IG92ZXJyaWRlIGZpbmFsIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gRG8gbm90aGluZyBm
b3IgbGF5b3V0KCkKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CisgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlz
SW5GbG93UG9zaXRpb25lZCgpIHx8IGNyZWF0ZXNHcm91cCgpIHx8IGhhc0NsaXBQYXRoKCkgfHwg
d2lsbENoYW5nZUNyZWF0ZXNTdGFja2luZ0NvbnRleHQoKTsgfQorICAgIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzSW5GbG93UG9zaXRpb25lZCgpIHx8IGNy
ZWF0ZXNHcm91cCgpIHx8IGhhc0NsaXBQYXRoKCkgfHwgd2lsbENoYW5nZUNyZWF0ZXNTdGFja2lu
Z0NvbnRleHQoKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldExlZnQoKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0VG9wKCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFdpZHRoKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpLndpZHRoKCk7
IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpLmhlaWdodCgpOyB9CisgICAgTGF5b3V0
VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0VW5pdCBv
ZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBMYXlvdXRVbml0IG9mZnNldFdp
ZHRoKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbGluZXNCb3VuZGluZ0JveCgpLndp
ZHRoKCk7IH0KKyAgICBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCByZWN0V2l0aE91dGxpbmVGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFVuaXQgb3V0bGluZVdpZHRo
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRl
ckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOworICAg
IExheW91dFJlY3QgcmVjdFdpdGhPdXRsaW5lRm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRVbml0IG91dGxpbmVXaWR0aCkgY29u
c3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgTGF5b3V0UmVjdCBjb21wdXRlUmVjdEZvclJlcGFpbnQo
Y29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgZml4ZWQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVh
bCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBi
b29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJP
YmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdz
LCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgUmVuZGVyT2JqZWN0
KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFu
Y2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBv
aW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGUgZmluYWw7CisgICAgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJS
ZWdpb24qKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBmcmFtZVJl
Y3RGb3JTdGlja3lQb3NpdGlvbmluZygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGxp
bmVzQm91bmRpbmdCb3goKTsgfQorICAgIExheW91dFJlY3QgZnJhbWVSZWN0Rm9yU3RpY2t5UG9z
aXRpb25pbmcoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94
KCk7IH0KIAogICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IGNyZWF0
ZUlubGluZUZsb3dCb3goKTsgLy8gU3ViY2xhc3NlZCBieSBSZW5kZXJTVkdJbmxpbmUKIAotICAg
IHZpcnR1YWwgdm9pZCBkaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZChSZW5kZXJPYmplY3QmIGNo
aWxkKSBvdmVycmlkZSBmaW5hbCB7IG1fbGluZUJveGVzLmRpcnR5TGluZXNGcm9tQ2hhbmdlZENo
aWxkKCp0aGlzLCBjaGlsZCk7IH0KKyAgICB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxk
KFJlbmRlck9iamVjdCYgY2hpbGQpIG92ZXJyaWRlIGZpbmFsIHsgbV9saW5lQm94ZXMuZGlydHlM
aW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQogCi0gICAgdmlydHVhbCBMYXlv
dXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBMYXlvdXRVbml0
IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
KyAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5n
TGluZSkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGNoaWxk
QmVjYW1lTm9uSW5saW5lKFJlbmRlckVsZW1lbnQmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGNoaWxkQmVjYW1lTm9uSW5saW5lKFJlbmRlckVsZW1lbnQmKSBvdmVycmlkZSBmaW5hbDsKIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgdXBkYXRlSGl0VGVzdFJl
c3VsdChIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5hbDsK
IAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJ
bnRSZWN0KiA9IDApIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBvdmVycmlkZSBmaW5hbDsKIAogI2lmIEVO
QUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5ub3RhdGVkUmVn
aW9ucyhWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFsdWU+Jikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBhZGRBbm5vdGF0ZWRSZWdpb25zKFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mKSBv
dmVycmlkZSBmaW5hbDsKICNlbmRpZgogICAgIAogICAgIFJlbmRlclB0cjxSZW5kZXJJbmxpbmU+
IGNsb25lKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4
IGRhNGQ1NjcyNzZhYWYwYjU1MmMwOTE2YTAyNDFlODM0NmM5ZTQ1ZDguLjdkZGI3ZWY4NTFiNzNm
ZmVhNDg0YTQ1MDRkYzE4ODhjODY2NzUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oCkBAIC0yMTksMjggKzIxOSwyOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNWZXJ0
aWNhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHZlcnRpY2FsU2Nyb2xsYmFyKCk7IH0KIAog
ICAgIC8vIFNjcm9sbGFibGVBcmVhIG92ZXJyaWRlcwotICAgIHZpcnR1YWwgU2Nyb2xsUG9zaXRp
b24gc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbFBvc2l0
aW9uOyB9CisgICAgU2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3Njcm9sbFBvc2l0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhciog
aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faEJhci5nZXQo
KTsgfQotICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fdkJhci5nZXQoKTsgfQotICAgIHZpcnR1YWwgU2Nyb2xsYWJsZUFy
ZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpIG92ZXJyaWRl
OworICAgIFNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faEJhci5nZXQoKTsgfQorICAgIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxhYmxl
QXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1Nj
cm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBvdmVycmlkZTsKICNpZiBFTkFCTEUo
Q1NTX1NDUk9MTF9TTkFQKQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTbmFwT2Zmc2V0cygpIG92
ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU25hcE9mZnNldHMoKSBvdmVycmlkZTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdmlydHVh
bCBib29sIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVG91Y2hTY3JvbGxhYmxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9y
bVRvdWNoRXZlbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGlzVG91Y2hTY3JvbGxhYmxlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCi0gICAgdmlydHVhbCBib29sIGlz
T3ZlcmZsb3dTY3JvbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBpc092ZXJmbG93U2Nyb2xsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFNjcm9sbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRFbmRTY3JvbGwoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVXBk
YXRlU2Nyb2xsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldElzVXNlclNjcm9sbChi
b29sIGlzVXNlclNjcm9sbCkgb3ZlcnJpZGUgeyBtX2luVXNlclNjcm9sbCA9IGlzVXNlclNjcm9s
bDsgfQorICAgIHZvaWQgZGlkU3RhcnRTY3JvbGwoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEVu
ZFNjcm9sbCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkVXBkYXRlU2Nyb2xsKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRJc1VzZXJTY3JvbGwoYm9vbCBpc1VzZXJTY3JvbGwpIG92ZXJyaWRlIHsg
bV9pblVzZXJTY3JvbGwgPSBpc1VzZXJTY3JvbGw7IH0KIAogICAgIGJvb2wgaXNJblVzZXJTY3Jv
bGwoKSBjb25zdCB7IHJldHVybiBtX2luVXNlclNjcm9sbDsgfQogCkBAIC02MTAsMTIgKzYxMCwx
MiBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBiYWNraW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNraW5nLmdldCgpOyB9CiAgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBlbnN1cmVC
YWNraW5nKCk7CiAgICAgdm9pZCBjbGVhckJhY2tpbmcoYm9vbCBsYXllckJlaW5nRGVzdHJveWVk
ID0gZmFsc2UpOwotICAgIHZpcnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxpbmco
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEdyYXBoaWNzTGF5ZXIqIGxheWVyRm9ySG9y
aXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgR3JhcGhpY3NM
YXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3JuZXIoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0FzeW5jU2Nyb2xsaW5nKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxpbmcoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFy
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JTY3JvbGxDb3Ju
ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHVzZXNDb21wb3NpdGVkU2Nyb2xsaW5nKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzQXN5bmNTY3JvbGxpbmcoKSBjb25zdCBvdmVy
cmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygp
IGNvbnN0OwogCiAgICAgYm9vbCBwYWludHNXaXRoVHJhbnNwYXJlbmN5KFBhaW50QmVoYXZpb3Ig
cGFpbnRCZWhhdmlvcikgY29uc3QKQEAgLTg1NSwzMiArODU1LDMyIEBAIHByaXZhdGU6CiAKICAg
ICBib29sIHNob3VsZEJlU2VsZlBhaW50aW5nTGF5ZXIoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
aW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgaW50IHNjcm9sbE9mZnNldChTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2libGUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFp
bmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNv
bnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29uc3Qg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdEludGVybmFsKFZp
c2libGVDb250ZW50UmVjdEluY2x1ZGVzU2Nyb2xsYmFycywgVmlzaWJsZUNvbnRlbnRSZWN0QmVo
YXZpb3IpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50U2l6ZSB2aXNpYmxlU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFBvaW50IGxhc3RLbm93bk1vdXNlUG9zaXRpb24oKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNIYW5kbGluZ1doZWVsRXZlbnQoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1h
dGlvbnMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3Qgc2Nyb2xsYWJsZUFy
ZWFCb3VuZGluZ0JveChib29sKiBpc0luc2lkZUZpeGVkID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlc1Njcm9sbExheWVyUG9zaXRpb25Pbk1haW5U
aHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29s
IGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZygp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZVNjcm9s
bENvcm5lclJlY3QoY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNBY3RpdmUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIEludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRSZWN0
IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgY29udmVydEZyb21T
Y3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nVmll
d1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFBvaW50JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgaW50IHNjcm9sbFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpIG92
ZXJyaWRlOworCisgICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxl
Q29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9y
KSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRT
aXplIG92ZXJoYW5nQW1vdW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UG9pbnQgbGFzdEtu
b3duTW91c2VQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNIYW5kbGluZ1do
ZWVsRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFN1c3BlbmRTY3JvbGxB
bmltYXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJv
dW5kaW5nQm94KGJvb2wqIGlzSW5zaWRlRml4ZWQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHVwZGF0ZXNTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgZm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWlu
VGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CiAjaWYgRU5BQkxF
KENTU19TQ1JPTExfU05BUCkKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5oCmluZGV4IGJlMjEzODA0NTg5NzNkZmU5ODUxZDIyNjBjNzQwM2E5YjM4NDQy
NzIuLjExOTg1MmVjNTNjYTJiMzhhYjY1MWFhNDdmMDA5YmVjODUyZDFjNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKQEAgLTE5MCwzOCArMTkw
LDM4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZURlYnVnSW5kaWNhdG9ycyhib29sIHNob3dC
b3JkZXIsIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyKTsKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJD
bGllbnQgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkIHRpbGVkQmFja2luZ1VzYWdlQ2hhbmdl
ZChjb25zdCBHcmFwaGljc0xheWVyKiwgYm9vbCAvKnVzaW5nVGlsZWRCYWNraW5nKi8pIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbktleSwgZG91YmxlIHN0YXJ0VGltZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaEJlZm9y
ZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lk
IHRpbGVkQmFja2luZ1VzYWdlQ2hhbmdlZChjb25zdCBHcmFwaGljc0xheWVyKiwgYm9vbCAvKnVz
aW5nVGlsZWRCYWNraW5nKi8pIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25LZXksIGRv
dWJsZSBzdGFydFRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChj
b25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGbHVzaEJlZm9y
ZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0Nv
bnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0JiBjbGlw
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllcios
IEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9h
dFJlY3QmIGNsaXApIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgY29udGVudHNTY2FsZU11
bHRpcGxpZXJGb3JOZXdUaWxlcyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9h
dCBjb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludHNPcGFxdWVseUF0Tm9u
SW50ZWdyYWxTY2FsZXMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgcGFpbnRzT3BhcXVlbHlBdE5vbkludGVncmFsU2NhbGVzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFjdG9y
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCB6b29tZWRPdXRQYWdlU2NhbGVG
YWN0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0Q2hhbmdl
c0ZvckxheWVyKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0Q3VycmVudFRyYW5zZm9ybShjb25zdCBHcmFwaGljc0xheWVyKiwgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0
b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCB6b29tZWRPdXRQYWdlU2NhbGVGYWN0b3Io
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25z
dCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRDdXJyZW50VHJh
bnNmb3JtKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTa2lwTGF5ZXJJbkR1bXAoY29uc3Qg
R3JhcGhpY3NMYXllciosIExheWVyVHJlZUFzVGV4dEJlaGF2aW9yKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFByb3BlcnR5Rm9yTGF5ZXIoY29uc3QgR3JhcGhp
Y3NMYXllciosIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3Vs
ZFNraXBMYXllckluRHVtcChjb25zdCBHcmFwaGljc0xheWVyKiwgTGF5ZXJUcmVlQXNUZXh0QmVo
YXZpb3IpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRHVtcFByb3BlcnR5Rm9yTGF5
ZXIoY29uc3QgR3JhcGhpY3NMYXllciosIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGls
ZXMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRUZW1wb3JhcmlseVJldGFpblRpbGVDb2hvcnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlR2lhbnRUaWxlcygpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAhbV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllcjsgfQorICAgIGJv
b2wgc2hvdWxkQWdncmVzc2l2ZWx5UmV0YWluVGlsZXMoY29uc3QgR3JhcGhpY3NMYXllciopIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkVGVtcG9yYXJpbHlSZXRhaW5UaWxlQ29ob3J0
cyhjb25zdCBHcmFwaGljc0xheWVyKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VHaWFu
dFRpbGVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBuZWVkc1BpeGVsQWxpZ21lbnQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9pc01haW5GcmFtZVJlbmRlclZpZXdMYXllcjsgfQog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgYm9vbCBuZWVkc0lPU0R1bXBSZW5kZXJU
cmVlTWFpbkZyYW1lUmVuZGVyVmlld0xheWVySXNBbHdheXNPcGFxdWVIYWNrKGNvbnN0IEdyYXBo
aWNzTGF5ZXImKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIG5lZWRzSU9TRHVtcFJlbmRlclRy
ZWVNYWluRnJhbWVSZW5kZXJWaWV3TGF5ZXJJc0Fsd2F5c09wYXF1ZUhhY2soY29uc3QgR3JhcGhp
Y3NMYXllciYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZm5kZWYgTkRFQlVHCi0gICAg
dmlydHVhbCB2b2lkIHZlcmlmeU5vdFBhaW50aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2ZXJp
ZnlOb3RQYWludGluZygpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBM
YXlvdXRSZWN0IGNvbnRlbnRzQm94KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggODVmM2EwYmFjNTlmYzdmMTFhYmRj
MWU2ZDEwOWIyOGE4OGEwZGRiYS4uYzJlMzhhMDlmYzIyNDdlMjcyMTFmMGZjNWQzNDYyNzBiYWRl
ZjIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaApAQCAtMjQ5LDEzICsyNDksMTMgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGxheWVy
VHJlZUFzVGV4dChMYXllclRyZWVGbGFncyk7CiAKLSAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1Nj
YWxlTXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgZmxvYXQgem9vbWVkT3V0UGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBmbG9hdCBjb250ZW50c1NjYWxlTXVsdGlwbGllckZvck5ld1RpbGVzKGNvbnN0IEdyYXBoaWNz
TGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBmbG9hdCB6b29tZWRPdXRQYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRDaGFuZ2VzRm9yTGF5ZXIoY29u
c3QgR3JhcGhpY3NMYXllciopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZENvbW1pdENoYW5nZXNGb3JMYXllcihjb25zdCBHcmFwaGljc0xheWVy
KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlGbHVzaEJlZm9yZURpc3BsYXlSZWZy
ZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5ZXJUaWxl
ZEJhY2tpbmdVc2FnZUNoYW5nZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGJvb2wgLyp1c2luZ1Rp
bGVkQmFja2luZyovKTsKICAgICAKQEAgLTMzMSwxMyArMzMxLDEzIEBAIHByaXZhdGU6CiAgICAg
c3RydWN0IE92ZXJsYXBFeHRlbnQ7CiAKICAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50IGltcGxl
bWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRp
bmdQaGFzZSwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1
c3RvbVBvc2l0aW9uRm9yVmlzaWJsZVJlY3RDb21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVy
KiwgRmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1RyYWNr
aW5nUmVwYWludHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRDb250ZW50
cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY3VzdG9t
UG9zaXRpb25Gb3JWaXNpYmxlUmVjdENvbXB1dGF0aW9uKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBG
bG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RyYWNraW5nUmVwYWludHMo
KSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICAvLyBHcmFwaGljc0xheWVyVXBkYXRlckNsaWVu
dCBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCBmbHVzaExheWVyc1Nvb24oR3JhcGhp
Y3NMYXllclVwZGF0ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZsdXNoTGF5ZXJzU29vbihHcmFw
aGljc0xheWVyVXBkYXRlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4g
UkwgbmVlZHMgYSBjb21wb3NpdGluZyBsYXllci4KICAgICBib29sIG5lZWRzVG9CZUNvbXBvc2l0
ZWQoY29uc3QgUmVuZGVyTGF5ZXImLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5v
dENvbXBvc2l0ZWRSZWFzb24qID0gbnVsbHB0cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmgKaW5kZXggOWY4NGI0Nzc1MWNiNDk5
Y2YxYjBhMDg5ZWJjNDJmZGQ0ZDk0YzUzYi4uZTY4ODkxZDFiNDk2MDMwZTViY2Q1NDAxZDNkODVj
ODhhY2VhMzZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyRmlsdGVySW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckZpbHRlckluZm8uaApAQCAtNjMsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVS
ZWZlcmVuY2VGaWx0ZXJDbGllbnRzKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIEhhc2hNYXA8
Y29uc3QgUmVuZGVyTGF5ZXIqLCBzdGQ6OnVuaXF1ZV9wdHI8RmlsdGVySW5mbz4+JiBtYXAoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxP
YmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmgKaW5kZXggZDliNWYzYzk5YTkyNWM5MGQ5NGMyNTFkYzY0MzJhYjQ3ZDk0ZWQ1Zi4uMzNhZjI0
YjQxMmIxMGNmM2QyNTk4N2NjMGU1Y2NlY2E0NmMzMTAzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC0zOSw4ICszOSw4IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CiAgICAgUmVu
ZGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRl
clN0eWxlJiBuZXdTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGluZUJyZWFrLmgKaW5kZXggYWE3ZTJkOTIwZmZiNjMzMzAzOTJiYTRlYjA2NTA5YWMyYTMzMDk3
My4uODFjNDFlNjM2YjA4NmM3OWIxYzliMDVlMzRmMTI5MDQxZDM4MWY0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAtMzYsOSArMzYsOSBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+UmVuZGVyTGluZUJyZWFrKCk7CiAKICAgICAvLyBGSVhNRTogVGhl
IGxpZXMgaGVyZSBrZWVwIHJlbmRlciB0cmVlIGR1bXAgYmFzZWQgdGVzdCByZXN1bHRzIHVuY2hh
bmdlZC4KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2lzV0JSID8gIlJlbmRlcldvcmRCcmVhayIgOiAiUmVuZGVyQlIiOyB9Cisg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNX
QlIgPyAiUmVuZGVyV29yZEJyZWFrIiA6ICJSZW5kZXJCUiI7IH0KIAotICAgIHZpcnR1YWwgYm9v
bCBpc1dCUigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNXQlI7IH0KKyAgICBib29sIGlz
V0JSKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1dCUjsgfQogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPElubGluZUVsZW1lbnRCb3g+IGNyZWF0ZUlubGluZUJveCgpOwogICAgIElubGluZUVs
ZW1lbnRCb3gqIGlubGluZUJveFdyYXBwZXIoKSBjb25zdCB7IHJldHVybiBtX2lubGluZUJveFdy
YXBwZXI7IH0KQEAgLTUwLDQ0ICs1MCw0NCBAQCBwdWJsaWM6CiAKICAgICBJbnRSZWN0IGxpbmVz
Qm91bmRpbmdCb3goKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZl
Y3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhYnNvbHV0
ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElP
UykKLXZpcnR1YWwgdm9pZCBjb2xsZWN0U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJl
Y3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6
Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIG92ZXJyaWRlOwordm9pZCBjb2xsZWN0
U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQgPSAwLCB1bnNpZ25lZCBlbmRPZmZzZXQgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgdm9pZCBub2RlKCkg
Y29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0KLQotICAgIHZpcnR1YWwg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25z
dCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNl
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVC
b3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0
YXRlKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1h
cmdpbkxlZnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBMYXlv
dXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAwOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpbkFmdGVy
KGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZp
cnR1YWwgTGF5b3V0VW5pdCBtYXJnaW5TdGFydChjb25zdCBSZW5kZXJTdHlsZSopIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luRW5kKGNv
bnN0IFJlbmRlclN0eWxlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGxpbmVz
Qm91bmRpbmdCb3goKS53aWR0aCgpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG9mZnNldEhl
aWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGxpbmVzQm91bmRpbmdCb3goKS5oZWlnaHQo
KTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBmcmFtZVJlY3RGb3JTdGlja3lQb3NpdGlvbmlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBMYXlvdXRS
ZWN0KCk7IH0KLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIExheW91dFJlY3QoKTsgfQotCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21TdHlsZSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQorCisgICAgVmlzaWJsZVBvc2l0aW9uIHBvc2l0
aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVy
cmlkZTsKKyAgICBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQg
Y2FyZXRNYXhPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkJlU2VsZWN0aW9u
TGVhZigpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5s
aW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxp
bmUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUp
IG92ZXJyaWRlOworCisgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
aW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworCisgICAgTGF5
b3V0VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgTGF5
b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAg
TGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAg
IExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9Cisg
ICAgTGF5b3V0VW5pdCBtYXJnaW5CZWZvcmUoY29uc3QgUmVuZGVyU3R5bGUqKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAwOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5BZnRlcihjb25zdCBSZW5k
ZXJTdHlsZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBMYXlvdXRVbml0IG1h
cmdpblN0YXJ0KGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQorICAgIExheW91dFVuaXQgbWFyZ2luRW5kKGNvbnN0IFJlbmRlclN0eWxlKikgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQorICAgIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBsaW5lc0JvdW5kaW5nQm94KCkud2lkdGgoKTsgfQorICAgIExheW91
dFVuaXQgb2Zmc2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbGluZXNCb3VuZGlu
Z0JveCgpLmhlaWdodCgpOyB9CisgICAgSW50UmVjdCBib3JkZXJCb3VuZGluZ0JveCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIExheW91dFJlY3QgZnJhbWVSZWN0Rm9yU3RpY2t5UG9zaXRpb25pbmco
KSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gTGF5b3V0UmVj
dCgpOyB9CisgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25z
dCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTGF5b3V0
UmVjdCgpOyB9CisKKyAgICB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAg
ICBJbmxpbmVFbGVtZW50Qm94KiBtX2lubGluZUJveFdyYXBwZXI7CiAgICAgbXV0YWJsZSBpbnQg
bV9jYWNoZWRMaW5lSGVpZ2h0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmgKaW5kZXggM2E3MjEzMjJkZGRkNWM5NTRiNTI5YzBhN2FjNTVmODQzNjdhODc3ZC4uOWUzMDU2
YTBiNmE2MTA5MDI2Zjk3NzhmNWZhYTExZTk5MThiMmJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBAIC01OSw4MyArNTksODMgQEAgcHVibGljOgogCiAgICAg
aW50IHNpemUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0
aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVsZW1lbnQqKiBz
dG9wRWxlbWVudCA9IG51bGxwdHIsIFJlbmRlckJveCogc3RhcnRCb3ggPSBudWxscHRyLCBjb25z
dCBJbnRQb2ludCYgd2hlZWxFdmVudEFic29sdXRlUG9pbnQgPSBJbnRQb2ludCgpKSBvdmVycmlk
ZTsKKyAgICBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBm
bG9hdCBtdWx0aXBsaWVyID0gMSwgRWxlbWVudCoqIHN0b3BFbGVtZW50ID0gbnVsbHB0ciwgUmVu
ZGVyQm94KiBzdGFydEJveCA9IG51bGxwdHIsIGNvbnN0IEludFBvaW50JiB3aGVlbEV2ZW50QWJz
b2x1dGVQb2ludCA9IEludFBvaW50KCkpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNj
cm9sbGVkVG9Ub3AoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsZWRU
b0JvdHRvbSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxlZFRvTGVm
dCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxlZFRvUmlnaHQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIHNjcm9sbGVkVG9Ub3AoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHNjcm9sbGVkVG9Cb3R0b20oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNj
cm9sbGVkVG9MZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzY3JvbGxlZFRvUmlnaHQo
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9
IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJMaXN0Qm94IjsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTGlzdEJveCI7IH0KIAotICAg
IHZpcnR1YWwgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc0xpc3RCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVjdChj
b25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc0NvbnRyb2xDbGlwKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVj
dChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29s
IGlzUG9pbnRJbk92ZXJmbG93Q29udHJvbChIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9p
bnQmIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1BvaW50SW5PdmVyZmxvd0NvbnRyb2woSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBM
YXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJp
dHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLCBFbGVtZW50Kiogc3RvcEVsZW1lbnQgPSBudWxscHRy
KSBvdmVycmlkZTsKKyAgICBib29sIGxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLCBFbGVtZW50Kiogc3Rv
cEVsZW1lbnQgPSBudWxscHRyKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
SW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5p
dCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CisgICAgaW50IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQg
bGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMo
VmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gbnVsbHB0cikg
b3ZlcnJpZGU7CisgICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcGFpbnRDb250YWluZXIgPSBudWxscHRyKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBv
aW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BBdXRvc2Nyb2xsKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBjYW5CZVByb2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgYXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYp
IG92ZXJyaWRlOworICAgIHZvaWQgc3RvcEF1dG9zY3JvbGwoKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRQYW5TY3JvbGwoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIHBhblNjcm9sbChjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZv
aWQgcGFuU2Nyb2xsKGNvbnN0IEludFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGlu
dCB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBp
bnQgc2Nyb2xsTGVmdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFRv
cCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFdpZHRoKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExlZnQoaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0U2Nyb2xsVG9wKGludCkgb3ZlcnJpZGU7CisgICAgaW50IHZlcnRpY2FsU2Ny
b2xsYmFyV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsTGVmdCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGludCBzY3JvbGxUb3AoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQg
c2Nyb2xsV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsSGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3JvbGxMZWZ0KGludCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRTY3JvbGxUb3AoaW50KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKICAgICAvLyBTY3JvbGxhYmxl
QXJlYSBpbnRlcmZhY2UuCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShTY3JvbGxiYXJPcmll
bnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsT2Zmc2V0KFNj
cm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
U2Nyb2xsUG9zaXRpb24gbWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBTY3JvbGxQb3NpdGlvbiBtYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbENvcm5lclZpc2li
bGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfSAvLyBXZSBkb24ndCBzdXBwb3J0
IHJlc2l6ZSBvbiBsaXN0IGJveGVzIHlldC4gSWYgd2UgZGlkIHRoZXNlIHdvdWxkIGhhdmUgdG8g
Y2hhbmdlLgotICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVT
Y3JvbGxDb3JuZXJSZWN0KGNvbnN0IEludFJlY3QmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydEZyb21TY3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFBvaW50IGNv
bnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVy
dEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IElu
dFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTY3JvbGxiYXIqIHZlcnRpY2Fs
U2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9Ci0gICAg
dmlydHVhbCBJbnRTaXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgSW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEludFNpemUo
d2lkdGgoKSwgaGVpZ2h0KCkpOyB9Ci0gICAgdmlydHVhbCBJbnRQb2ludCBsYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzSGFuZGxpbmdX
aGVlbEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN1c3Bl
bmRTY3JvbGxBbmltYXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHVw
ZGF0ZXNTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1h
aW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIHZp
cnR1YWwgU2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVB
bmNlc3RvcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50UmVjdCBzY3JvbGxhYmxlQXJlYUJv
dW5kaW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHNjcm9s
bFNpemUoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzY3Jv
bGxPZmZzZXQoU2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
c2V0U2Nyb2xsT2Zmc2V0KGNvbnN0IFNjcm9sbE9mZnNldCYpIG92ZXJyaWRlOworICAgIFNjcm9s
bFBvc2l0aW9uIG1pbmltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFNj
cm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgaW52YWxpZGF0ZVNjcm9sbGJhclJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGlzU2Nyb2xsQ29ybmVyVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
IC8vIFdlIGRvbid0IHN1cHBvcnQgcmVzaXplIG9uIGxpc3QgYm94ZXMgeWV0LiBJZiB3ZSBkaWQg
dGhlc2Ugd291bGQgaGF2ZSB0byBjaGFuZ2UuCisgICAgSW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdm9pZCBpbnZhbGlk
YXRlU2Nyb2xsQ29ybmVyUmVjdChjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgSW50
UmVjdCBjb252ZXJ0RnJvbVNjcm9sbGJhclRvQ29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFJlY3QgY29udmVydEZy
b21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbVNjcm9sbGJhclRv
Q29udGFpbmluZ1ZpZXcoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxi
YXIoY29uc3QgU2Nyb2xsYmFyKiwgY29uc3QgSW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV92QmFyLmdldCgpOyB9CisgICAgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBJbnRTaXplIHZpc2libGVTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gSW50
U2l6ZSh3aWR0aCgpLCBoZWlnaHQoKSk7IH0KKyAgICBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBv
c2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0hhbmRsaW5nV2hlZWxFdmVudCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkU3VzcGVuZFNjcm9sbEFuaW1hdGlvbnMo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHVwZGF0ZXNTY3JvbGxMYXllclBvc2l0aW9uT25N
YWluVGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgZm9y
Y2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nKCkgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICBTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Nyb2xsYWJsZUFy
ZWEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFi
bGUoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5j
ZXN0b3IoKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHNjcm9sbGFibGVBcmVhQm91bmRpbmdCb3go
Ym9vbCogPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHVzZXNNb2NrU2Nyb2xs
QW5pbWF0b3IoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGxvZ01vY2tTY3JvbGxBbmltYXRv
ck1lc3NhZ2UoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0SXRlbS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKaW5kZXggNDQ1M2Y0YzlmZjJhNDU0NzhhMjhhZGZl
OTUxZTI2MWE3MmU0ZmE2NC4uYmFlNDA2MTk2MTBlNzkzNTgwMDI2ODE1ODJiYWM1M2MyMzA5NmU5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RJdGVtLmgKQEAgLTU5LDI2
ICs1OSwyNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREZXN0cm95TGlzdE1hcmtlcigpIHsgbV9t
YXJrZXIgPSBudWxscHRyOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckxpc3RJdGVtIjsgfQor
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyTGlzdEl0ZW0iOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNMaXN0SXRlbSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzTGlzdEl0ZW0oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50
b1RyZWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VtcHR5KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBvc2l0aW9uTGlzdE1hcmtl
cigpOwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlk
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFn
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCByZXF1aXJl
c0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogCiAgICAg
dm9pZCBpbnNlcnRPck1vdmVNYXJrZXJSZW5kZXJlcklmTmVlZGVkKCk7CiAgICAgaW5saW5lIGlu
dCBjYWxjVmFsdWUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oCmluZGV4IDk5M2ZlNzEwMWEwYmJhYmU1ZDE4YThmZjkyNzIzOGI2MDQ3NmQ1ODQu
LmFhMDBlYTNjZjM0ZjUzOTJiNzMzYmQyOTlmYTEzYWIwMDQwN2Y0M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtNDgsMzQgKzQ4LDM0IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTGlzdE1hcmtlciI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJl
ZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlckxpc3RNYXJrZXIiOyB9CisgICAgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGlzTGlzdE1hcmtlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGlzTGlzdE1hcmtlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFn
ZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJyaWRlOwor
ICAgIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAw
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPElubGluZUVsZW1lbnRC
b3g+IGNyZWF0ZUlubGluZUJveCgpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxp
bmVFbGVtZW50Qm94PiBjcmVhdGVJbmxpbmVCb3goKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBsaW5lSGVp
Z2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVGV4dCgpIGNvbnN0
IHsgcmV0dXJuICFpc0ltYWdlKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3Rpb25T
dGF0ZShTZWxlY3Rpb25TdGF0ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUp
IG92ZXJyaWRlOworICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNp
YmxlQ29udGVudCA9IHRydWUpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFm
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCB1cGRhdGVNYXJn
aW5zKCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUp
IG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCiAgICAgRmxvYXRSZWN0IGdldFJl
bGF0aXZlTWFya2VyUmVjdCgpOwogICAgIExheW91dFJlY3QgbG9jYWxTZWxlY3Rpb25SZWN0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVkaWEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCmluZGV4IGM1NjU1OWNhOTgxZGM5
MzljYmIwYTc2YzljYWQyMDNlNTkwNTNmYTUuLmJjMDNjZjU2NDRlYmM1MzQ5Nzk0YmI4OWQxMzcw
YzZkOGVkZWZlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
ZWRpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZWRpYS5oCkBAIC00
MiwyMSArNDIsMjEgQEAgcHVibGljOgogICAgIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEhUTUxNZWRpYUVsZW1lbnQ+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVD
aGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJNZWRpYSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYSgpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNJbWFn
ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlck1lZGlhIjsgfQorICAgIGJvb2wgaXNNZWRpYSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzSW1hZ2UoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVz
Rm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlv
bigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBzaGFkb3dDb250cm9sc05lZWRDdXN0b21MYXlvdXRNZXRyaWNzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc2hhZG93Q29udHJvbHNOZWVkQ3VzdG9tTGF5
b3V0TWV0cmljcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZSBmaW5hbDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck1lZGlhQ29udHJvbEVsZW1lbnRzLmgKaW5kZXggNTY4MGI2YzUzY2Y1YTc5ZDEx
ZjRjODI2MDUwZDI3NTY1ZDlhNTNkYi4uZTc4NTE2N2FkMDg5ZjMyZjljYTMwNWU4NmVmNjdkNTdm
MzQ3MmQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lZGlh
Q29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFJlbmRl
ck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYp
OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXIoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ZsZXhpYmxlQm94SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIH07CiAKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIFJlbmRl
clRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPX1RSQUNL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBjYTNhNjdk
NGEzYTdlNmIxMGMzMzg1MDExM2FhZTgzM2ZiOGI0OTk4Li42NTVkNTFhYjcyMTgzNWIxODQxM2Fm
ZmE3MWUyMjM4YWY1YjE3NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuaApAQCAtNjMsNjggKzYzLDY4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBl
bGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZW51TGlzdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzTWVudUxpc3QoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDAp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKKyAgICBib29sIGNy
ZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0
IGNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBoYXNDb250cm9sQ2xpcCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVj
dChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzQ29udHJv
bENsaXAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5IYXZl
R2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0g
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIlJlbmRlck1lbnVMaXN0IjsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWVudUxpc3QiOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdp
ZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOworICAg
IHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNh
bFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJl
Y2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
Ly8gUG9wdXBNZW51Q2xpZW50IG1ldGhvZHMKLSAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2Vk
KHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlT25DaGFuZ2UgPSB0cnVlKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNsZWFyZWQoKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIFN0cmluZyBpdGVtVGV4dCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1MYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1JY29uKHVuc2lnbmVkIGxp
c3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgaXRlbVRvb2xUaXAo
dW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBp
dGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5bGUgaXRlbVN0eWxlKHVuc2lnbmVk
IGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQb3B1cE1lbnVTdHlsZSBt
ZW51U3R5bGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBjbGllbnRJbnNldExl
ZnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBjbGllbnRJbnNldFJpZ2h0KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNsaWVudFBhZGRpbmdMZWZ0
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNsaWVudFBhZGRpbmdS
aWdodCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGxpc3RTaXplKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwb3B1cERpZEhpZGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXRlbUlzU2VwYXJhdG9yKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc0xhYmVsKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc1NlbGVjdGVkKHVuc2lnbmVkIGxpc3RJ
bmRleCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFBvcE92ZXIoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhUE9QVVBfTUVOVV9QVUxMU19ET1dOOyB9Ci0gICAgdmly
dHVhbCBib29sIHZhbHVlU2hvdWxkQ2hhbmdlT25Ib3RUcmFjaygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEZyb21JdGVtKHVuc2lnbmVk
IGxpc3RJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxpc3RCb3hTZWxlY3RJdGVt
KGludCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIGJvb2wgc2hpZnQs
IGJvb2wgZmlyZU9uQ2hhbmdlTm93ID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IG11bHRpcGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGb250U2VsZWN0b3IqIGZv
bnRTZWxlY3RvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSG9zdFdpbmRvdyogaG9z
dFdpbmRvdygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTY3JvbGxi
YXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYsIFNjcm9sbGJhck9yaWVudGF0aW9u
LCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFz
TGluZUlmRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCB2
YWx1ZUNoYW5nZWQodW5zaWduZWQgbGlzdEluZGV4LCBib29sIGZpcmVPbkNoYW5nZSA9IHRydWUp
IG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCBzZWxlY3Rpb25DbGVhcmVkKCkgb3ZlcnJpZGUgeyB9CisgICAg
U3RyaW5nIGl0ZW1UZXh0KHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
U3RyaW5nIGl0ZW1MYWJlbCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFN0cmluZyBpdGVtSWNvbih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFN0cmluZyBpdGVtVG9vbFRpcCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFN0cmluZyBpdGVtQWNjZXNzaWJpbGl0eVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGl0ZW1Jc0VuYWJsZWQodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdCBvdmVycmlkZTsKKyAgICBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUodW5zaWduZWQgbGlz
dEluZGV4KSBjb25zdCBvdmVycmlkZTsKKyAgICBQb3B1cE1lbnVTdHlsZSBtZW51U3R5bGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBpbnQgY2xpZW50SW5zZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgaW50IGNsaWVudEluc2V0UmlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRV
bml0IGNsaWVudFBhZGRpbmdMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBj
bGllbnRQYWRkaW5nUmlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgbGlzdFNpemUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBpbnQgc2VsZWN0ZWRJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgcG9wdXBEaWRIaWRlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpdGVtSXNTZXBhcmF0
b3IodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGl0ZW1Jc0xh
YmVsKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpdGVtSXNT
ZWxlY3RlZCh1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hv
dWxkUG9wT3ZlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFQT1BVUF9NRU5VX1BVTExTX0RP
V047IH0KKyAgICBib29sIHZhbHVlU2hvdWxkQ2hhbmdlT25Ib3RUcmFjaygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHNldFRleHRGcm9tSXRlbSh1bnNpZ25lZCBs
aXN0SW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgbGlzdEJveFNlbGVjdEl0ZW0oaW50IGxpc3RJ
bmRleCwgYm9vbCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywgYm9vbCBzaGlmdCwgYm9vbCBmaXJl
T25DaGFuZ2VOb3cgPSB0cnVlKSBvdmVycmlkZTsKKyAgICBib29sIG11bHRpcGxlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBIb3N0V2luZG93KiBob3N0V2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFz
c1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSYsIFNjcm9s
bGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSkgb3ZlcnJpZGU7CisKKyAgICBi
b29sIGhhc0xpbmVJZkVtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgLy8gRmxleGJveCBkZWZpbmVzIGJhc2VsaW5lcyBkaWZmZXJlbnRseSB0aGFuIHJlZ3VsYXIg
YmxvY2tzLgogICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgbWVudWxpc3RzIG5l
ZWQgdG8gZG8gdGhlIHJlZ3VsYXIgYmxvY2sgYmVoYXZpb3IuCi0gICAgdmlydHVhbCBpbnQgYmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgcG9zaXRpb24pIGNvbnN0
IG92ZXJyaWRlCisgICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5l
LCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRp
b25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIFJl
bmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJzdExpbmUsIGRpcmVjdGlv
biwgcG9zaXRpb24pOwogICAgIH0KLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5l
QmFzZWxpbmUoKTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
UmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQorICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5k
ZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlvbmFsPGludD4gaW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0K
IAogICAgIHZvaWQgZ2V0SXRlbUJhY2tncm91bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENv
bG9yJiwgYm9vbCYgaXRlbUhhc0N1c3RvbUJhY2tncm91bmRDb2xvcikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZXRlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKaW5kZXggZjhjZDBhYTBiMzYwMTYxYzIxZDVi
Mjc2NjIwY2MxM2NkNmJjOWM0Yi4uZDA0NjVkYTlkY2U1MDMzYTRmYzA1ZDdhNDdjMWI2NGNmNTYz
YWVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1ldGVyLmgKQEAgLTM2LDE1ICsz
NiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyTWV0ZXIoKTsKIAogICAgIEhUTUxN
ZXRlckVsZW1lbnQqIG1ldGVyRWxlbWVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRo
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxX
aWR0aCgpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2ljYWxFeHRlbnRDb21w
dXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1ldGVyIjsgfQotICAg
IHZpcnR1YWwgYm9vbCBpc01ldGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNZXRlciI7IH0KKyAgICBib29sIGlz
TWV0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCByZXF1aXJl
c0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkLmgKaW5kZXggNDI2
ZDEzNWQyMWM4NjgyNzU2Mjg2ZmU1NDAxOTI0MjY2ZWU5NzRjNi4uODk2ZDMzMTlkNzk5ZjFlNWFk
ZjhiMzI0NjI2MWNlNDgwNzcwMTJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQuaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICBSZW5kZXJNdWx0aUNvbHVtblNwYW5uZXJQbGFjZWhvbGRlciogZmluZENv
bHVtblNwYW5uZXJQbGFjZWhvbGRlcihSZW5kZXJCb3gqIHNwYW5uZXIpIGNvbnN0IHsgcmV0dXJu
IG1fc3Bhbm5lck1hcC5nZXQoc3Bhbm5lcik7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgLy8gRmluZCB0
aGUgc2V0IGluc2lkZSB3aGljaCB0aGUgc3BlY2lmaWVkIHJlbmRlcmVyIHdvdWxkIGJlIHJlbmRl
cmVkLgogICAgIFJlbmRlck11bHRpQ29sdW1uU2V0KiBmaW5kU2V0UmVuZGVyaW5nKFJlbmRlck9i
amVjdCopIGNvbnN0OwpAQCAtOTAsNyArOTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBj
b21wdXRlTGluZUdyaWRQYWdpbmF0aW9uT3JpZ2luKExheW91dFN0YXRlJikgY29uc3Q7CiAgICAg
Ci0gICAgdmlydHVhbCBSZW5kZXJSZWdpb24qIG1hcEZyb21GbG93VG9SZWdpb24oVHJhbnNmb3Jt
U3RhdGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJSZWdpb24qIG1hcEZyb21GbG93VG9S
ZWdpb24oVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICAvLyBUaGlz
IG1ldGhvZCB0YWtlcyBhIGxvZ2ljYWwgb2Zmc2V0IGFuZCByZXR1cm5zIGEgcGh5c2ljYWwgdHJh
bnNsYXRpb24gdGhhdCBjYW4gYmUgYXBwbGllZCB0byBtYXAKICAgICAvLyBhIHBoeXNpY2FsIHBv
aW50IChjb3JyZXNwb25kaW5nIHRvIHRoZSBsb2dpY2FsIG9mZnNldCkgaW50byB0aGUgcmVnaW9u
J3MgcGh5c2ljYWwgY29vcmRpbmF0ZSBzcGFjZS4KQEAgLTEwMiwzMSArMTAyLDMxIEBAIHB1Ymxp
YzoKICAgICAvLyBUaGlzIG1ldGhvZCBpcyB0aGUgaW52ZXJzZSBvZiB0aGUgcHJldmlvdXMgbWV0
aG9kIGFuZCBnb2VzIGZyb20gcmVnaW9uIHRvIGZsb3cuCiAgICAgTGF5b3V0U2l6ZSBwaHlzaWNh
bFRyYW5zbGF0aW9uRnJvbVJlZ2lvblRvRmxvdyhjb25zdCBSZW5kZXJNdWx0aUNvbHVtblNldCos
IGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBib29sIG5vZGVB
dFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRl
c3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RM
b2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxh
dGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZv
aWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3Jt
U3RhdGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJv
bUNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZz
ZXREZXBlbmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgbWFw
QWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRTaXplIG9mZnNldEZyb21Db250YWluZXIoUmVu
ZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBvaW50JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9p
bnQgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICAvLyBGSVhNRTogRXZlbnR1
YWxseSBhcyBjb2x1bW4gYW5kIHJlZ2lvbiBmbG93IHRocmVhZHMgc3RhcnQgbmVzdGluZywgdGhp
cyB3aWxsIGVuZCB1cCBjaGFuZ2luZy4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2hlY2tDb2x1
bW5CcmVha3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZENoZWNrQ29sdW1uQnJl
YWtzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTXVsdGlDb2x1bW5GbG93VGhyZWFkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBhZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIHJlc29sdmVNb3ZlZENoaWxkKFJlbmRlck9iamVjdCog
Y2hpbGQpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmbG93VGhyZWFkRGVzY2Vu
ZGFudEluc2VydGVkKFJlbmRlck9iamVjdCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBm
bG93VGhyZWFkUmVsYXRpdmVXaWxsQmVSZW1vdmVkKFJlbmRlck9iamVjdCopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBmbG93VGhyZWFkRGVzY2VuZGFudEJveExhaWRPdXQoUmVuZGVyQm94
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50
Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
aW5pdGlhbExvZ2ljYWxXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYWdlQnJlYWsoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0
VW5pdCBzcGFjZVNob3J0YWdlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTWlu
aW11bVBhZ2VIZWlnaHQoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5
b3V0VW5pdCBtaW5IZWlnaHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUmVnaW9uKiBy
ZWdpb25BdEJsb2NrT2Zmc2V0KGNvbnN0IFJlbmRlckJveCosIExheW91dFVuaXQsIGJvb2wgZXh0
ZW5kTGFzdFJlZ2lvbiA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiwgUmVu
ZGVyUmVnaW9uKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFkZEZvcmNlZFJlZ2lvbkJy
ZWFrKGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5b3V0VW5pdCwgUmVuZGVyQm94KiBicmVha0NoaWxk
LCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0KiBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlTG9naWNhbEhlaWdodEtub3duKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uRmxvd1RocmVhZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdp
b24qKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRl
OworICAgIFJlbmRlck9iamVjdCogcmVzb2x2ZU1vdmVkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGls
ZCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBmbG93VGhyZWFkRGVzY2VuZGFudEluc2VydGVk
KFJlbmRlck9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgZmxvd1RocmVhZFJlbGF0aXZlV2ls
bEJlUmVtb3ZlZChSZW5kZXJPYmplY3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZsb3dUaHJlYWRE
ZXNjZW5kYW50Qm94TGFpZE91dChSZW5kZXJCb3gqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBMYXlvdXRVbml0IGluaXRpYWxMb2dpY2FsV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFBhZ2VCcmVhayhjb25zdCBSZW5kZXJCbG9jayosIExheW91dFVuaXQgb2Zmc2V0LCBM
YXlvdXRVbml0IHNwYWNlU2hvcnRhZ2UpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTWluaW11
bVBhZ2VIZWlnaHQoY29uc3QgUmVuZGVyQmxvY2sqLCBMYXlvdXRVbml0IG9mZnNldCwgTGF5b3V0
VW5pdCBtaW5IZWlnaHQpIG92ZXJyaWRlOworICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uQXRCbG9j
a09mZnNldChjb25zdCBSZW5kZXJCb3gqLCBMYXlvdXRVbml0LCBib29sIGV4dGVuZExhc3RSZWdp
b24gPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRSZWdpb25SYW5nZUZvckJv
eChjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qLCBSZW5kZXJSZWdpb24qKSBvdmVycmlk
ZTsKKyAgICBib29sIGFkZEZvcmNlZFJlZ2lvbkJyZWFrKGNvbnN0IFJlbmRlckJsb2NrKiwgTGF5
b3V0VW5pdCwgUmVuZGVyQm94KiBicmVha0NoaWxkLCBib29sIGlzQmVmb3JlLCBMYXlvdXRVbml0
KiBvZmZzZXRCcmVha0FkanVzdG1lbnQgPSAwKSBvdmVycmlkZTsKKyAgICBib29sIGlzUGFnZUxv
Z2ljYWxIZWlnaHRLbm93bigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBoYW5kbGVTcGFu
bmVyUmVtb3ZhbChSZW5kZXJPYmplY3QqIHNwYW5uZXIpOwogICAgIFJlbmRlck9iamVjdCogcHJv
Y2Vzc1Bvc3NpYmxlU3Bhbm5lckRlc2NlbmRhbnQoUmVuZGVyT2JqZWN0KiYgc3VidHJlZVJvb3Qs
IFJlbmRlck9iamVjdCogZGVzY2VuZGFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJNdWx0aUNvbHVtblNldC5oCmluZGV4IDZlY2YxNDUwYzFjZTA4MmQzODk4MDA1ZjYz
MzUxYzBhMWJjMTVjNjIuLjE4MDIxNjdhMTAwZWQ0YmRiZDY5ZGRlMTVhNWJmMGUzMzcyMmZkNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNl
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNdWx0aUNvbHVtblNldC5o
CkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIC8vIGFmdGVyIGxheW91dCB0aGF0IHRo
ZSBjb2x1bW5zIHdlcmVuJ3QgdGFsbCBlbm91Z2guCiAgICAgdm9pZCByZWNvcmRTcGFjZVNob3J0
YWdlKExheW91dFVuaXQgc3BhY2VTaG9ydGFnZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
TG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgcHJlcGFyZUZvckxheW91dChib29sIGluaXRpYWwpOwogICAg
IC8vIEJlZ2luIGxheWluZyBvdXQgY29udGVudCBmb3IgdGhpcyBjb2x1bW4gc2V0LiBUaGlzIGhh
cHBlbnMgYXQgdGhlIGJlZ2lubmluZyBvZiBmbG93IHRocmVhZApAQCAtMTI1LDM4ICsxMjUsMzgg
QEAgcHVibGljOgogICAgIH07CiAgICAgTGF5b3V0UG9pbnQgdHJhbnNsYXRlUmVnaW9uUG9pbnRU
b0Zsb3dUaHJlYWQoY29uc3QgTGF5b3V0UG9pbnQgJiBsb2dpY2FsUG9pbnQsIENvbHVtbkhpdFRl
c3RUcmFuc2xhdGlvbk1vZGUgPSBEb05vdENsYW1wSGl0VGVzdFRyYW5zbGF0aW9uVG9Db2x1bW5z
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlSGl0
VGVzdFJlc3VsdChIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
ICAgICAKICAgICBMYXlvdXRSZWN0IGNvbHVtblJlY3RBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7
CiAgICAgdW5zaWduZWQgY29sdW1uQ291bnQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZvaWQg
YWRkT3ZlcmZsb3dGcm9tQ2hpbGRyZW4oKSBvdmVycmlkZTsKICAgICAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBib29sIGlzUmVuZGVyTXVsdGlDb2x1bW5TZXQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNSZW5kZXJNdWx0aUNvbHVtblNldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1
dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dp
Y2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5
b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcGFpbnRPYmplY3QoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb21w
dXRlZENvbHVtbldpZHRoOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVp
Z2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb21wdXRlZENvbHVtbkhlaWdodDsgfQor
ICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxXaWR0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fY29tcHV0ZWRDb2x1bW5XaWR0aDsgfQorICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2NvbXB1dGVkQ29sdW1uSGVpZ2h0OyB9CiAK
LSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFnZUxvZ2ljYWxUb3BGb3JPZmZzZXQoTGF5b3V0VW5p
dCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgcGFnZUxvZ2ljYWxUb3BG
b3JPZmZzZXQoTGF5b3V0VW5pdCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHRPZkFsbEZsb3dUaHJlYWRDb250ZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbG9naWNhbEhlaWdodEluRmxvd1RocmVhZCgpOyB9CisgICAgTGF5
b3V0VW5pdCBsb2dpY2FsSGVpZ2h0T2ZBbGxGbG93VGhyZWFkQ29udGVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGxvZ2ljYWxIZWlnaHRJbkZsb3dUaHJlYWQoKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIHJlcGFpbnRGbG93VGhyZWFkQ29udGVudChjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50
UmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXBhaW50Rmxvd1RocmVhZENvbnRlbnQoY29uc3Qg
TGF5b3V0UmVjdCYgcmVwYWludFJlY3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNv
bGxlY3RMYXllckZyYWdtZW50cyhMYXllckZyYWdtZW50cyYsIGNvbnN0IExheW91dFJlY3QmIGxh
eWVyQm91bmRpbmdCb3gsIGNvbnN0IExheW91dFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb2xsZWN0TGF5ZXJGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmLCBjb25zdCBMYXlv
dXRSZWN0JiBsYXllckJvdW5kaW5nQm94LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhy
ZWFkUG9ydGlvblJlY3QoTGF5b3V0UmVjdCYgcmVnaW9uQm91bmRzKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGFkanVzdFJlZ2lvbkJvdW5kc0Zyb21GbG93VGhyZWFkUG9ydGlvblJlY3QoTGF5
b3V0UmVjdCYgcmVnaW9uQm91bmRzKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgVmlz
aWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBS
ZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0
VW5pdCBjYWxjdWxhdGVNYXhDb2x1bW5IZWlnaHQoKSBjb25zdDsKICAgICBMYXlvdXRVbml0IGNv
bHVtbkdhcCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAppbmRleCA2MzgxZTBi
ZjYzYmYxMTU4OWRiNWZiMDBlZWM1MDI0N2EwZDZiYTgwLi43MWQ4NDk3NWNiMmRlOWQzYTY2ZGNh
OTU2ZWFmNzY5YzE0OTkyZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIuaApAQCAtNDUs
MTEgKzQ1LDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBSZW5kZXJNdWx0aUNvbHVtblNw
YW5uZXJQbGFjZWhvbGRlcihSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQqLCBSZW5kZXJCb3gq
IHNwYW5uZXIsIFJlZjxSZW5kZXJTdHlsZT4mJik7Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVy
TXVsdGlDb2x1bW5TcGFubmVyUGxhY2Vob2xkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc1JlbmRlck11bHRpQ29sdW1uU3Bhbm5lclBsYWNlaG9sZGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhh
dmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZSB7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICBSZW5kZXJCb3gqIG1fc3Bhbm5lcjsKICAgICBSZW5kZXJNdWx0aUNvbHVtbkZsb3dUaHJlYWQq
IG1fZmxvd1RocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd0ZyYWdtZW50LmgKaW5kZXggOWViNTYyYjE1YjdkYTlmZmUzNWYzMzM2MjBmYjk1OTAw
ZDM1Yzk2MC4uNGY5YmZmYjFmYTc2NGM0NDAwOGZmYTMzNTI0OTczZTBkNDUxYjQxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmgK
QEAgLTU0LDExICs1NCwxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFJlbmRlclN0eWxl
PiBjcmVhdGVTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpOwogCi0gICAgdmly
dHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5
bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZ2V0UmFuZ2VzKFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5
b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVu
aXQgbWF4UGFnZUxvZ2ljYWxIZWlnaHQoKSBjb25zdDsKICAgICAKICAgICBMYXlvdXRSZWN0IGZs
b3dUaHJlYWRQb3J0aW9uUmVjdEZvckNsaXBwaW5nKGJvb2wgaXNGaXJzdFJlZ2lvbkluUmFuZ2Us
IGJvb2wgaXNMYXN0UmVnaW9uSW5SYW5nZSkgY29uc3Q7CkBAIC02Niw5ICs2Niw5IEBAIHB1Ymxp
YzoKICAgICBSZW5kZXJCbG9ja0Zsb3cmIGZyYWdtZW50Q29udGFpbmVyKCkgY29uc3Q7CiAgICAg
UmVuZGVyTGF5ZXImIGZyYWdtZW50Q29udGFpbmVyTGF5ZXIoKSBjb25zdDsKICAgICAKLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2xpcEZsb3dUaHJlYWRDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBzaG91bGRDbGlwRmxvd1RocmVhZENvbnRlbnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRhaW5lcihSZW5kZXJF
bGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBlbmRzT25Qb2ludCA9
IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFNpemUgb2Zmc2V0RnJvbUNvbnRh
aW5lcihSZW5kZXJFbGVtZW50JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sKiBvZmZzZXREZXBl
bmRzT25Qb2ludCA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1BzZXVk
b0VsZW1lbnRSZWdpb24oKSBjb25zdCB7IHJldHVybiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNQ
c2V1ZG9FbGVtZW50KCk7IH0KIApAQCAtODQsMTEgKzg0LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlZ2lvbk9iamVjdHNSZWdpb25TdHlsZSgpOwogICAgIHZvaWQgcmVzdG9yZVJlZ2lvbk9i
amVjdHNPcmlnaW5hbFN0eWxlKCk7CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHZpc3Vh
bE92ZXJmbG93UmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFJlY3QgdmlzdWFsT3Zl
cmZsb3dSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBSZW5kZXJOYW1lZEZsb3dUaHJlYWQq
IG5hbWVkRmxvd1RocmVhZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBib29sIGhhc0F1dG9Mb2dp
Y2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNBdXRvTG9naWNhbEhlaWdo
dDsgfQorICAgIGJvb2wgaGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2hhc0F1dG9Mb2dpY2FsSGVpZ2h0OyB9CiAKICAgICBMYXlvdXRVbml0IGNvbXB1dGVk
QXV0b0hlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRBdXRvSGVpZ2h0OyB9CiAKQEAg
LTEwOCwyMCArMTA4LDIwIEBAIHB1YmxpYzoKIAogICAgIFJlZ2lvbk92ZXJzZXRTdGF0ZSByZWdp
b25PdmVyc2V0U3RhdGUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSZWdpb24o
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoUmVnaW9uKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhdHRhY2hSZWdpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldGFjaFJlZ2lvbigp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgdXBkYXRlUmVnaW9uRmxhZ3MoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRz
Rm9yQm94SW5SZWdpb24oVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiwgY29uc3QgUmVuZGVyQm94
KiwgZmxvYXQsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIGFic29sdXRlUXVhZHNGb3JCb3hJ
blJlZ2lvbihWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqLCBjb25zdCBSZW5kZXJCb3gqLCBmbG9h
dCwgZmxvYXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVnaW9uSWZOZWVkZWQo
KTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJOYW1lZEZsb3dGcmFnbWVu
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTmFtZWRGbG93
RnJhZ21lbnQiOyB9CisgICAgYm9vbCBpc1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQiOyB9CiAKICAg
ICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlU3R5bGVJblJlZ2lvbihSZW5kZXJFbGVt
ZW50JiwgUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBjb25zdDsKICAgICB2b2lkIGNvbXB1dGVD
aGlsZHJlblN0eWxlSW5SZWdpb24oUmVuZGVyRWxlbWVudCYpOwpAQCAtMTQwLDcgKzE0MCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVPdmVyc2V0U3RhdGUoKTsKICAgICB2b2lkIHNldFJl
Z2lvbk92ZXJzZXRTdGF0ZShSZWdpb25PdmVyc2V0U3RhdGUpOwogCi0gICAgdmlydHVhbCB2b2lk
IGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCA9IDApIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgb3ZlcnJpZGU7CiAK
ICAgICBzdHJ1Y3QgT2JqZWN0UmVnaW9uU3R5bGVJbmZvIHsKICAgICAgICAgLy8gVXNlZCB0byBz
dG9yZSB0aGUgb3JpZ2luYWwgc3R5bGUgb2YgdGhlIG9iamVjdCBpbiByZWdpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuaAppbmRleCA0MWFh
YWY0YzI3MGVlYWM4NGU5OWE3Njc1MWJiNzA0NGIwOGZkMTM4Li5jNTk5ZGZlODU3ZDQ0NzM2MjJi
YTAyNzdhNGU5YWQ0NjE0NmQ1M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5oCkBAIC02NiwxMCArNjYsMTAgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwdXNoRGVwZW5kZW5jaWVzKFJlbmRlck5hbWVkRmxvd1RocmVhZExpc3QmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUmVnaW9uRnJvbVRocmVhZChSZW5kZXJSZWdpb24q
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lvbiopIG92
ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlUmVnaW9uRnJvbVRocmVhZChSZW5kZXJSZWdpb24qKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpb25DaGFuZ2VkV3JpdGluZ01vZGUoUmVu
ZGVyUmVnaW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpb25DaGFuZ2VkV3JpdGluZ01vZGUo
UmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRSZWN0IGRlY29yYXRpb25zQ2xp
cFJlY3RGb3JCb3hJbk5hbWVkRmxvd0ZyYWdtZW50KGNvbnN0IFJlbmRlckJveCYsIFJlbmRlck5h
bWVkRmxvd0ZyYWdtZW50JikgY29uc3Q7CiAKQEAgLTgzLDkgKzgzLDkgQEAgcHVibGljOgogICAg
IGJvb2wgaXNNYXJrZWRGb3JEZXN0cnVjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgZ2V0UmFuZ2Vz
KFZlY3RvcjxSZWZQdHI8UmFuZ2U+PiYsIGNvbnN0IFJlbmRlck5hbWVkRmxvd0ZyYWdtZW50Kikg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlCcmVha0FmdGVyQ29udGVudChMYXlvdXRV
bml0KSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5QnJlYWtBZnRlckNvbnRlbnQoTGF5b3V0VW5p
dCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29sbGVjdHNHcmFwaGljc0xheWVyc1Vu
ZGVyUmVnaW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29sbGVjdHNHcmFwaGljc0xh
eWVyc1VuZGVyUmVnaW9ucygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQ2hlY2sgaWYgdGhl
IGNvbnRlbnQgaXMgZmxvd24gaW50byBhdCBsZWFzdCBhIHJlZ2lvbiB3aXRoIHJlZ2lvbiBzdHls
aW5nIHJ1bGVzLgogICAgIGJvb2wgaGFzUmVnaW9uc1dpdGhTdHlsaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNSZWdpb25zV2l0aFN0eWxpbmc7IH0KQEAgLTkzLDI1ICs5MywyNSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNsZWFyUmVuZGVyT2JqZWN0Q3VzdG9tU3R5bGUoY29uc3QgUmVuZGVyT2Jq
ZWN0Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRmxvd0NoaWxkSW5mbyhSZW5kZXJPYmpl
Y3QqKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUZsb3dDaGlsZEluZm8oUmVuZGVyT2JqZWN0
Kikgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRVbml0IGZsb3dDb250ZW50Qm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gbV9mbG93Q29udGVudEJvdHRvbTsgfQogICAgIHZvaWQgZGlzcGF0Y2hOYW1lZEZs
b3dFdmVudHMoKTsKIAogICAgIHZvaWQgc2V0RGlzcGF0Y2hSZWdpb25PdmVyc2V0Q2hhbmdlRXZl
bnQoYm9vbCB2YWx1ZSkgeyBtX2Rpc3BhdGNoUmVnaW9uT3ZlcnNldENoYW5nZUV2ZW50ID0gdmFs
dWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhYnNvbHV0ZVF1YWRzRm9yQm94KFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCosIGNvbnN0IFJlbmRlckJveCosIGZsb2F0LCBmbG9hdCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBhYnNvbHV0ZVF1YWRzRm9yQm94KFZlY3RvcjxGbG9hdFF1YWQ+Jiwg
Ym9vbCosIGNvbnN0IFJlbmRlckJveCosIGZsb2F0LCBmbG9hdCkgY29uc3Qgb3ZlcnJpZGU7CiAK
IHByb3RlY3RlZDoKICAgICB2b2lkIHNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwogICAgIHZvaWQg
cmVzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNS
ZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVP
dmVyZmxvdyhMYXlvdXRVbml0LCBib29sID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlbmRlck5hbWVkRmxvd1RocmVhZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb21wdXRlT3ZlcmZsb3coTGF5b3V0VW5pdCwgYm9vbCA9IGZhbHNlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaXNwYXRjaFJlZ2lvbk92ZXJz
ZXRDaGFuZ2VFdmVudElmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAppbmRleCBhZDI1ODM2MTljOThhMDlhMTUzOTczOTMzMzlhMzg1NGI3ZDRjMjg4Li43
M2MzOGJiYWU5MjFlNmMyYzA3MjA5NTcwMzhhNjVmZWM3NmIyYWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC04MTQsNyArODE0LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgaW50IHByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3VycmVu
dCkgY29uc3Q7CiAgICAgdmlydHVhbCBpbnQgbmV4dE9mZnNldChpbnQgY3VycmVudCkgY29uc3Q7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50
UmVjdCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJ
bWFnZSosIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0
cikgeyB9CiAKICAgICBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYgc2VsZWN0aW9uUm9vdCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclByb2dyZXNzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuaAppbmRleCAzMmM1YTYz
YWJjNmI3NjgwNTM2ODgzMTYzYmY5MzgyN2Y1MGU2NjY2Li5hNjRhYzhkZTg5OTA4ODYxNzg2ODMy
NTJmZDRiOGNhMTU1YTI0N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyUHJvZ3Jlc3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJv
Z3Jlc3MuaApAQCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKICAgICBkb3VibGUgYW5pbWF0aW9u
U3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGFydFRpbWU7IH0KIAogICAg
IGJvb2wgaXNEZXRlcm1pbmF0ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9t
RWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlk
ZTsKIAogICAgIEhUTUxQcm9ncmVzc0VsZW1lbnQqIHByb2dyZXNzRWxlbWVudCgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQ
cm9ncmVzcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgcmVxdWlyZXNGb3JjZWRTdHlsZVJlY2FsY1Byb3BhZ2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4
dGVudENvbXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJQcm9ncmVzcyI7IH0KKyAg
ICBib29sIGlzUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFuaW1hdGlvblRpbWVy
RmlyZWQoKTsKICAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvblN0YXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUXVvdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJRdW90ZS5oCmluZGV4IGIxZDJmODQ5ZmJhYmVlODU3YzNmMzg4NTA2M2Y0
NDFkZDYzMDVhODkuLjFhMzZjMjg0M2UzYzBmMzcyZWZlYzdiMjc0MjI1ZjdiOTFlMWNiZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJRdW90ZS5oCkBAIC0zNywxMCArMzcsMTAgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRldGFjaFF1b3RlKCk7CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
UXVvdGUiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFt
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJRdW90ZSI7IH0KKyAgICBib29sIGlz
UXVvdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKIAogICAgIFN0cmluZyBj
b21wdXRlVGV4dCgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlVGV4dCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5oCmluZGV4IDRhNTBjYzc2YmQxODM1N2Y2MDA5NzIyYTY2
Mzg3NDk1NTBhYjYxYzQuLjNlMjZkOTg0ZjkzMDk2NzlkOGVmZTU1MjA5NTliMDQwNGJjMWM0ODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmgKQEAgLTQ2LDcgKzQ2LDcg
QEAgY2xhc3MgUmVuZGVyTmFtZWRGbG93VGhyZWFkOwogCiBjbGFzcyBSZW5kZXJSZWdpb24gOiBw
dWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92
ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRGbG93VGhyZWFk
UG9ydGlvblJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkgeyBtX2Zsb3dUaHJlYWRQb3J0aW9u
UmVjdCA9IHJlY3Q7IH0KICAgICBMYXlvdXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmxvd1RocmVhZFBvcnRpb25SZWN0OyB9CkBAIC0xMTgsOSArMTE4LDkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVnaW9uT2JqZWN0c1JlZ2lvblN0eWxlKCk7CiAgICAg
dm9pZCByZXN0b3JlUmVnaW9uT2JqZWN0c09yaWdpbmFsU3R5bGUoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlR2VuZXJhdGVkQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25G
b3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRl
OworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICBib29sIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChj
b25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBib29sIGhhc0F1dG9Mb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIApAQCAtMTMyLDggKzEzMiw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgZW5zdXJlT3Zl
cmZsb3dGb3JCb3goY29uc3QgUmVuZGVyQm94KiwgUmVmUHRyPFJlbmRlck92ZXJmbG93PiYsIGJv
b2wpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhz
KExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhz
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlv
dXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBlbnVtIE92ZXJmbG93VHlwZSB7CiAgICAgICAgIExheW91dE92
ZXJmbG93ID0gMCwKQEAgLTE0NiwxMSArMTQ2LDExIEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNv
bXB1dGVPdmVyZmxvd0Zyb21GbG93VGhyZWFkKCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBi
b29sIGlzUmVuZGVyUmVnaW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJSZWdpb24iOyB9CisgICAgYm9vbCBpc1JlbmRlclJlZ2lvbigpIGNvbnN0
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJO
YW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlZ2lvbiI7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zZXJ0ZWRJbnRv
VHJlZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbEZsb3dUaHJlYWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvblNldC5oCmluZGV4IGYxNjY1NjAxMTJlNjNhZTNi
MzhkZTQ2YjAxNDY2ZWE5NmVlMTNkNGUuLjk1NDQ5ZGQ2MGRjZjliNWQ4MTdiMjM1YzJjNzZiNzdh
M2Q5NmExZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdp
b25TZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uU2V0LmgK
QEAgLTUzLDExICs1MywxMSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyUmVnaW9uU2V0KERvY3Vt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmLCBSZW5kZXJGbG93VGhyZWFkJik7CiAKIHByaXZhdGU6
Ci0gICAgdmlydHVhbCB2b2lkIGluc3RhbGxGbG93VGhyZWFkKCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBpbnN0YWxsRmxvd1RocmVhZCgpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVh
bCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgPSAwOworICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSA9IDA7CiAgICAgCi0gICAgdmlydHVh
bCBib29sIGlzUmVuZGVyUmVnaW9uU2V0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNSZW5kZXJSZWdpb25TZXQoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCmluZGV4IDlmN2RmYzU3MTE3MWEyNWEz
ZGRiZmZlOGI0NmJkNjU5NGY1M2JiODguLjk0MWZhMjFiNzJjMzJiM2QyZDM2OGI1N2ZhM2Q2NWNk
YjE4MmM2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5oCkBA
IC0zMCw4ICszMCw4IEBAIGNsYXNzIFJlbmRlclJlcGxhY2VkIDogcHVibGljIFJlbmRlckJveCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGFjZWQoKTsKIAotICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZl
cnJlZCA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0
VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
TGF5b3V0VW5pdCBjb21wdXRlUmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZl
cnJlZCA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgY29t
cHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0
UmVjdCByZXBsYWNlZENvbnRlbnRSZWN0KGNvbnN0IExheW91dFNpemUmIGludHJpbnNpY1NpemUp
IGNvbnN0OwogCkBAIC00Myw0NyArNDMsNDcgQEAgcHJvdGVjdGVkOgogICAgIFJlbmRlclJlcGxh
Y2VkKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IExheW91dFNpemUmIGludHJp
bnNpY1NpemUpOwogICAgIFJlbmRlclJlcGxhY2VkKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBMYXlvdXRTaXplJiBpbnRyaW5zaWNTaXplKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiBtX2ludHJpbnNpY1NpemU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJp
bnNpY1JhdGlvSW5mb3JtYXRpb24oRmxvYXRTaXplJiBpbnRyaW5zaWNTaXplLCBkb3VibGUmIGlu
dHJpbnNpY1JhdGlvKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRTaXplIGludHJpbnNpY1Np
emUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2ludHJpbnNpY1NpemU7IH0KKyAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmlu
c2ljU2l6ZSwgZG91YmxlJiBpbnRyaW5zaWNSYXRpbykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWlu
TG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRl
IGZpbmFsOworICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNlZEhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFVuaXQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNT
ZWxlY3RlZCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0SW50cmluc2ljU2l6ZShjb25zdCBMYXlv
dXRTaXplJiBpbnRyaW5zaWNTaXplKSB7IG1faW50cmluc2ljU2l6ZSA9IGludHJpbnNpY1NpemU7
IH0KICAgICB2aXJ0dWFsIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaGFzUmVsYXRpdmVJbnRyaW5zaWNMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpIG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKTsKICAgICBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdChib29s
IGNoZWNrV2hldGhlclNlbGVjdGVkID0gdHJ1ZSkgY29uc3Q7IC8vIFRoaXMgaXMgaW4gbG9jYWwg
Y29vcmRpbmF0ZXMsIGJ1dCBpdCdzIGEgcGh5c2ljYWwgcmVjdCAoc28gdGhlIHRvcCBsZWZ0IGNv
cm5lciBpcyBwaHlzaWNhbCB0b3AgbGVmdCkuCiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVz
dHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFJlbmRlckJveCogZW1iZWRkZWRDb250ZW50Qm94KCkg
Y29uc3QgeyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsYWNlZCI7IH0KKyAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJlcGxhY2Vk
IjsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJy
ZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JikgeyB9CiAKLSAgICB2aXJ0
dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
TGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQm
LCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZSBmaW5hbDsKKyAgICBWaXNpYmxlUG9zaXRp
b24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lv
biopIG92ZXJyaWRlIGZpbmFsOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlv
bkxlYWYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5CZVNl
bGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
IHRydWUpIG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZvaWQg
Y29tcHV0ZUFzcGVjdFJhdGlvSW5mb3JtYXRpb25Gb3JSZW5kZXJCb3goUmVuZGVyQm94KiwgRmxv
YXRTaXplJiBjb25zdHJhaW5lZFNpemUsIGRvdWJsZSYgaW50cmluc2ljUmF0aW8pIGNvbnN0Owog
CiAgICAgdmlydHVhbCBib29sIHNob3VsZERyYXdTZWxlY3Rpb25UaW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGljYS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxpY2EuaAppbmRleCA4NGEwYjQyMTA4YTQ3NWYz
YzAzOTU2OTNlMzAxMTQ4NDY1Y2VhMWIzLi41ZTNlZTc3YjdkZWQzN2JmMzk3ZDU4MTQ4NmI2OGU2
MDdjZTM1OGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGljYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsaWNhLmgKQEAg
LTM4LDE4ICszOCwxOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUmVwbGljYShEb2N1bWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgdmlydHVhbCB+UmVuZGVyUmVwbGljYSgpOwogCi0gICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclJlcGxpY2EiOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJSZXBsaWNhIjsgfQogCi0gICAgdmlydHVhbCBib29sIHJl
cXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBy
ZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlcGxpY2Eo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGNhbkhh
dmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1JlcGxpY2EoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBj
YW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIAogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSdWJ5LmgKaW5kZXggNDU0ZDI2YzE2YTYzYzcxZjkzOGNk
MDM2MTZhZTFmODA4MmQ1NjkyYS4uNzlhZmZkYWJjZGQ2NGVhZGI3Yzk2NThkNzc4ZDY5ZGNkYjIx
MWJmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieS5oCkBAIC01NiwxNiArNTYs
MTYgQEAgcHVibGljOgogICAgIFJlbmRlclJ1YnlBc0lubGluZShFbGVtZW50JiwgUmVmPFJlbmRl
clN0eWxlPiYmKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJSdWJ5QXNJbmxpbmUoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJl
Zm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJl
bmRlck9iamVjdCYgY2hpbGQpIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOworICAg
IHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkgb3ZlcnJpZGU7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlJbmxpbmUoKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnkgKGlubGluZSki
OyB9Ci0gICAgdmlydHVhbCBib29sIGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNSdWJ5SW5saW5lKCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieSAoaW5saW5lKSI7IH0KKyAgICBi
b29sIGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogfTsKIAogLy8gPHJ1Ynk+IHdoZW4gdXNlZCBhcyAnZGlzcGxheTpibG9jaycgb3IgJ2Rp
c3BsYXk6aW5saW5lLWJsb2NrJwpAQCAtNzYsMTcgKzc2LDE3IEBAIHB1YmxpYzoKIAogICAgIEVs
ZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9y
Tm9uQW5vbnltb3VzKCkpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmIGNoaWxkKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVm
b3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVj
dCYgY2hpbGQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3Qg
UmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGJvb2wgaXNSdWJ5QmxvY2soKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclJ1YnkgKGJsb2NrKSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlc0Fu
b255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHJlbW92ZUxlZnRvdmVyQW5vbnltb3VzQmxvY2soUmVuZGVyQmxvY2sqKSBvdmVy
cmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgYm9vbCBpc1J1YnlCbG9jaygpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnkgKGJsb2NrKSI7IH0K
KyAgICBib29sIGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZvaWQgcmVtb3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJC
bG9jayopIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlCYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaAppbmRleCA1OTc0MjZhYTA1NGZhMTY2
YzZjZmExMmQzN2JiMDI3ODBiYmExMWVjLi5jY2JlYjJjMTdmZGVlOTRiOTUyZTkyMTYzN2ZhZjI5
OGM0ZDI0NTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVi
eUJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieUJhc2UuaApA
QCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUnVieUJhc2UoRG9jdW1lbnQmLCBS
ZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1YWwgflJlbmRlclJ1YnlCYXNlKCk7CiAgICAg
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclJ1YnlCYXNlIChhbm9ueW1vdXMpIjsgfQorICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieUJhc2UgKGFub255
bW91cykiOyB9CiAgICAgCiAgICAgUmVuZGVyUnVieVJ1biogcnVieVJ1bigpIGNvbnN0OwogCkBA
IC01NywxMyArNTcsMTMgQEAgcHVibGljOgogICAgICAgICBtX2lzQWZ0ZXJFeHBhbnNpb24gPSB0
cnVlOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgY2FjaGVQcmlvckNoYXJhY3RlcnNJ
Zk5lZWRlZChjb25zdCBMYXp5TGluZUJyZWFrSXRlcmF0b3ImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNhY2hlUHJpb3JDaGFyYWN0ZXJzSWZOZWVkZWQoY29uc3QgTGF6eUxpbmVCcmVha0l0ZXJhdG9y
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUnVieUJhc2UoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRB
bGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBFVGV4dEFsaWduIHRleHRBbGlnbm1lbnRGb3JMaW5lKGJvb2wg
ZW5kc1dpdGhTb2Z0QnJlYWspIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RJbmxpbmVEaXJlY3Rpb25MaW5lQm91bmRzKGludCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50
LCBmbG9hdCYgbG9naWNhbExlZnQsIGZsb2F0JiBsb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNSdWJ5QmFzZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRl
clN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgRVRleHRBbGlnbiB0ZXh0QWxpZ25tZW50Rm9y
TGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFk
anVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBtZXJnZUNoaWxkcmVuV2l0aEJhc2UoUmVuZGVyUnVieUJhc2UqIHRvQmxv
Y2spOwogCiAgICAgdm9pZCBtb3ZlQ2hpbGRyZW4oUmVuZGVyUnVieUJhc2UqIHRvQmFzZSwgUmVu
ZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSdWJ5UnVuLmgKaW5kZXggNjVjZjIyNGE1ZDYzYzZjODhiZmM1NWFhMzg4ZTE2ZjIzMzBiY2Q3
MC4uNWU1OTA5NDllMWE3MDEyNzk3Mzg0Mjc2YmM4NjZlNGZmNjBkMWNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlSdW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVJ1bi5oCkBAIC00OCwyMCArNDgsMjAgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBoYXNSdWJ5VGV4dCgpIGNvbnN0OwogICAgIGJvb2wgaGFzUnVieUJhc2Uo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIFJlbmRlclJ1YnlUZXh0KiBydWJ5
VGV4dCgpIGNvbnN0OwogICAgIFJlbmRlclJ1YnlCYXNlKiBydWJ5QmFzZSgpIGNvbnN0OwogICAg
IFJlbmRlclJ1YnlCYXNlKiBydWJ5QmFzZVNhZmUoKTsgLy8gY3JlYXRlcyB0aGUgYmFzZSBpZiBp
dCBkb2Vzbid0IGFscmVhZHkgZXhpc3QKIAotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBsYXlv
dXRTcGVjaWFsRXhjbHVkZWRDaGlsZChib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICBSZW5kZXJPYmplY3QqIGxh
eW91dFNwZWNpYWxFeGNsdWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7
CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxk
QWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBS
ZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNDaGlsZEFs
bG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVj
dCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNoaWxkKFJlbmRl
ck9iamVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5l
QmxvY2soKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0
ZXIoKSBvdmVycmlkZTsKKyAgICBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGdldE92ZXJoYW5nKGJvb2wgZmlyc3RMaW5lLCBSZW5kZXJPYmplY3QqIHN0YXJ0UmVuZGVy
ZXIsIFJlbmRlck9iamVjdCogZW5kUmVuZGVyZXIsIGZsb2F0JiBzdGFydE92ZXJoYW5nLCBmbG9h
dCYgZW5kT3ZlcmhhbmcpIGNvbnN0OwogCkBAIC03OSwxMCArNzksMTAgQEAgcHJvdGVjdGVkOgog
ICAgIFJlbmRlclJ1YnlCYXNlKiBjcmVhdGVSdWJ5QmFzZSgpIGNvbnN0OwogCiBwcml2YXRlOgot
ICAgIHZpcnR1YWwgYm9vbCBpc1J1YnlSdW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIlJlbmRlclJ1YnlSdW4gKGFub255bW91cykiOyB9Ci0gICAgdmlydHVhbCBib29s
IGNyZWF0ZXNBbm9ueW1vdXNXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJs
b2NrKikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc1J1YnlSdW4oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJSdWJ5UnVuIChhbm9ueW1vdXMpIjsgfQorICAgIGJvb2wgY3Jl
YXRlc0Fub255bW91c1dyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdm9pZCByZW1vdmVMZWZ0b3ZlckFub255bW91c0Jsb2NrKFJlbmRlckJsb2NrKikgb3ZlcnJp
ZGUgeyB9CiAKIHByaXZhdGU6CiAgICAgVUNoYXIgbV9sYXN0Q2hhcmFjdGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJ1YnlUZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaAppbmRleCA1NjI5YWM1NDQxYjI1ZDM3OWRh
ZDAzZDM2MzQzNjQ2OWFkYTUzMDdmLi42YjdkOGQ4YmQxOTU3Y2NlNzI1OTBlMWU2YzBlMzg5YmY0
Yjk2ODRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUnVieVRleHQuaApAQCAt
NDIsMjAgKzQyLDIwIEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBkb3duY2FzdDxFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ2hpbGRBbGxvd2VkKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgUmVuZGVyUnVieVJ1biogcnVieVJ1bigpIGNvbnN0OwogICAgIAogICAgIGJvb2wg
Y2FuQnJlYWtCZWZvcmUoY29uc3QgTGF6eUxpbmVCcmVha0l0ZXJhdG9yJikgY29uc3Q7CiAgICAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gIlJlbmRlclJ1YnlUZXh0IjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1J1
YnlUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyUnVieVRleHQiOyB9
CisgICAgYm9vbCBpc1J1YnlUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEVUZXh0QWxp
Z24gdGV4dEFsaWdubWVudEZvckxpbmUoYm9vbCBlbmRzV2l0aFNvZnRCcmVhaykgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMo
aW50IGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQm
IGxvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRVRleHRBbGlnbiB0ZXh0QWxpZ25t
ZW50Rm9yTGluZShib29sIGVuZHNXaXRoU29mdEJyZWFrKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFkanVzdElubGluZURpcmVjdGlvbkxpbmVCb3VuZHMoaW50IGV4cGFuc2lvbk9wcG9ydHVu
aXR5Q291bnQsIGZsb2F0JiBsb2dpY2FsTGVmdCwgZmxvYXQmIGxvZ2ljYWxXaWR0aCkgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXggZjI3ZWMwM2JiYjA5MDc4MGQ0MmUzNDdi
NmMyM2FhNGQ2ZDhjMDRjZS4uNDIzNGU4ODU1Yjc1YzczZDg1NzgwMDJhZjNhODNiODc2MDk4NjE0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbWluaW11bVRodW1iTGVuZ3RoKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBmbG9hdCBvcGFjaXR5KCk7CiAKQEAgLTY0LDE1ICs2
NCwxNSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJlbmRlclNjcm9sbGJhcihTY3JvbGxhYmxl
QXJlYSYsIFNjcm9sbGJhck9yaWVudGF0aW9uLCBFbGVtZW50KiwgRnJhbWUqKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGFyZW50KFNjcm9s
bFZpZXcqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRIb3Zl
cmVkUGFydChTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFByZXNzZWRQYXJ0
KFNjcm9sbGJhclBhcnQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hhbmdl
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHVwZGF0ZVNjcm9sbGJhclBhcnRzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4IDg2NTk5MTQyYTlmY2JhZTJjNThlODViMGQw
ZGIxODI3ZGFkOWFmYzUuLjM4Yzg3ZWY2ZDdmMmUwNWJkN2U2ODA2NGZlNTg3YTVjZWM4ZGRkYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaApA
QCAtMzksMjkgKzM5LDI5IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3Jv
bGxiYXJQYXJ0KCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2Nyb2xsYmFyUGFydCI7IH0KKyAgICBjb25zdCBj
aGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNjcm9sbGJh
clBhcnQiOyB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKICAgICAKICAgICB2b2lkIHBh
aW50SW50b1JlY3QoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBM
YXlvdXRSZWN0Jik7CiAKICAgICAvLyBTY3JvbGxiYXIgcGFydHMgbmVlZHMgdG8gYmUgcmVuZGVy
ZWQgYXQgZGV2aWNlIHBpeGVsIGJvdW5kYXJpZXMuCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1h
cmdpblRvcCgpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFyZ2lu
Qm94LnRvcCgpKSk7IHJldHVybiBtX21hcmdpbkJveC50b3AoKTsgfQotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJW
YWx1ZShtX21hcmdpbkJveC5ib3R0b20oKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3guYm90dG9tKCk7
IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luTGVmdCgpIGNvbnN0IG92ZXJyaWRlIHsg
QVNTRVJUKGlzSW50ZWdlclZhbHVlKG1fbWFyZ2luQm94LmxlZnQoKSkpOyByZXR1cm4gbV9tYXJn
aW5Cb3gubGVmdCgpOyB9Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGUgeyBBU1NFUlQoaXNJbnRlZ2VyVmFsdWUobV9tYXJnaW5Cb3gucmlnaHQoKSkp
OyByZXR1cm4gbV9tYXJnaW5Cb3gucmlnaHQoKTsgfQorICAgIExheW91dFVuaXQgbWFyZ2luVG9w
KCkgY29uc3Qgb3ZlcnJpZGUgeyBBU1NFUlQoaXNJbnRlZ2VyVmFsdWUobV9tYXJnaW5Cb3gudG9w
KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LnRvcCgpOyB9CisgICAgTGF5b3V0VW5pdCBtYXJnaW5C
b3R0b20oKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdpbkJv
eC5ib3R0b20oKSkpOyByZXR1cm4gbV9tYXJnaW5Cb3guYm90dG9tKCk7IH0KKyAgICBMYXlvdXRV
bml0IG1hcmdpbkxlZnQoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZSht
X21hcmdpbkJveC5sZWZ0KCkpKTsgcmV0dXJuIG1fbWFyZ2luQm94LmxlZnQoKTsgfQorICAgIExh
eW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVChpc0ludGVnZXJW
YWx1ZShtX21hcmdpbkJveC5yaWdodCgpKSk7IHJldHVybiBtX21hcmdpbkJveC5yaWdodCgpOyB9
CiAKICAgICBSZW5kZXJCb3gqIHJlbmRlcmVyT3duaW5nU2Nyb2xsYmFyKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIp
IG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgaW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJTY3JvbGxiYXJQYXJ0KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVy
cmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOworICAgIGJvb2wgaXNSZW5kZXJTY3JvbGxiYXJQ
YXJ0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0SG9yaXpv
bnRhbFBhcnQoKTsKICAgICB2b2lkIGxheW91dFZlcnRpY2FsUGFydCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCA4MTFhMWRkY2Ez
NmQwOGIxZWE1MmY4ZDljYTJhMTQyZTVkYzM5NzhiLi44YjQ0MzUzNjcxMjc3NGM4ZDQ0NTFmMmMx
MmU5ZjZiOThjYThlNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWUuaApAQCAtMzgsNDcgKzM4LDQ3IEBAIGNsYXNzIFJlbmRlclNjcm9sbGJh
clRoZW1lIGZpbmFsIDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXJUaGVtZSgpIHsgfQogICAgIAotICAgIHZpcnR1
YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6
ZSkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuc2Nyb2xsYmFyVGhp
Y2tuZXNzKGNvbnRyb2xTaXplKTsgfQorICAgIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLnNjcm9sbGJhclRoaWNrbmVzcyhjb250cm9sU2l6ZSk7IH0KIAotICAgIHZp
cnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuYnV0dG9uc1BsYWNlbWVu
dCgpOyB9CisgICAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuYnV0dG9uc1Bs
YWNlbWVudCgpOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzdXBwb3J0c0NvbnRyb2xU
aW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
SW50UmVjdCYgY29ybmVyUmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvblByZXNzQWN0aW9uIGhh
bmRsZU1vdXNlUHJlc3NFdmVudChTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50KHNjcm9s
bGJhciwgZXZlbnQsIHByZXNzZWRQYXJ0KTsgfQorICAgIFNjcm9sbGJhckJ1dHRvblByZXNzQWN0
aW9uIGhhbmRsZU1vdXNlUHJlc3NFdmVudChTY3JvbGxiYXImIHNjcm9sbGJhciwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCkgb3ZlcnJp
ZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkuaGFuZGxlTW91c2VQcmVzc0V2ZW50
KHNjcm9sbGJhciwgZXZlbnQsIHByZXNzZWRQYXJ0KTsgfQogCi0gICAgdmlydHVhbCBkb3VibGUg
aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCkuaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KLSAgICB2aXJ0
dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIG92ZXJyaWRlIHsgcmV0dXJuIFNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KKyAgICBkb3VibGUg
aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCkuaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KKyAgICBkb3Vi
bGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxiYXJUaGVt
ZTo6dGhlbWUoKS5hdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyJiBzY3JvbGxiYXIpIG92ZXJyaWRlIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXImIHNjcm9sbGJh
cikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkudW5yZWdpc3RlclNj
cm9sbGJhcihzY3JvbGxiYXIpOyB9CisgICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCku
cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZvaWQgdW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXImIHNjcm9sbGJhcikgb3ZlcnJpZGUgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCkudW5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9CiAKLSAgICB2aXJ0
dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgaW50
IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYnV0
dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXImLCBpbnQmIGJlZm9yZVNpemUsIGludCYg
YWZ0ZXJTaXplKTsKICAgICAKICAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIHJlbmRl
clNjcm9sbGJhclRoZW1lKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0
dG9ucyhTY3JvbGxiYXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Ny
b2xsYmFyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciYpIG92ZXJy
aWRlOworICAgIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciYs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgSW50UmVjdCBiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXImLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92
ZXJyaWRlOworICAgIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyJiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSBvdmVycmlkZTsKKyAgICBJbnRSZWN0IHRy
YWNrUmVjdChTY3JvbGxiYXImLCBib29sIHBhaW50aW5nID0gZmFsc2UpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHdpbGxQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3Jv
bGxiYXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGFpbnRTY3JvbGxiYXIoR3Jh
cGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsUGFpbnRT
Y3JvbGxiYXIoR3JhcGhpY3NDb250ZXh0JiwgU2Nyb2xsYmFyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRQYWludFNjcm9sbGJhcihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImKSBvdmVycmlk
ZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCYsIFNjcm9sbGJhciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCYsIFNj
cm9sbGJhciYsIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9s
bGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFy
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXImKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNv
bnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQmLCBTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQmLCBTY3JvbGxiYXIm
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJhciYsIGNvbnN0IEludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCYsIFNjcm9sbGJh
ciYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKworICAgIEludFJlY3QgY29uc3RyYWluVHJh
Y2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXImLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTZWFyY2hGaWVsZC5oCmluZGV4IGJjMGNhOWNhZTJhYTU4ODk1M2FmOWZjZjRhZWFm
ODg0MDJjMzA5ZmUuLmRlNDc5MzU3YjYyNjFhMzY3Yzg2YzA5YjYwNjJjMDFkMzFlODdhZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5oCkBAIC00Niw0
MSArNDYsNDEgQEAgcHVibGljOgogICAgIHZvaWQgaGlkZVBvcHVwKCk7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGNlbnRlckNvbnRhaW5lcklmTmVlZGVkKFJlbmRlckJveCopIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbEhl
aWdodExpbWl0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjZW50ZXJDb250YWluZXJJZk5lZWRlZChSZW5k
ZXJCb3gqKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVDb250cm9sTG9n
aWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91dFVuaXQgbm9uQ29udGVudEhl
aWdodCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlTG9naWNhbEhlaWdo
dExpbWl0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92
ZXJyaWRlOwogICAgIEVWaXNpYmlsaXR5IHZpc2liaWxpdHlGb3JDYW5jZWxCdXR0b24oKSBjb25z
dDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF1dG9zYXZlTmFtZSgpIGNvbnN0OwogCiAgICAg
Ly8gUG9wdXBNZW51Q2xpZW50IG1ldGhvZHMKLSAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2Vk
KHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlRXZlbnRzID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkNoYW5nZWQodW5zaWduZWQsIGJvb2wpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25DbGVhcmVkKCkgb3ZlcnJpZGUgeyB9Ci0g
ICAgdmlydHVhbCBTdHJpbmcgaXRlbVRleHQodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBpdGVtTGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBpdGVtSWNvbih1bnNpZ25lZCBsaXN0
SW5kZXgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGl0ZW1Ub29sVGlwKHVu
c2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIGl0ZW1BY2Nlc3NpYmlsaXR5VGV4dCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25l
ZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUG9wdXBNZW51U3R5bGUg
aXRlbVN0eWxlKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBQb3B1cE1lbnVTdHlsZSBtZW51U3R5bGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGludCBjbGllbnRJbnNldExlZnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBj
bGllbnRJbnNldFJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0
IGNsaWVudFBhZGRpbmdMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRV
bml0IGNsaWVudFBhZGRpbmdSaWdodCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50
IGxpc3RTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgc2VsZWN0ZWRJbmRl
eCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwb3B1cERpZEhpZGUoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXRlbUlzU2VwYXJhdG9yKHVuc2lnbmVkIGxpc3RJbmRl
eCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc0xhYmVsKHVuc2lnbmVk
IGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGl0ZW1Jc1NlbGVj
dGVkKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHNob3VsZFBvcE92ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgYm9vbCB2YWx1ZVNob3VsZENoYW5nZU9uSG90VHJhY2soKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5zaWdu
ZWQgbGlzdEluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEZvbnRTZWxlY3RvciogZm9udFNl
bGVjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBIb3N0V2luZG93KiBob3N0V2lu
ZG93KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4g
Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNj
cm9sbGJhckNvbnRyb2xTaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIHZhbHVlQ2hhbmdlZCh1bnNp
Z25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZUV2ZW50cyA9IHRydWUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2VsZWN0aW9uQ2hhbmdlZCh1bnNpZ25lZCwgYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBzZWxlY3Rpb25DbGVhcmVkKCkgb3ZlcnJpZGUgeyB9CisgICAgU3RyaW5nIGl0ZW1UZXh0KHVu
c2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGl0ZW1MYWJlbCh1
bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBpdGVtSWNvbih1
bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBpdGVtVG9vbFRp
cCh1bnNpZ25lZCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAgICBTdHJp
bmcgaXRlbUFjY2Vzc2liaWxpdHlUZXh0KHVuc2lnbmVkKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQorICAgIGJvb2wgaXRlbUlzRW5hYmxlZCh1bnNpZ25lZCBsaXN0SW5kZXgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFBvcHVwTWVudVN0eWxlIGl0ZW1TdHlsZSh1bnNpZ25lZCBs
aXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBvcHVwTWVudVN0eWxlIG1lbnVTdHlsZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGludCBjbGllbnRJbnNldExlZnQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBpbnQgY2xpZW50SW5zZXRSaWdodCgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91
dFVuaXQgY2xpZW50UGFkZGluZ0xlZnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGNsaWVudFBhZGRpbmdSaWdodCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBsaXN0U2l6ZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzZWxlY3RlZEluZGV4KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBwb3B1cERpZEhpZGUoKSBvdmVycmlkZTsKKyAgICBib29sIGl0ZW1Jc1NlcGFy
YXRvcih1bnNpZ25lZCBsaXN0SW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXRlbUlz
TGFiZWwodW5zaWduZWQgbGlzdEluZGV4KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGl0ZW1J
c1NlbGVjdGVkKHVuc2lnbmVkIGxpc3RJbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBz
aG91bGRQb3BPdmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IHZhbHVlU2hvdWxkQ2hhbmdlT25Ib3RUcmFjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBzZXRUZXh0RnJvbUl0ZW0odW5zaWduZWQgbGlzdEluZGV4KSBvdmVy
cmlkZTsKKyAgICBGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvcigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3coKSBjb25zdCBvdmVycmlkZTsKKyAgICBQYXNzUmVm
UHRyPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhJiwgU2Nyb2xsYmFy
T3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplKSBvdmVycmlkZTsKIAogICAgIEhUTUxF
bGVtZW50KiByZXN1bHRzQnV0dG9uRWxlbWVudCgpIGNvbnN0OwogICAgIEhUTUxFbGVtZW50KiBj
YW5jZWxCdXR0b25FbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmgKaW5kZXggNmI3MzFiM2U3MWFmZmVkMjkxY2VlMjhmZmEzZWMzYWM3YWI2YjlkYS4u
ODMyMTBmMGQ3ZmMzODRmOTgzY2UwMWMzMGFkMjExYjc1MzllY2UwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAtNDEsMTQgKzQxLDE0IEBAIHB1YmxpYzoKICAg
ICBib29sIGluRHJhZ01vZGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVy
IjsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KLQotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
LCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQ
b3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lk
dGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHJlcXVpcmVzRm9yY2VkU3R5bGVSZWNhbGNQcm9wYWdhdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3Zl
cnJpZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJSZW5kZXJTbGlkZXIiOyB9CisgICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKworICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5
b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXF1aXJlc0Zv
cmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNGbGV4aWJsZUJv
eEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAppbmRleCAwYjZj
M2QxNTNkODJjYTM0ZWZmNDI3ZDRhZmU2MGNmNjkyNDhjZWNmLi43YTQ1MjU5YmQ1ZDlmNmUyZjZk
MzVjYWM2YTBjN2IzMjQ4Y2NkYTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaApAQCAtNDcsMTcgKzQ3LDE3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lT3duZXJFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNuYXBzaG90dGVkUGx1Z0luIjsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4i
OyB9CiAKLSAgICB2aXJ0dWFsIEN1cnNvckRpcmVjdGl2ZSBnZXRDdXJzb3IoY29uc3QgTGF5b3V0
UG9pbnQmLCBDdXJzb3ImKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTbmFw
c2hvdHRlZFBsdWdJbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsK
KyAgICBDdXJzb3JEaXJlY3RpdmUgZ2V0Q3Vyc29yKGNvbnN0IExheW91dFBvaW50JiwgQ3Vyc29y
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NuYXBzaG90dGVkUGx1Z0luKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2
ZVdpZGdldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBjYW5I
YXZlV2lkZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQg
cGFpbnRTbmFwc2hvdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwogCi0gICAgdmly
dHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVySW1hZ2VSZXNvdXJjZT4gbV9zbmFwc2hvdFJl
c291cmNlOwogICAgIGJvb2wgbV9pc1BvdGVudGlhbE1vdXNlQWN0aXZhdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggOWMwNjg0YjNlYmMxZGE5ZjNhZGQ4YWI3
N2YxMzkwYjI2MTg5YTAyYy4uMDExMmNiZDJiYTI4YTEzYTJmZDQwYjIxZDIzZjg0MWJjNDU0YWEz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTU1LDMzICs1NSwz
MyBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBjb2xsYXBzZUJvcmRlcnMoKSBjb25zdCB7IHJl
dHVybiBzdHlsZSgpLmJvcmRlckNvbGxhcHNlKCk7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBib3JkZXJTdGFydCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm9yZGVyU3RhcnQ7IH0K
LSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyRW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9ib3JkZXJFbmQ7IH0KLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyQmVmb3JlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlckFmdGVyKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBib3JkZXJTdGFydCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fYm9yZGVyU3RhcnQ7IH0KKyAgICBMYXlvdXRVbml0IGJvcmRlckVuZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm9yZGVyRW5kOyB9CisgICAgTGF5b3V0VW5pdCBib3Jk
ZXJCZWZvcmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckFmdGVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyTGVmdCgpIGNv
bnN0IG92ZXJyaWRlCisgICAgTGF5b3V0VW5pdCBib3JkZXJMZWZ0KCkgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmIChzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3Jk
ZXJTdGFydCgpIDogYm9yZGVyRW5kKCk7CiAgICAgICAgIHJldHVybiBzdHlsZSgpLmlzRmxpcHBl
ZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBib3JkZXJBZnRlcigpIDogYm9yZGVyQmVmb3JlKCk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlclJpZ2h0KCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmIChzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBib3JkZXJFbmQoKSA6
IGJvcmRlclN0YXJ0KCk7CiAgICAgICAgIHJldHVybiBzdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dy
aXRpbmdNb2RlKCkgPyBib3JkZXJCZWZvcmUoKSA6IGJvcmRlckFmdGVyKCk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlclRvcCgpIGNvbnN0IG92ZXJyaWRlCisgICAgTGF5
b3V0VW5pdCBib3JkZXJUb3AoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKHN0
eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBzdHls
ZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkgPyBib3JkZXJBZnRlcigpIDogYm9yZGVy
QmVmb3JlKCk7CiAgICAgICAgIHJldHVybiBzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KSA/IGJvcmRlclN0YXJ0KCkgOiBib3JkZXJFbmQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIExh
eW91dFVuaXQgYm9yZGVyQm90dG9tKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJv
cmRlckJvdHRvbSgpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoc3R5bGUoKS5p
c0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCkuaXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSA/IGJvcmRlckJlZm9yZSgpIDogYm9yZGVyQWZ0ZXIo
KTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBjYWxjQm9yZGVy
RW5kKCkgY29uc3Q7CiAgICAgdm9pZCByZWNhbGNCb3JkZXJzSW5Sb3dEaXJlY3Rpb24oKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBhZGRDaGlsZChS
ZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gMCkgb3ZlcnJp
ZGUgZmluYWw7CiAKICAgICBzdHJ1Y3QgQ29sdW1uU3RydWN0IHsKICAgICAgICAgZXhwbGljaXQg
Q29sdW1uU3RydWN0KHVuc2lnbmVkIGluaXRpYWxTcGFuID0gMSkKQEAgLTI1Miw3ICsyNTIsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIFJlbmRlclRhYmxlKiBjcmVhdGVBbm9ueW1v
dXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7Ci0gICAgdmlydHVhbCBS
ZW5kZXJCb3gqIGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRlck9i
amVjdCogcGFyZW50KSBjb25zdCBvdmVycmlkZQorICAgIFJlbmRlckJveCogY3JlYXRlQW5vbnlt
b3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJl
bmRlcmVyKHBhcmVudCk7CiAgICAgfQpAQCAtMjcwLDMxICsyNzAsMzEgQEAgcHVibGljOgogICAg
IExheW91dFVuaXQgb2Zmc2V0V2lkdGhGb3JDb2x1bW4oY29uc3QgUmVuZGVyVGFibGVDb2wmKSBj
b25zdDsKICAgICBMYXlvdXRVbml0IG9mZnNldEhlaWdodEZvckNvbHVtbihjb25zdCBSZW5kZXJU
YWJsZUNvbCYpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBtYXJrRm9yUGFnaW5hdGlv
blJlbGF5b3V0SWZOZWVkZWQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIG1hcmtGb3JQYWdp
bmF0aW9uUmVsYXlvdXRJZk5lZWRlZCgpIG92ZXJyaWRlIGZpbmFsOwogICAgIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lk
IHNpbXBsaWZpZWROb3JtYWxGbG93TGF5b3V0KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBzaW1wbGlmaWVkTm9ybWFsRmxvd0xheW91dCgp
IG92ZXJyaWRlIGZpbmFsOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUYWJsZSI7IH0KKyAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRh
YmxlIjsgfQogCi0gICAgdmlydHVhbCBib29sIGlzVGFibGUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1RhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGF2b2lkc0Zsb2F0
cygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1heFdpZHRoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsK
LSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVy
LCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92
ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExh
eW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBwYWludEJveERlY29yYXRpb25z
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCBwYWludE1hc2soUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBmaW5h
bDsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY29tcHV0ZUlu
dHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dFVuaXQmIG1h
eFdpZHRoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0
aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0
VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZSBmaW5h
bDsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVj
dGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCiAgICAgUmVuZGVyVGFibGVDb2wqIHNs
b3dDb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBib29sKiBlbmRFZGdl
KSBjb25zdDsKIApAQCAtMzAzLDE4ICszMDMsMTggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaW52
YWxpZGF0ZUNhY2hlZENvbHVtbk9mZnNldHMoKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sq
IGZpcnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUZpcnN0TGV0dGVyKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgUmVuZGVyQmxvY2sqIGZp
cnN0TGluZUJsb2NrKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCB1cGRhdGVGaXJz
dExldHRlcigpIG92ZXJyaWRlIGZpbmFsOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVM
b2dpY2FsV2lkdGgoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0
aCgpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBjb252ZXJ0U3R5bGVMb2dpY2Fs
V2lkdGhUb0NvbXB1dGVkV2lkdGgoY29uc3QgTGVuZ3RoJiBzdHlsZUxvZ2ljYWxXaWR0aCwgTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCk7CiAgICAgTGF5b3V0VW5pdCBjb252ZXJ0U3R5bGVMb2dp
Y2FsSGVpZ2h0VG9Db21wdXRlZEhlaWdodChjb25zdCBMZW5ndGgmIHN0eWxlTG9naWNhbEhlaWdo
dCk7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlv
dXRQb2ludCYgbG9jYXRpb24sIFJlbmRlclJlZ2lvbiosIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5ID0gSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIFBhaW50UGhhc2UgPSBQYWludFBo
YXNlQmxvY2tCYWNrZ3JvdW5kKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFJl
Y3Qgb3ZlcmZsb3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKGNvbnN0IExheW91dFBvaW50JiBsb2Nh
dGlvbiwgUmVuZGVyUmVnaW9uKiByZWdpb24sIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVsZXZhbmN5
IHJlbGV2YW5jeSkgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQm94OjpvdmVyZmxvd0NsaXBSZWN0
KGxvY2F0aW9uLCByZWdpb24sIHJlbGV2YW5jeSk7IH0KKyAgICBMYXlvdXRSZWN0IG92ZXJmbG93
Q2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qLCBPdmVy
bGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBQ
YWludFBoYXNlID0gUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgTGF5b3V0UmVjdCBvdmVyZmxvd0NsaXBSZWN0Rm9yQ2hpbGRMYXllcnMoY29uc3QgTGF5b3V0
UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiwgT3ZlcmxheVNjcm9sbGJhclNp
emVSZWxldmFuY3kgcmVsZXZhbmN5KSBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCb3g6Om92ZXJm
bG93Q2xpcFJlY3QobG9jYXRpb24sIHJlZ2lvbiwgcmVsZXZhbmN5KTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCBhZGRPdmVyZmxvd0Zyb21DaGlsZHJlbigpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdm9pZCBz
dWJ0cmFjdENhcHRpb25SZWN0KExheW91dFJlY3QmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2FwdGlvbi5oCmluZGV4IGVlNjE0MjYyYTVhNTg1OGMy
Y2QzNDBjZjFhZDFlMGJhY2NmNGIyNWUuLjNmNDMwNjJhMTA1MzI4OGJlOWFlN2FlN2UwZTcxZTY5
ZTZjMzhlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNhcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDYXB0
aW9uLmgKQEAgLTMzLDEzICszMywxMyBAQCBwdWJsaWM6CiAKICAgICBFbGVtZW50JiBlbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0
aEZvckNvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250YWluaW5nQmxvY2soKS0+
bG9naWNhbFdpZHRoKCk7IH0KKyAgICBMYXlvdXRVbml0IGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxX
aWR0aEZvckNvbnRlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjb250YWluaW5nQmxvY2so
KS0+bG9naWNhbFdpZHRoKCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlz
VGFibGVDYXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wg
aXNUYWJsZUNhcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvVHJlZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluc2VydGVkSW50
b1RyZWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJy
aWRlOwogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlKCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDQ4M2M3ZTdjOWZmOTc1NmFhNWYz
ZWFmYzQ1ZDEzMGRlZWVjYTc1ZGQuLjhiNzZlMTY4YjUyNmRhYzFjZjMwOWM4YmYxNDBiNTk1MzFi
Zjg2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAg
LTYzLDIxICs2MywyMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENlbGxMb2dpY2FsV2lkdGgo
TGF5b3V0VW5pdCBjb25zdHJhaW5lZExvZ2ljYWxXaWR0aCk7CiAKLSAgICB2aXJ0dWFsIExheW91
dFVuaXQgYm9yZGVyTGVmdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBib3JkZXJSaWdodCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBi
b3JkZXJUb3AoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVy
Qm90dG9tKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlclN0
YXJ0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGJvcmRlckVuZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBib3JkZXJCZWZvcmUoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgYm9yZGVyQWZ0ZXIoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckxlZnQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0
VW5pdCBib3JkZXJUb3AoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckJv
dHRvbSgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYm9yZGVyU3RhcnQoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJvcmRlckVuZCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIExheW91dFVuaXQgYm9yZGVyQmVmb3JlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0
VW5pdCBib3JkZXJBZnRlcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBjb2xsZWN0Qm9y
ZGVyVmFsdWVzKFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZXMmKSBjb25zdDsKICAg
ICBzdGF0aWMgdm9pZCBzb3J0Qm9yZGVyVmFsdWVzKFJlbmRlclRhYmxlOjpDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZXMmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwYWludENvbGxh
cHNlZEJvcmRlcnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2b2lkIHBh
aW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jiwg
UmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCk7CkBAIC05MSwyNiArOTEsMjYgQEAgcHVi
bGljOgogICAgIExheW91dFVuaXQgaW50cmluc2ljUGFkZGluZ0JlZm9yZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW50cmluc2ljUGFkZGluZ0JlZm9yZTsgfQogICAgIExheW91dFVuaXQgaW50cmluc2lj
UGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNQYWRkaW5nQWZ0ZXI7IH0K
IAotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nVG9wKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdCb3R0b20oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0xlZnQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1JpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5
b3V0VW5pdCBwYWRkaW5nVG9wKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBwYWRk
aW5nQm90dG9tKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBwYWRkaW5nTGVmdCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgcGFkZGluZ1JpZ2h0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgCiAgICAgLy8gRklYTUU6IEZvciBub3cgd2UganVzdCBhc3N1bWUgdGhlIGNl
bGwgaGFzIHRoZSBzYW1lIGJsb2NrIGZsb3cgZGlyZWN0aW9uIGFzIHRoZSB0YWJsZS4gSXQncyBs
aWtlbHkgd2UnbGwKICAgICAvLyBjcmVhdGUgYW4gZXh0cmEgYW5vbnltb3VzIFJlbmRlckJsb2Nr
IHRvIGhhbmRsZSBtaXhpbmcgZGlyZWN0aW9uYWxpdHkgYW55d2F5LCBpbiB3aGljaCBjYXNlIHdl
IGNhbiBsb2NrCiAgICAgLy8gdGhlIGJsb2NrIGZsb3cgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGNl
bGxzIHRvIHRoZSB0YWJsZSdzIGRpcmVjdGlvbmFsaXR5LgotICAgIHZpcnR1YWwgTGF5b3V0VW5p
dCBwYWRkaW5nQmVmb3JlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0
IHBhZGRpbmdBZnRlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgcGFkZGluZ0Jl
Zm9yZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgcGFkZGluZ0FmdGVyKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldE92ZXJyaWRlTG9naWNhbENvbnRlbnRIZWlnaHRG
cm9tUm93SGVpZ2h0KExheW91dFVuaXQpOwogCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhcnND
aGFuZ2VkKGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckNoYW5nZWQsIGJvb2wgdmVydGljYWxTY3Jv
bGxiYXJDaGFuZ2VkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbGJhcnNDaGFuZ2VkKGJvb2wg
aG9yaXpvbnRhbFNjcm9sbGJhckNoYW5nZWQsIGJvb2wgdmVydGljYWxTY3JvbGxiYXJDaGFuZ2Vk
KSBvdmVycmlkZTsKIAogICAgIGJvb2wgY2VsbFdpZHRoQ2hhbmdlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2VsbFdpZHRoQ2hhbmdlZDsgfQogICAgIHZvaWQgc2V0Q2VsbFdpZHRoQ2hhbmdlZChib29s
IGIgPSB0cnVlKSB7IG1fY2VsbFdpZHRoQ2hhbmdlZCA9IGI7IH0KIAogICAgIHN0YXRpYyBSZW5k
ZXJUYWJsZUNlbGwqIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIFJlbmRlckJveCogY3JlYXRlQW5vbnltb3VzQm94V2l0
aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBwYXJlbnQpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihwYXJlbnQpOyB9CisgICAg
UmVuZGVyQm94KiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJP
YmplY3QqIHBhcmVudCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0
aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7IH0KIAogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNl
ZCB0byB1bmlmeSB3aGljaCB0YWJsZSBwYXJ0J3Mgc3R5bGUgd2UgdXNlIGZvciBjb21wdXRpbmcg
ZGlyZWN0aW9uIGFuZAogICAgIC8vIHdyaXRpbmcgbW9kZS4gV3JpdGluZyBtb2RlcyBhcmUgbm90
IGFsbG93ZWQgb24gcm93IGdyb3VwIGFuZCByb3cgYnV0IGRpcmVjdGlvbiBpcy4KQEAgLTEyOSwz
MSArMTI5LDMxIEBAIHB1YmxpYzoKICAgICBib29sIGlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSBj
b25zdCB7IHJldHVybiAhdGFibGUoKS0+Y2VsbEFmdGVyKHRoaXMpIHx8ICF0YWJsZSgpLT5jZWxs
QmVmb3JlKHRoaXMpOyB9CiAjZW5kaWYKICAgICAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUhhc0Vt
cHR5Q29sbGFwc2VkQm9yZGVycygpOwogICAgIHZvaWQgc2V0SGFzRW1wdHlDb2xsYXBzZWRCb3Jk
ZXIoQ29sbGFwc2VkQm9yZGVyU2lkZSwgYm9vbCBlbXB0eSkgY29uc3Q7CiAKIHByb3RlY3RlZDoK
LSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAoaXNBbm9ueW1vdXMoKSB8fCBpc1BzZXVkb0VsZW1lbnQoKSkgPyAiUmVu
ZGVyVGFibGVDZWxsIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZUNlbGwiOyB9CisgICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChpc0Fub255bW91
cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZUNlbGwgKGFub255bW91cyki
IDogIlJlbmRlclRhYmxlQ2VsbCI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlQ2VsbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzVGFibGVDZWxsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxC
ZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21U
cmVlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTG9naWNhbFdpZHRoKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgoKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TWFzayhQYWludEluZm8m
LCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRCb3hEZWNvcmF0
aW9ucyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgYm94U2hhZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJbmxp
bmVGbG93Qm94KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBib3hTaGFkb3dTaG91bGRCZUFw
cGxpZWRUb0JhY2tncm91bmQoY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBCYWNrZ3Jv
dW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tQ29udGFpbmVyKFJlbmRlckVsZW1lbnQmLCBj
b25zdCBMYXlvdXRQb2ludCYsIGJvb2wqIG9mZnNldERlcGVuZHNPblBvaW50ID0gMCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNvbXB1dGVSZWN0Rm9yUmVwYWludChj
b25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRT
aXplIG9mZnNldEZyb21Db250YWluZXIoUmVuZGVyRWxlbWVudCYsIGNvbnN0IExheW91dFBvaW50
JiwgYm9vbCogb2Zmc2V0RGVwZW5kc09uUG9pbnQgPSAwKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
YXlvdXRSZWN0IGNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBMYXlvdXRSZWN0JiwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZh
bHNlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgYm9yZGVySGFsZkxlZnQoYm9v
bCBvdXRlcikgY29uc3Q7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJIYWxmUmlnaHQoYm9vbCBvdXRl
cikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCmluZGV4
IDg0NTcyMTc0ZTVjNmM3NDI1ZGRjOGFiYmRjN2M1NjZjOGM1NjU4OTguLjFlMzY3YzRiNWU3NTNj
M2Q3ODU4OTVjZDYwMWMxOGYxZDlmOTlkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5oCkBAIC01OSwyOSArNTksMjkgQEAgcHVibGljOgogICAgIGNvbnN0IEJv
cmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKGNvbnN0IFJlbmRlclRhYmxlQ2Vs
bCopIGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdDZWxsQWZ0
ZXIoY29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgb2Zmc2V0TGVmdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBv
ZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0
V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgb2Zmc2V0SGVp
Z2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCkgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRV
bml0IG9mZnNldFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBvZmZzZXRI
ZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29sIjsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbmRlclRhYmxlQ29sKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRl
IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclRhYmxlQ29sIjsgfQorICAgIGJvb2wgaXNS
ZW5kZXJUYWJsZUNvbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lk
IGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b1RyZWUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBpbnNlcnRlZEludG9UcmVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQmVSZW1v
dmVkRnJvbVRyZWUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dl
ZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBvdmVycmlkZTsKKyAgICBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaW1h
Z2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYpIG92ZXJyaWRlIHsgfQogCiAgICAgUmVuZGVyVGFibGUqIHRhYmxlKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5kZXggMDJhYTg3Y2E5OGJj
ZjMwNzE5N2I5MmZmMzlmYmQwNDczNDg5ODRkNy4uMDUwZDU1ZTA4MjI4NTQ4NzczMjRhNDFjZDVl
NmM2YzA3ZjE5NTMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93
LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRPdXRsaW5lRm9yUm93
SWZOZWVkZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAogICAgIHN0YXRpYyBS
ZW5kZXJUYWJsZVJvdyogY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCopOwotICAgIHZpcnR1YWwgUmVuZGVyQm94KiBjcmVhdGVBbm9ueW1vdXNCb3hX
aXRoU2FtZVR5cGVBcyhjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7IH0KKyAg
ICBSZW5kZXJCb3gqIGNyZWF0ZUFub255bW91c0JveFdpdGhTYW1lVHlwZUFzKGNvbnN0IFJlbmRl
ck9iamVjdCogcGFyZW50KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBjcmVhdGVBbm9ueW1vdXNX
aXRoUGFyZW50UmVuZGVyZXIocGFyZW50KTsgfQogCiAgICAgdm9pZCBzZXRSb3dJbmRleCh1bnNp
Z25lZCk7CiAgICAgYm9vbCByb3dJbmRleFdhc1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fcm93SW5k
ZXggIT0gdW5zZXRSb3dJbmRleDsgfQpAQCAtNTksMjggKzU5LDI4IEBAIHB1YmxpYzoKICAgICBj
b25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKGNvbnN0IFJlbmRlclRh
YmxlQ2VsbCopIGNvbnN0OwogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdF
bmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lk
IGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQg
PSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJl
bmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlUm93
IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJsZVJvdyI7IH0KKyAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQc2V1
ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlUm93IChhbm9ueW1vdXMpIiA6ICJSZW5kZXJUYWJs
ZVJvdyI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1RhYmxlUm93KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNUYWJsZVJvdygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZVJlbW92
ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgd2lsbEJlUmVtb3ZlZEZyb21UcmVl
KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlwKCkgfHwgaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkgfHwgaGFzSGlkZGVuQmFja2ZhY2UoKSB8fCBoYXNDbGlwUGF0
aCgpIHx8IGNyZWF0ZXNHcm91cCgpIHx8IGlzU3RpY2t5UG9zaXRpb25lZCgpOyB9CisgICAgYm9v
bCByZXF1aXJlc0xheWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gaGFzT3ZlcmZsb3dDbGlw
KCkgfHwgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgfHwgaGFzSGlkZGVuQmFja2ZhY2Uo
KSB8fCBoYXNDbGlwUGF0aCgpIHx8IGNyZWF0ZXNHcm91cCgpIHx8IGlzU3RpY2t5UG9zaXRpb25l
ZCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0
UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCogPSAwKSBvdmVycmlkZTsKKyAgICB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwog
CiAgICAgUmVuZGVyVGFibGVTZWN0aW9uKiBzZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8UmVuZGVyVGFibGVTZWN0aW9uPihwYXJlbnQoKSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IGZjNDViOTkwZjNlYjZiYWIyOTMy
NjU5MWZhMTcwZGIwM2M4ODA5MzYuLjZkZDExYmYyYmU5ZGY3MDQ5YmYxMzQxYzBlZWEwYjdkM2Vj
MjhiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmgKQEAgLTYyLDkgKzYyLDkgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJv
dygpIGNvbnN0OwogICAgIFJlbmRlclRhYmxlUm93KiBsYXN0Um93KCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0
KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgdm9pZCBhZGRDZWxsKFJlbmRlclRhYmxlQ2VsbCosIFJlbmRlclRhYmxlUm93KiByb3cp
OwogCkBAIC0xNDQsMTIgKzE0NCwxMiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBkaXN0cmli
dXRlRXh0cmFMb2dpY2FsSGVpZ2h0VG9Sb3dzKExheW91dFVuaXQgZXh0cmFMb2dpY2FsSGVpZ2h0
KTsKIAogICAgIHN0YXRpYyBSZW5kZXJUYWJsZVNlY3Rpb24qIGNyZWF0ZUFub255bW91c1dpdGhQ
YXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIFJlbmRlckJv
eCogY3JlYXRlQW5vbnltb3VzQm94V2l0aFNhbWVUeXBlQXMoY29uc3QgUmVuZGVyT2JqZWN0KiBw
YXJlbnQpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRS
ZW5kZXJlcihwYXJlbnQpOyB9CisgICAgUmVuZGVyQm94KiBjcmVhdGVBbm9ueW1vdXNCb3hXaXRo
U2FtZVR5cGVBcyhjb25zdCBSZW5kZXJPYmplY3QqIHBhcmVudCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gY3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHBhcmVudCk7IH0KICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2Uo
U3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGVudW0gU2hvdWxkSW5jbHVk
ZUFsbEludGVyc2VjdGluZ0NlbGxzIHsKQEAgLTE1NywxOCArMTU3LDE4IEBAIHByaXZhdGU6CiAg
ICAgICAgIERvTm90SW5jbHVkZUFsbEludGVyc2VjdGluZ0NlbGxzCiAgICAgfTsKIAotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChp
c0Fub255bW91cygpIHx8IGlzUHNldWRvRWxlbWVudCgpKSA/ICJSZW5kZXJUYWJsZVNlY3Rpb24g
KGFub255bW91cykiIDogIlJlbmRlclRhYmxlU2VjdGlvbiI7IH0KKyAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gKGlzQW5vbnltb3VzKCkgfHwgaXNQ
c2V1ZG9FbGVtZW50KCkpID8gIlJlbmRlclRhYmxlU2VjdGlvbiAoYW5vbnltb3VzKSIgOiAiUmVu
ZGVyVGFibGVTZWN0aW9uIjsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGNhbkhhdmVDaGlsZHJl
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBp
c1RhYmxlU2VjdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGlzVGFibGVTZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHdpbGxCZVJlbW92ZWRGcm9tVHJlZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
d2lsbEJlUmVtb3ZlZEZyb21UcmVlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
cGFpbnRDZWxsKFJlbmRlclRhYmxlQ2VsbCosIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludE9iamVjdChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRSb3dHcm91cEJvcmRlcihj
b25zdCBQYWludEluZm8mLCBib29sIGFudGlhbGlhcywgTGF5b3V0UmVjdCwgQm94U2lkZSwgQ1NT
UHJvcGVydHlJRCBib3JkZXJDb2xvciwgRUJvcmRlclN0eWxlLCBFQm9yZGVyU3R5bGUgdGFibGVC
b3JkZXJTdHlsZSk7CiAgICAgdm9pZCBwYWludFJvd0dyb3VwQm9yZGVySWZSZXF1aXJlZChjb25z
dCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIHVuc2lnbmVkIHJv
dywgdW5zaWduZWQgY29sLCBCb3hTaWRlLCBSZW5kZXJUYWJsZUNlbGwqID0gMCk7CiAgICAgTGF5
b3V0VW5pdCBvZmZzZXRMZWZ0Rm9yUm93R3JvdXBCb3JkZXIoUmVuZGVyVGFibGVDZWxsKiwgY29u
c3QgTGF5b3V0UmVjdCYgcm93R3JvdXBSZWN0LCB1bnNpZ25lZCByb3cpOwpAQCAtMTc3LDkgKzE3
Nyw5IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFJvd0dyb3VwQm9yZGVySGVp
Z2h0KFJlbmRlclRhYmxlQ2VsbCosIGNvbnN0IExheW91dFJlY3QmIHJvd0dyb3VwUmVjdCwgdW5z
aWduZWQgcm93KTsKICAgICBMYXlvdXRVbml0IGhvcml6b250YWxSb3dHcm91cEJvcmRlcldpZHRo
KFJlbmRlclRhYmxlQ2VsbCosIGNvbnN0IExheW91dFJlY3QmIHJvd0dyb3VwUmVjdCwgdW5zaWdu
ZWQgcm93LCB1bnNpZ25lZCBjb2x1bW4pOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gMCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0KiA9IDApIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZW5zdXJlUm93cyh1bnNpZ25lZCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCAxN2UxZTIxNzg1MTdjN2IyNWI4ZGI2MjZh
NTQ0Y2NkNDE3OGRkMTNiLi4wM2QyNTY3NTY2NzA5ODVmZjFlZjEyN2FmZGQ3ZjM0ZjQ1OWNlNmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCB0YWtlT2Zmc2V0QWZ0ZXJMYXN0VHlwZWRDaGFyYWN0
ZXIoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpcmVkKCkgb3ZlcnJpZGU7CiAgICAgUmVuZGVyVGV4dCYgbV9yZW5kZXJlcjsKICAg
ICB1bnNpZ25lZCBtX29mZnNldEFmdGVyTGFzdFR5cGVkQ2hhcmFjdGVyIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IDFiNWZiNDgxOTVlMDJjODRiNDk3
NDBlNmJhYTlhMDcxYTlkNTEwNGYuLjk1Mzg0MTFmYTM4OTc2YjNiOTg2OGIxZTU3NjUyMjI3MDVm
YzkzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0KCk7CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBUZXh0KiB0ZXh0Tm9kZSgpIGNv
bnN0OwogCkBAIC02OCwxOCArNjgsMTggQEAgcHVibGljOgogICAgIElubGluZVRleHRCb3gqIGNy
ZWF0ZUlubGluZVRleHRCb3goKSB7IHJldHVybiBtX2xpbmVCb3hlcy5jcmVhdGVBbmRBcHBlbmRM
aW5lQm94KCp0aGlzKTsgfQogICAgIHZvaWQgZGlydHlMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNv
bnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAgICAgVmVjdG9y
PEludFJlY3Q+IGFic29sdXRlUmVjdHNGb3JSYW5nZSh1bnNpZ25lZCBzdGFydE9mZnNldCA9IDAs
IHVuc2lnbmVkIGVuZE9mZnNldCA9IFVJTlRfTUFYLCBib29sIHVzZVNlbGVjdGlvbkhlaWdodCA9
IGZhbHNlLCBib29sKiB3YXNGaXhlZCA9IG51bGxwdHIpIGNvbnN0OwogI2lmIFBMQVRGT1JNKElP
UykKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rp
b25SZWN0PiYsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCwgdW5zaWduZWQgZW5kT2Zmc2V0ID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNvbGxlY3RTZWxlY3Rpb25SZWN0cyhWZWN0b3I8U2VsZWN0aW9uUmVjdD4mLCB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IDAsIHVuc2lnbmVkIGVuZE9mZnNldCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92
ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYs
IGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBhYnNvbHV0ZVF1YWRzRm9yUmFuZ2UodW5zaWduZWQgc3RhcnRPZmZzZXQgPSAwLCB1bnNp
Z25lZCBlbmRPZmZzZXQgPSBVSU5UX01BWCwgYm9vbCB1c2VTZWxlY3Rpb25IZWlnaHQgPSBmYWxz
ZSwgYm9vbCogd2FzRml4ZWQgPSBudWxscHRyKSBjb25zdDsKIAogICAgIFZlY3RvcjxGbG9hdFF1
YWQ+IGFic29sdXRlUXVhZHNDbGlwcGVkVG9FbGxpcHNpcygpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlv
bkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJp
ZGU7CiAKICAgICBib29sIGlzOEJpdCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dC5pbXBsKCktPmlz
OEJpdCgpOyB9CiAgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0LmltcGwoKS0+Y2hhcmFjdGVyczgoKTsgfQpAQCAtMTE1LDMxICsxMTUsMzEgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYsIGJvb2wgZm9yY2Ug
PSBmYWxzZSk7CiAgICAgdm9pZCBzZXRUZXh0V2l0aE9mZnNldChjb25zdCBTdHJpbmcmLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbiwgYm9vbCBmb3JjZSA9IGZhbHNlKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBjYW5CZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRl
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZv
clJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
TGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExh
eW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOworICAgIGJvb2wg
Y2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCA9
IHRydWUpIG92ZXJyaWRlOworICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoSW5saW5lQm94
KiwgaW50IGNhcmV0T2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAw
KSBvdmVycmlkZTsKIAogICAgIExheW91dFJlY3QgY29sbGVjdFNlbGVjdGlvblJlY3RzRm9yTGlu
ZUJveGVzKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJv
b2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQsIFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMpOwogCiAg
ICAgTGF5b3V0VW5pdCBtYXJnaW5MZWZ0KCkgY29uc3QgeyByZXR1cm4gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCkubWFyZ2luTGVmdCgpLCAwKTsgfQogICAgIExheW91dFVuaXQgbWFyZ2lu
UmlnaHQoKSBjb25zdCB7IHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5tYXJn
aW5SaWdodCgpLCAwKTsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJm
bG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lcikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBJbmxpbmVUZXh0Qm94KiBmaXJz
dFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5maXJzdCgpOyB9CiAgICAgSW5s
aW5lVGV4dEJveCogbGFzdFRleHRCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hlcy5sYXN0
KCk7IH0KIAotICAgIHZpcnR1YWwgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBp
bnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgY2FyZXRNYXhPZmZz
ZXQoKSBjb25zdCBvdmVycmlkZTsKICAgICB1bnNpZ25lZCBjb3VudFJlbmRlcmVkQ2hhcmFjdGVy
T2Zmc2V0c1VudGlsKHVuc2lnbmVkKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zUmVuZGVyZWRD
aGFyYWN0ZXJPZmZzZXQodW5zaWduZWQpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNDYXJldE9m
ZnNldCh1bnNpZ25lZCkgY29uc3Q7CiAgICAgYm9vbCBoYXNSZW5kZXJlZFRleHQoKSBjb25zdDsK
IAotICAgIHZpcnR1YWwgaW50IHByZXZpb3VzT2Zmc2V0KGludCBjdXJyZW50KSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGludCBwcmV2aW91c09mZnNldEZvckJhY2t3YXJkRGVs
ZXRpb24oaW50IGN1cnJlbnQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgaW50
IG5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGludCBw
cmV2aW91c09mZnNldChpbnQgY3VycmVudCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50
IHByZXZpb3VzT2Zmc2V0Rm9yQmFja3dhcmREZWxldGlvbihpbnQgY3VycmVudCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgaW50IG5leHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOwogCiAgICAgYm9vbCBjb250YWluc1JldmVyc2VkVGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGFpbnNSZXZlcnNlZFRleHQ7IH0KIApAQCAtMTcyLDcgKzE3Miw3IEBAIHB1Ymxp
YzoKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNh
bFdpZHRocyhmbG9hdCBsZWFkV2lkdGgpOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95
ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFJlbmRlcmVkVGV4dChjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIFVDaGFyIHByZXZpb3VzQ2hhcmFjdGVyKCkgY29uc3Q7CkBAIC0xODAsNyArMTgwLDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBSZW5kZXJUZXh0KE5vZGUmLCBjb25zdCBTdHJpbmcm
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgY29tcHV0ZVByZWZl
cnJlZExvZ2ljYWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYg
ZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyYpOwogCkBAIC0xODksOSArMTg5LDkgQEAgcHJp
dmF0ZToKICAgICAvLyBNYWtlIGxlbmd0aCgpIHByaXZhdGUgc28gdGhhdCBjYWxsZXJzIHRoYXQg
aGF2ZSBhIFJlbmRlclRleHQqCiAgICAgLy8gd2lsbCB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IHRl
eHRMZW5ndGgoKSBpbnN0ZWFkLCB3aGlsZQogICAgIC8vIGNhbGxlcnMgd2l0aCBhIFJlbmRlck9i
amVjdCogY2FuIGNvbnRpbnVlIHRvIHVzZSBsZW5ndGgoKS4KLSAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRleHRMZW5ndGgoKTsgfQor
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRleHRM
ZW5ndGgoKTsgfQogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYsIGNvbnN0IExh
eW91dFBvaW50JiwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWwgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mLCBjb25z
dCBMYXlvdXRQb2ludCYsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlIGZpbmFsIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQogCiAgICAgYm9vbCBjb250YWluc09ubHlXaGl0
ZXNwYWNlKHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIGxlbikgY29uc3Q7CiAgICAgZmxvYXQgd2lk
dGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmLCBpbnQgc3RhcnQsIGludCBsZW4sIGZsb2F0
IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93
KiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggNzRmZGMzZjZlYWRiN2YzYWVlYzA3OTVjYzYzOTZm
NmQ2NmY5YTZmMC4uZGU2MDg5YTJiNmU5MmI3Zjk2NzBkMzc5NjUyOWYzZTY1NmU5ZWJiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKQEAgLTQwLDcg
KzQwLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuU2Nyb2xsKCkgY29uc3Q7CiAKICAgICAvLyBS
ZXR1cm5zIHRoZSBsaW5lIGhlaWdodCBvZiB0aGUgaW5uZXIgcmVuZGVyZXIuCi0gICAgdmlydHVh
bCBpbnQgaW5uZXJMaW5lSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGlubmVyTGlu
ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKQEAgLTUxLDcg
KzUxLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgaW50IHNjcm9sbGJhclRoaWNrbmVzcygpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hh
bmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgaGl0SW5uZXJUZXh0RWxlbWVudChIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
TGF5b3V0UG9pbnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCk7CiAKQEAgLTY0LDI1ICs2NCwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lkdGgoZmxvYXQgY2hhcldpZHRo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVDb250cm9sTG9naWNh
bEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91dFVuaXQgbm9uQ29udGVudEhlaWdo
dCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExh
eW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0
ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNh
bEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1
ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNs
dWRlZENoaWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVGV4dENvbnRy
b2wiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
TGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRlIHsgfQotICAgIHZp
cnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
Ci0gICAgdmlydHVhbCBib29sIGNhbkhhdmVHZW5lcmF0ZWRDaGlsZHJlbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJUZXh0Q29udHJvbCI7IH0KKyAgICBib29sIGlzVGV4
dENvbnRyb2woKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lk
dGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVt
b3ZlTGVmdG92ZXJBbm9ueW1vdXNCbG9jayhSZW5kZXJCbG9jayopIG92ZXJyaWRlIHsgfQorICAg
IGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYgYWRkaXRpb25hbE9mZnNldCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
cGFpbnRDb250YWluZXIgPSAwKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5CZVBy
b2dyYW1hdGljYWxseVNjcm9sbGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgY2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVj
YWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCByZXF1aXJlc0ZvcmNlZFN0eWxlUmVjYWxjUHJvcGFnYXRpb24oKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiB9OwogCiAvLyBSZW5kZXJlciBmb3Igb3VyIGlubmVyIGNvbnRhaW5l
ciwgZm9yIDxzZWFyY2g+IGFuZCBvdGhlcnMuCkBAIC05NiwxMiArOTYsMTIgQEAgcHVibGljOgog
ICAgIHsgfQogICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250cm9sSW5uZXJDb250YWluZXIoKSB7
IH0KIAotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9z
aXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIGludCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAgdmlydHVh
bCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24p
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5l
KGRpcmVjdGlvbik7IH0KKyAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0K
KyAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxv
Y2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZsZXhpYmxl
Qm94SW1wbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXgg
ZmUxMTRkZTRlNDU0YmIwMDFiYjk0ZWZlYmE1MGIyMWNkYzZkZWM5YS4uZTFkZjdiNTIwMjcwYTc5
OGM4MzdkN2NmNWU0YTM5OTA5YzA2YzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTM4LDE2ICszOCwxNiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwog
Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dEFyZWEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBpc1RleHRBcmVhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRh
aW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9u
KSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0Jiwg
SGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5l
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZlcmFnZUNoYXJXaWR0aCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRo
KGZsb2F0IGNoYXJXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0
IGNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91
dFVuaXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQg
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgZ2V0QXZlcmFnZUNoYXJXaWR0aCgpIG92ZXJyaWRlOwor
ICAgIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVudExvZ2ljYWxXaWR0aChmbG9hdCBjaGFyV2lk
dGgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgY29tcHV0ZUNvbnRyb2xMb2dpY2Fs
SGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5b3V0VW5pdCBub25Db250ZW50SGVpZ2h0
KSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJl
bmRlck9iamVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxk
cmVuKSBvdmVycmlkZTsKKyAgICBSZW5kZXJPYmplY3QqIGxheW91dFNwZWNpYWxFeGNsdWRlZENo
aWxkKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2xTaW5nbGVMaW5lLmgKaW5kZXggZTMwNzUzYzc0ZjU2NmRhZDQxMTg0YjJhZTMyNDZk
OGIwZWU4ZDQ4MS4uZDE0N2ViOTM5MzY3ZGY4MDc0ODU4ZmI1OWEyYjA5YWFmNDNiZDkyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNp
bmdsZUxpbmUuaApAQCAtNDYsMzIgKzQ2LDMyIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAg
dm9pZCB0ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExh
eW91dFJlY3QgY29udHJvbENsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVGV4dEZpZWxkKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaGFzQ29udHJvbENsaXAoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBMYXlvdXRSZWN0IGNvbnRyb2xDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNUZXh0RmllbGQoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRQ
b2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVs
YXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgYm9vbCBub2RlQXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9j
YXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXV0
b3Njcm9sbChjb25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgYXV0b3Njcm9sbChj
b25zdCBJbnRQb2ludCYpIG92ZXJyaWRlOwogCiAgICAgLy8gU3ViY2xhc3NlZCB0byBmb3J3YXJk
IHRvIG91ciBpbm5lciBkaXYuCi0gICAgdmlydHVhbCBpbnQgc2Nyb2xsTGVmdCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNjcm9sbFRvcCgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgaW50IHNjcm9sbFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBp
bnQgc2Nyb2xsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNj
cm9sbExlZnQoaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsVG9wKGlu
dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNj
cm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwgRWxlbWVudCoqIHN0b3BFbGVt
ZW50ID0gbnVsbHB0ciwgUmVuZGVyQm94KiBzdGFydEJveCA9IG51bGxwdHIsIGNvbnN0IEludFBv
aW50JiB3aGVlbEV2ZW50QWJzb2x1dGVQb2ludCA9IEludFBvaW50KCkpIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgYm9vbCBsb2dpY2FsU2Nyb2xsKFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBtdWx0aXBsaWVyID0gMSwgRWxlbWVudCoqIHN0b3BF
bGVtZW50ID0gMCkgb3ZlcnJpZGUgZmluYWw7CisgICAgaW50IHNjcm9sbExlZnQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBpbnQgc2Nyb2xsVG9wKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHNj
cm9sbFdpZHRoKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHNjcm9sbEhlaWdodCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Nyb2xsTGVmdChpbnQpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0U2Nyb2xsVG9wKGludCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzY3JvbGwoU2Nyb2xsRGly
ZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgbXVsdGlwbGllciA9IDEsIEVsZW1lbnQq
KiBzdG9wRWxlbWVudCA9IG51bGxwdHIsIFJlbmRlckJveCogc3RhcnRCb3ggPSBudWxscHRyLCBj
b25zdCBJbnRQb2ludCYgd2hlZWxFdmVudEFic29sdXRlUG9pbnQgPSBJbnRQb2ludCgpKSBvdmVy
cmlkZSBmaW5hbDsKKyAgICBib29sIGxvZ2ljYWxTY3JvbGwoU2Nyb2xsTG9naWNhbERpcmVjdGlv
biwgU2Nyb2xsR3JhbnVsYXJpdHksIGZsb2F0IG11bHRpcGxpZXIgPSAxLCBFbGVtZW50Kiogc3Rv
cEVsZW1lbnQgPSAwKSBvdmVycmlkZSBmaW5hbDsKIAogICAgIGludCB0ZXh0QmxvY2tXaWR0aCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgZ2V0QXZlcmFnZUNoYXJXaWR0aCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGZs
b2F0IGNoYXJXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNv
bXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91dFVu
aXQgbm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgZ2V0QXZlcmFn
ZUNoYXJXaWR0aCgpIG92ZXJyaWRlOworICAgIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVudExv
Z2ljYWxXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVu
aXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwgTGF5
b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHls
ZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCiAgICAgYm9v
bCB0ZXh0U2hvdWxkQmVUcnVuY2F0ZWQoKSBjb25zdDsKIApAQCAtOTgsOSArOTgsOSBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBoYXNMaW5lSWZFbXB0eSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0
Q29udHJvbElubmVyQmxvY2soKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dmlydHVhbCBib29sIGNhbkJlUHJvZ3JhbWF0aWNhbGx5U2Nyb2xsZWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBoYXNMaW5lSWZFbXB0eSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzVGV4dENvbnRyb2xJbm5lckJsb2NrKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2FuQmVQcm9ncmFtYXRp
Y2FsbHlTY3JvbGxlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0RnJhZ21lbnQuaAppbmRleCAwNmFkOTBhMGIxN2U0MmZkOTEwNjczMGU1ZWEzNGQ5NmJkZjY4
YjZiLi4xZWEyYTE4MDk4MTE4OTc2NzM0NzEyMGU4ZTE4ZmMwZTM1NDgwYWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCkBAIC0zOSw3ICszOSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflJlbmRlclRleHRGcmFnbWVudCgpOwogCi0gICAg
dmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBz
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KICAgICB1bnNpZ25lZCBlbmQoKSBjb25z
dCB7IHJldHVybiBtX2VuZDsgfQpAQCAtNTIsMTcgKzUyLDE3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldENvbnRlbnRTdHJpbmcoY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAgICBTdHJpbmdJbXBsKiBj
b250ZW50U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U3RyaW5nLmltcGwoKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3JjZSA9IGZh
bHNlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiwgYm9vbCBmb3Jj
ZSA9IGZhbHNlKSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyYgYWx0VGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fYWx0VGV4dDsgfQogICAgIHZvaWQgc2V0QWx0VGV4dChjb25zdCBTdHJpbmcm
IGFsdFRleHQpIHsgbV9hbHRUZXh0ID0gYWx0VGV4dDsgfQogICAgIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIGJvb2wgaXNUZXh0RnJhZ21lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1RleHRGcmFnbWVudCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBVQ2hhciBwcmV2
aW91c0NoYXJhY3RlcigpIGNvbnN0IG92ZXJyaWRlOworICAgIFVDaGFyIHByZXZpb3VzQ2hhcmFj
dGVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB1bnNpZ25lZCBtX3N0YXJ0OwogICAgIHVuc2ln
bmVkIG1fZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuaAppbmRl
eCAxMzVlOWYwMGUxNTgwZDUxMTBjN2VjZjlhNDNhMjQ2MTNhYTdhMmIxLi4zMGQwZWM3M2FmMTY3
Yzk4YTdjZThmZTZmZGNlNmU4YmZiOWE5NTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVFZmwuaApAQCAtNzAsMzMgKzcwLDMzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKFBhZ2UqKTsKIAogICAgIC8vIEEgbWV0aG9k
IGFza2luZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBhY3R1YWxseSBjYXJlIGFib3V0IHJlZHJh
d2luZyB3aGVuIGhvdmVyZWQuCi0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzSG92ZXIoY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBz
dXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgLy8gQSBtZXRob2QgUmV0dXJuaW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wg
aXMgc3R5bGVkIGJ5IGNzcyBvciBub3QgZS5nIHNwZWNpZnlpbmcgYmFja2dyb3VuZC1jb2xvci4K
LSAgICB2aXJ0dWFsIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5k
Q29sb3IpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDb250cm9sU3R5bGVkKGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgQm9yZGVyRGF0YSYsIGNvbnN0IEZpbGxMYXllciYsIGNvbnN0IENv
bG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2Qg
YXNraW5nIGlmIHRoZSB0aGVtZSBpcyBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCi0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSYp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9s
IGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAg
dmlydHVhbCBib29sIGNvbnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVy
T2JqZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2lu
ZyBpZiBhbnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCi0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBmb3JlZ3Jv
dW5kIGNvbG9ycyBvZiBzZWxlY3Rpb24gYXJlIHN1cHBvcnRlZC4KLSAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3JzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzdXBwb3J0c1NlbGVjdGlvbkZvcmVncm91bmRDb2xvcnMoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIC8vIEEgbWV0aG9kIHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gZm9yIGEg
ImxlYWYiIGNvbnRyb2wuIFRoaXMgd2lsbCBvbmx5IGJlIHVzZWQgaWYgYSBiYXNlbGluZQogICAg
IC8vIHBvc2l0aW9uIGNhbm5vdCBiZSBkZXRlcm1pbmVkIGJ5IGV4YW1pbmluZyBjaGlsZCBjb250
ZW50LiBDaGVja2JveGVzIGFuZCByYWRpbyBidXR0b25zIGFyZSBleGFtcGxlcyBvZgogICAgIC8v
IGNvbnRyb2xzIHRoYXQgbmVlZCB0byBkbyB0aGlzLgotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5l
UG9zaXRpb24oY29uc3QgUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGJhc2Vs
aW5lUG9zaXRpb24oY29uc3QgUmVuZGVyQm94JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dy
b3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNl
bGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHBsYXRm
b3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Q29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIC8vIFNldCBwbGF0Zm9ybSBjb2xvcnM7IHJlbWVtYmVyIHRvIGNhbGwgcGxhdGZv
cm1Db2xvckRpZENoYW5nZSBhZnRlci4KICAgICB2b2lkIHNldENvbG9yRnJvbVRoZW1lQ2xhc3Mo
Y29uc3QgY2hhciogY29sb3JDbGFzcyk7CkBAIC0xMDgsNzIgKzEwOCw3MiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGFkanVzdFNpemVDb25zdHJhaW50cyhSZW5kZXJTdHlsZSYsIEZvcm1UeXBlKSBj
b25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDaGVja2JveFN0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RDaGVja2JveFN0eWxl
KFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHBhaW50Q2hlY2tib3goY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVz
dFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFkanVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRSYWRpbyhjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwg
RWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRvbihj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVy
U3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludEJ1dHRvbihj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBwYWludFRleHRGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludElu
Zm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFRleHRGaWVs
ZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxl
bWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKGNv
bnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92
ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFRleHRB
cmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVj
dCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0TWVu
dUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RNZW51TGlzdEJ1
dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFy
dFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9u
UGFydChjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uUGFy
dFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29u
c3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZl
ciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNlYXJjaEZpZWxkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNlYXJjaEZpZWxk
U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJl
bmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvbihjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RTZWFyY2hG
aWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1
dHRvbihjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0
b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29u
c3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OworICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29s
dmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBw
YWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhaW50U2xpZGVy
VHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5
bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCi0gICAgdmlydHVh
bCBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBp
bnQgc2xpZGVyVGlja09mZnNldEZyb21UcmFja0NlbnRlcigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBzbGlkZXJUaWNrU25hcHBpbmdUaHJlc2hvbGQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBMYXlvdXRVbml0IHNsaWRlclRpY2tTbmFwcGluZ1RocmVzaG9sZCgpIGNvbnN0IG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNEYXRhTGlz
dFVJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIHBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1
c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0Rm9udFNpemUoaW50IGZvbnRzaXplKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIm
LCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgcGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9u
UmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIo
UmVuZGVyUHJvZ3Jlc3MmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFByb2dyZXNz
QmFyU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgcGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgZG91YmxlIGFu
aW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihS
ZW5kZXJQcm9ncmVzcyYpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAg
IHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBTdHJpbmcgbWVkaWFDb250cm9sc1NjcmlwdCgpIG92ZXJyaWRlOworICAgIFN0cmlu
ZyBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBtZWRpYUNv
bnRyb2xzU2NyaXB0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCiAgICAgdm9pZCBzZXRU
aGVtZVBhdGgoY29uc3QgU3RyaW5nJik7CkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0ZToKICAg
ICB9CiAKICAgICAvLyBTeXN0ZW0gZm9udHMuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hl
ZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlELCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3Jp
cHRpb24oQ1NTVmFsdWVJRCwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgQUxXQVlTX0lOTElORSBFY29yZV9FdmFzKiBjYW52YXMoKSBjb25zdCB7IHJldHVy
biBtX2NhbnZhcy5nZXQoKTsgfQogICAgIEFMV0FZU19JTkxJTkUgRXZhc19PYmplY3QqIGVkamUo
KSBjb25zdCB7IHJldHVybiBtX2VkamUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lR3RrLmgKaW5kZXggZDE5MzY3MjI2ZDdhNTk1MWQ5NjI2MjI3YjEzZDMyZTQx
YzVhOTU5Mi4uMzQ3MTViZjBlMmI4NGE0ZTJhNDA3ZTIyYmQ5MzM3MGY1OTczODJmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lR3RrLmgKQEAgLTM5LDE0NiArMzksMTQ2
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICAvLyBSZXR1cm5z
IHNpemUgb2Ygb25lIHNsaWRlciB0aWNrIG1hcmsgZm9yIGEgaG9yaXpvbnRhbCB0cmFjay4KICAg
ICAvLyBGb3IgdmVydGljYWwgdHJhY2tzIHdlIHJvdGF0ZSBpdCBhbmQgdXNlIGl0LiBpLmUuIFdp
ZHRoIGlzIGFsd2F5cyBsZW5ndGggYWxvbmcgdGhlIHRyYWNrLgotICAgIHZpcnR1YWwgSW50U2l6
ZSBzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIEludFNpemUgc2xpZGVyVGlj
a1NpemUoKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBSZXR1cm5zIHRoZSBkaXN0YW5jZSBvZiBz
bGlkZXIgdGljayBvcmlnaW4gZnJvbSB0aGUgc2xpZGVyIHRyYWNrIGNlbnRlci4KLSAgICB2aXJ0
dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBvdmVycmlk
ZTsKICNlbmRpZgogCiBwcml2YXRlOgogICAgIC8vIFN5c3RlbSBmb250cy4KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnRD
YXNjYWRlRGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNhY2hl
ZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlELCBGb250Q2FzY2FkZURlc2NyaXB0aW9u
JikgY29uc3Qgb3ZlcnJpZGU7CiAKIHB1YmxpYzoKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIK
IAogICAgIC8vIEEgbWV0aG9kIGFza2luZyBpZiB0aGUgdGhlbWUncyBjb250cm9scyBhY3R1YWxs
eSBjYXJlIGFib3V0IHJlZHJhd2luZyB3aGVuIGhvdmVyZWQuCi0gICAgdmlydHVhbCBib29sIHN1
cHBvcnRzSG92ZXIoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRo
ZSB0aGVtZSBpcyBhYmxlIHRvIGRyYXcgdGhlIGZvY3VzIHJpbmcuCi0gICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9sIGNoYW5nZXMgaXRz
IHRpbnQgd2hlbiB0aGUgd2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAgdmlydHVhbCBib29s
IGNvbnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0JikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2luZyBpZiBhbnkgY29u
dHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCi0gICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmVwYWludFJlY3QoY29uc3QgUmVuZGVyT2JqZWN0
JiwgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RSZXBhaW50UmVjdChjb25z
dCBSZW5kZXJPYmplY3QmLCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAogICAgIC8vIEEgbWV0aG9k
IHRvIG9idGFpbiB0aGUgYmFzZWxpbmUgcG9zaXRpb24gZm9yIGEgImxlYWYiIGNvbnRyb2wuICBU
aGlzIHdpbGwgb25seSBiZSB1c2VkIGlmIGEgYmFzZWxpbmUKICAgICAvLyBwb3NpdGlvbiBjYW5u
b3QgYmUgZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgY2hpbGQgY29udGVudC4gQ2hlY2tib3hlcyBh
bmQgcmFkaW8gYnV0dG9ucyBhcmUgZXhhbXBsZXMgb2YKICAgICAvLyBjb250cm9scyB0aGF0IG5l
ZWQgdG8gZG8gdGhpcy4KLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKGNvbnN0IFJl
bmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBiYXNlbGluZVBvc2l0aW9uKGNvbnN0
IFJlbmRlckJveCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVj
dGlvbiBjb2xvci4KLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3Ig
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gTGlzdCBCb3ggc2VsZWN0aW9uIGNv
bG9yCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
QWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9u
Rm9yZWdyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1JbmFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBDb2xvciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFs
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIGNhcmV0QmxpbmtJbnRlcnZhbCgpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpIG92ZXJyaWRlOwog
CiAgICAgLy8gU3lzdGVtIGNvbG9ycy4KLSAgICB2aXJ0dWFsIENvbG9yIHN5c3RlbUNvbG9yKENT
U1ZhbHVlSUQpIGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHN5c3RlbUNvbG9yKENTU1ZhbHVl
SUQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHBvcHNNZW51QnlTcGFjZU9y
UmV0dXJuKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcG9wc01l
bnVCeVNwYWNlT3JSZXR1cm4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICNp
ZiBFTkFCTEUoVklERU8pCi0gICAgdmlydHVhbCBTdHJpbmcgZXh0cmFNZWRpYUNvbnRyb2xzU3R5
bGVTaGVldCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJv
bHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Nsb3NlZENhcHRpb25pbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgbWVkaWFDb250
cm9sc1NjcmlwdCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBleHRyYU1lZGlhQ29udHJvbHNTdHls
ZVNoZWV0KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50
VGltZShmbG9hdCBjdXJyZW50VGltZSwgZmxvYXQgZHVyYXRpb24pIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIFN0cmluZyBtZWRpYUNvbnRyb2xzU2NyaXB0KCkgb3ZlcnJpZGU7CiAK
ICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdmlydHVhbCBTdHJpbmcgZXh0cmFGdWxs
U2NyZWVuU3R5bGVTaGVldCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBleHRyYUZ1bGxTY3JlZW5T
dHlsZVNoZWV0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKICNlbmRpZgogCi0gICAgdmlydHVhbCBib29s
IHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcihIVE1MSW5wdXRFbGVtZW50JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoSFRNTElucHV0RWxl
bWVudCYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgflJlbmRlclRo
ZW1lR3RrKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDaGVja2JveFNp
emUoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFJhZGlvKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJl
Y3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmFkaW9TaXplKFJlbmRlclN0eWxl
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFJhZGlvKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVs
ZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgYWRqdXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRCdXR0b24oY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRUZXh0Rmll
bGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdSaWdodChj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHBvcHVw
SW50ZXJuYWxQYWRkaW5nVG9wKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oY29uc3QgUmVuZGVyU3R5
bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdMZWZ0KGNv
bnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHBvcHVwSW50ZXJuYWxQ
YWRkaW5nUmlnaHQoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQg
cG9wdXBJbnRlcm5hbFBhZGRpbmdUb3AoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBpbnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdCb3R0b20oY29uc3QgUmVuZGVyU3R5bGUm
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIFRoZSBNYWMgcG9ydCBkaWZmZXJlbnRpYXRlcyBi
ZXR3ZWVuIHRoZSAibWVudSBsaXN0IiBhbmQgdGhlICJtZW51IGxpc3QgYnV0dG9uLiIKICAgICAv
LyBUaGUgZm9ybWVyIGlzIHVzZWQgd2hlbiBhIG1lbnUgbGlzdCBidXR0b24gaGFzIGJlZW4gc3R5
bGVkLiBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlCiAgICAgLy8gQXF1YSB0aGVtZWQgY29udHJvbHMg
d2hlbmV2ZXIgcG9zc2libGUuIFdlIGFsd2F5cyB3YW50IHRvIHVzZSBHVEsrIHRoZW1pbmcsIHNv
CiAgICAgLy8gd2UgZG9uJ3QgbWFpbnRhaW4gdGhpcyBkaWZmZXJlbnRpYXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxl
JiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51
TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJl
bmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRv
blN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludE1l
bnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyQm94JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0
U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVu
ZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZChjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5k
ZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhaW50U2VhcmNo
RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVj
dCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0
b24oY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUoU3R5
bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgcGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24oY29uc3QgUmVuZGVyQm94JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIGFkanVzdFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJl
bmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBw
YWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNlYXJjaEZp
ZWxkQ2FuY2VsQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVu
dCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRv
bihjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRTbGlkZXJU
cmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgYm9vbCBwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0
U2xpZGVyVGh1bWJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50Kikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwg
RWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRl
clRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBv
dmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2aXJ0dWFsIGJvb2wgaGFzT3duRGlz
YWJsZWRTdGF0ZUhhbmRsaW5nRm9yKENvbnRyb2xQYXJ0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oY29uc3QgUmVuZGVyT2JqZWN0
JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBwYWludE1lZGlhUGxheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQ
YWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50TWVkaWFNdXRlQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNl
ZWtCYWNrQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNlZWtGb3J3
YXJkQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRlclRyYWNr
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVNsaWRlclRodW1iKGNvbnN0IFJl
bmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnRNZWRpYUN1cnJlbnRUaW1lKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBib29sIGhhc093
bkRpc2FibGVkU3RhdGVIYW5kbGluZ0ZvcihDb250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwYWludE1lZGlhRnVsbHNjcmVlbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWlu
dE1lZGlhUGxheUJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludE1lZGlhTXV0ZUJ1dHRvbihj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgYm9vbCBwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oY29uc3QgUmVuZGVyT2Jq
ZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIGJv
b2wgcGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBib29sIHBhaW50TWVk
aWFTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludE1lZGlhU2xpZGVyVGh1bWIoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJy
aWRlOworICAgIGJvb2wgcGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBi
b29sIHBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVtYihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludE1l
ZGlhQ3VycmVudFRpbWUoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRNZWRpYVRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAg
ICBib29sIHBhaW50TWVkaWFUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbihjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5k
aWYKICNlbmRpZgogCi0gICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxG
b3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3Mm
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJvZ3Jlc3NCYXJTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoY29uc3QgUmVuZGVyT2JqZWN0Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIGRvdWJsZSBh
bmltYXRpb25SZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIo
UmVuZGVyUHJvZ3Jlc3MmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFByb2dyZXNz
QmFyU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgcGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludElu
bmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25TdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCosIGNvbnN0IEZvbnRDYXNj
YWRlJiwgaW50IHdpZHRoLCBib29sIG11bHRpcGxlRmlsZXNBbGxvd2VkKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqLCBjb25z
dCBGb250Q2FzY2FkZSYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRUZXh0SW5wdXRCb3JkZXJzKFJlbmRl
clN0eWxlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKaW5k
ZXggM2ViZmM2NTk1ZTRlMjM5MDY1OWQ2YWExYzNiMDI4NTg3ZDNlMTEyYy4uMzA3ZmYxODZjOWEz
MTM2YTUwNWU2M2VkNjE4ZjE5YjMwYjE3MzExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lSU9TLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgUmVuZGVyVGhlbWVJT1Mg
ZmluYWwgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVu
ZGVyVGhlbWU+IGNyZWF0ZSgpOwogCi0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRp
bmdSaWdodChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGludCBwb3B1
cEludGVybmFsUGFkZGluZ1JpZ2h0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBzdGF0aWMgdm9pZCBhZGp1c3RSb3VuZEJvcmRlclJhZGl1cyhSZW5kZXJTdHlsZSYs
IFJlbmRlckJveCYpOwogCkBAIC00OCw2NiArNDgsNjYgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyB2b2lkIHNldENvbnRlbnRTaXplQ2F0ZWdvcnkoY29uc3QgU3RyaW5nJik7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mIGNhY2hl
ZFN5c3RlbUZvbnREZXNjcmlwdGlvbihDU1NWYWx1ZUlEIHN5c3RlbUZvbnRJRCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZFN5c3RlbUZvbnREZXNjcmlwdGlv
bihDU1NWYWx1ZUlELCBGb250Q2FzY2FkZURlc2NyaXB0aW9uJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJCb3gmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBGb250Q2FzY2FkZURlc2NyaXB0aW9uJiBjYWNoZWRTeXN0ZW1Gb250RGVz
Y3JpcHRpb24oQ1NTVmFsdWVJRCBzeXN0ZW1Gb250SUQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnRDYXNj
YWRlRGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQgYmFzZWxpbmVQb3NpdGlv
bihjb25zdCBSZW5kZXJCb3gmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBCb3JkZXJEYXRhJiwgY29u
c3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzQ29udHJvbFN0eWxlZChjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IEJvcmRlckRhdGEmLCBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91bmQsIGNvbnN0
IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gTWV0aG9k
cyBmb3IgZWFjaCBhcHBlYXJhbmNlIHZhbHVlLgotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RDaGVj
a2JveFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveERlY29yYXRpb25zKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGFkanVzdENoZWNrYm94U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0
eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRDaGVja2JveERl
Y29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RSYWRpb1N0eWxlKFN0
eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRSYWRpb0RlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFk
anVzdFJhZGlvU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRSYWRpb0RlY29yYXRpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVy
U3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFB1c2hCdXR0
b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJ1dHRvblNpemUoUmVu
ZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0
eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIHBhaW50QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRQdXNo
QnV0dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnV0dG9uU2l6ZShSZW5kZXJT
dHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50RmlsZVVwbG9h
ZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGlucHV0UmVuZGVyZXIsIGNvbnN0
IFJlbmRlck9iamVjdCYgYnV0dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmLCBJY29uKiwgRmlsZVVwbG9hZERlY29yYXRpb25zKSBvdmVycmlkZTsKKyAgICBib29s
IHBhaW50RmlsZVVwbG9hZEljb25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJPYmplY3QmIGlucHV0
UmVuZGVyZXIsIGNvbnN0IFJlbmRlck9iamVjdCYgYnV0dG9uUmVuZGVyZXIsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEludFJlY3QmLCBJY29uKiwgRmlsZVVwbG9hZERlY29yYXRpb25zKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZERlY29yYXRpb25zKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhRGVjb3JhdGlvbnMoY29uc3QgUmVu
ZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7
CisgICAgYm9vbCBwYWludFRleHRGaWVsZERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYs
IGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wg
cGFpbnRUZXh0QXJlYURlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50
SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
anVzdE1lbnVMaXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxl
bWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJT
dHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRT
bGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJ
bnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxl
UmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHBhaW50U2xpZGVyVHJhY2soY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYkRlY29yYXRpb25zKGNvbnN0IFJlbmRlck9i
amVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHBhaW50U2xpZGVyVGh1bWJEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAK
ICAgICAvLyBSZXR1cm5zIHRoZSByZXBlYXQgaW50ZXJ2YWwgb2YgdGhlIGFuaW1hdGlvbiBmb3Ig
dGhlIHByb2dyZXNzIGJhci4KLSAgICB2aXJ0dWFsIGRvdWJsZSBhbmltYXRpb25SZXBlYXRJbnRl
cnZhbEZvclByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
ZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jl
c3MmKSBjb25zdCBvdmVycmlkZTsKICAgICAvLyBSZXR1cm5zIHRoZSBkdXJhdGlvbiBvZiB0aGUg
YW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgotICAgIHZpcnR1YWwgZG91YmxlIGFuaW1h
dGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9n
cmVzcyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NC
YXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoREFUQUxJU1RfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIEludFNpemUgc2xpZGVyVGlja1NpemUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRy
YWNrQ2VudGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50U2l6ZSBzbGlkZXJUaWNrU2l6ZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIGludCBzbGlkZXJUaWNrT2Zmc2V0RnJvbVRyYWNrQ2VudGVy
KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFy
Y2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb25z
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNlYXJjaEZpZWxkU3R5bGUoU3R5bGVSZXNvbHZlciYs
IFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRT
ZWFyY2hGaWVsZERlY29yYXRpb25zKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5m
byYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCi0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMHg0RDFBMUExQTsgfQorICAgIENvbG9yIHBsYXRmb3Jt
VGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAweDREMUExQTFBOyB9
CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbihIVE1MSW5w
dXRFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEhhdmVD
YXBzTG9ja0luZGljYXRvcihIVE1MSW5wdXRFbGVtZW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBzaG91bGRIYXZlU3BpbkJ1dHRvbihIVE1MSW5wdXRFbGVtZW50JikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzaG91bGRIYXZlQ2Fwc0xvY2tJbmRpY2F0b3IoSFRNTElucHV0RWxlbWVu
dCYpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwgU3Ry
aW5nIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgbWVkaWFDb250cm9sc1NjcmlwdCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBtZWRpYUNvbnRy
b2xzU3R5bGVTaGVldCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBtZWRpYUNvbnRyb2xzU2NyaXB0
KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2
YXRlOgogICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvcigpIGNvbnN0OwogICAgIEZsb2F0UmVj
dCBhZGRSb3VuZGVkQm9yZGVyQ2xpcChjb25zdCBSZW5kZXJPYmplY3QmIGJveCwgR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xv
cihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICBDb2xvciBzeXN0ZW1Db2xvcihDU1NW
YWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX21lZGlhQ29udHJvbHNTY3Jp
cHQ7CiAgICAgU3RyaW5nIG1fbWVkaWFDb250cm9sc1N0eWxlU2hlZXQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggOGM3NGViMTA3ZDk3MDFiYmUzNzlj
ZTg5Y2NiZjM4YTcxZGYwY2E2ZC4uNmFiNzhjYTU1OGRhMGIyMTU3NjZjMmFhNDhlYjlmZWUzNTY1
NjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAt
NTU2LDcgKzU1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3N0eWxlKHN0eWxlKQogICAgIHsK
ICAgICB9Ci0gICAgdmlydHVhbCBmbG9hdCBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHN0cmlu
ZykgY29uc3Qgb3ZlcnJpZGUKKyAgICBmbG9hdCBtZWFzdXJlVGV4dChjb25zdCBTdHJpbmcmIHN0
cmluZykgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFRleHRSdW4gcnVuID0gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oJm1fcmVuZGVyT2JqZWN0LCBtX2ZvbnQsIHN0cmluZywg
bV9zdHlsZSwgQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24s
IERlZmF1bHRUZXh0UnVuRmxhZ3MpOwogICAgICAgICByZXR1cm4gbV9mb250LndpZHRoKHJ1bik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oCmluZGV4IDg5Y2NhNDg1
NjJlNjk1ZjRiYTBhMTgxYTZlYzBkODc3NTAzNjA1NzkuLjcwNDMzMGQzZTEyZjUyMmI0NjQyYjE4
MzdiNmNkYTBiNTQ3OTYyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZU1hYy5oCkBAIC00NSw1NSArNDUsNTUgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVuZGVy
VGhlbWU+IGNyZWF0ZSgpOwogCiAgICAgLy8gQSBtZXRob2QgYXNraW5nIGlmIHRoZSBjb250cm9s
IGNoYW5nZXMgaXRzIHRpbnQgd2hlbiB0aGUgd2luZG93IGhhcyBmb2N1cyBvciBub3QuCi0gICAg
dmlydHVhbCBib29sIGNvbnRyb2xTdXBwb3J0c1RpbnRzKGNvbnN0IFJlbmRlck9iamVjdCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgY29udHJvbFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVy
T2JqZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBBIGdlbmVyYWwgbWV0aG9kIGFza2lu
ZyBpZiBhbnkgY29udHJvbCB0aW50aW5nIGlzIHN1cHBvcnRlZCBhdCBhbGwuCi0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UmVwYWludFJlY3QoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RSZXBh
aW50UmVjdChjb25zdCBSZW5kZXJPYmplY3QmLCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBC
b3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3ImIGJhY2tncm91bmRDb2xv
cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NvbnRyb2xTdHlsZWQoY29uc3QgUmVuZGVy
U3R5bGUmLCBjb25zdCBCb3JkZXJEYXRhJiwgY29uc3QgRmlsbExheWVyJiwgY29uc3QgQ29sb3Im
IGJhY2tncm91bmRDb2xvcikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENvbG9yIHBs
YXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9y
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtQWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hT
ZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENv
bG9yIHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1BY3RpdmVTZWxlY3Rpb25CYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZv
cm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBDb2xvciBwbGF0Zm9y
bUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgc2Nyb2xsYmFyQ29udHJvbFNpemVGb3JQ
YXJ0KENvbnRyb2xQYXJ0KSBvdmVycmlkZSB7IHJldHVybiBTbWFsbFNjcm9sbGJhcjsgfQorICAg
IFNjcm9sbGJhckNvbnRyb2xTaXplIHNjcm9sbGJhckNvbnRyb2xTaXplRm9yUGFydChDb250cm9s
UGFydCkgb3ZlcnJpZGUgeyByZXR1cm4gU21hbGxTY3JvbGxiYXI7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGxhdGZv
cm1Db2xvcnNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1N
ZW51TGlzdFNpemUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBpbnQg
bWluaW11bU1lbnVMaXN0U2l6ZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSYsIEVs
ZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNsaWRlclRodW1iU2l6ZShS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShEQVRB
TElTVF9FTEVNRU5UKQotICAgIHZpcnR1YWwgSW50U2l6ZSBzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50
ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIHNsaWRlclRpY2tTaXplKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgaW50IHNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5hbFBhZGRp
bmdMZWZ0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBp
bnQgcG9wdXBJbnRlcm5hbFBhZGRpbmdSaWdodChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgcG9wdXBJbnRlcm5h
bFBhZGRpbmdCb3R0b20oY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFBvcHVwTWVudVN0eWxlOjpQb3B1cE1lbnVTaXplIHBvcHVwTWVudVNpemUoY29uc3Qg
UmVuZGVyU3R5bGUmLCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHBvcHVwSW50
ZXJuYWxQYWRkaW5nTGVmdChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IGludCBwb3B1cEludGVybmFsUGFkZGluZ1JpZ2h0KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IHBvcHVwSW50ZXJuYWxQYWRkaW5nQm90dG9t
KGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUG9wdXBNZW51U3R5bGU6
OlBvcHVwTWVudVNpemUgcG9wdXBNZW51U2l6ZShjb25zdCBSZW5kZXJTdHlsZSYsIEludFJlY3Qm
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwb3BzTWVudUJ5QXJyb3dLZXlz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcG9wc01lbnVCeUFy
cm93S2V5cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIEVOQUJMRShN
RVRFUl9FTEVNRU5UKQotICAgIHZpcnR1YWwgSW50U2l6ZSBtZXRlclNpemVGb3JCb3VuZHMoY29u
c3QgUmVuZGVyTWV0ZXImLCBjb25zdCBJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01l
dGVyKENvbnRyb2xQYXJ0KSBjb25zdCBvdmVycmlkZTsKKyAgICBJbnRTaXplIG1ldGVyU2l6ZUZv
ckJvdW5kcyhjb25zdCBSZW5kZXJNZXRlciYsIGNvbnN0IEludFJlY3QmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNNZXRlcihD
b250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIC8vIFJldHVybnMgdGhl
IHJlcGVhdCBpbnRlcnZhbCBvZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgot
ICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIo
UmVuZGVyUHJvZ3Jlc3MmKSBjb25zdCBvdmVycmlkZTsKKyAgICBkb3VibGUgYW5pbWF0aW9uUmVw
ZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyYpIGNvbnN0IG92ZXJyaWRl
OwogICAgIC8vIFJldHVybnMgdGhlIGR1cmF0aW9uIG9mIHRoZSBhbmltYXRpb24gZm9yIHRoZSBw
cm9ncmVzcyBiYXIuCi0gICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9n
cmVzc0JhcihSZW5kZXJQcm9ncmVzcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW50
UmVjdCBwcm9ncmVzc0JhclJlY3RGb3JCb3VuZHMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGRvdWJsZSBhbmltYXRpb25EdXJhdGlvbkZv
clByb2dyZXNzQmFyKFJlbmRlclByb2dyZXNzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgSW50UmVj
dCBwcm9ncmVzc0JhclJlY3RGb3JCb3VuZHMoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgSW50
UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQ29udHJvbHMgY29sb3IgdmFsdWVzIHJl
dHVybmVkIGZyb20gcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpLiBzeXN0ZW1Db2xvcigpIHdpbGwg
YmUgdXNlZCB3aGVuIGZhbHNlLgogICAgIGJvb2wgdXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3Io
KSBjb25zdDsKQEAgLTEwNSw3NCArMTA1LDc0IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5S
ZW5kZXJUaGVtZU1hYygpOwogCiAgICAgLy8gU3lzdGVtIGZvbnRzLgotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDYWNoZWRTeXN0ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udENhc2Nh
ZGVEZXNjcmlwdGlvbiYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3lz
dGVtRm9udERlc2NyaXB0aW9uKENTU1ZhbHVlSUQsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mKSBj
b25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFTykKICAgICAvLyBNZWRpYSBjb250cm9s
cwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgbWVkaWFDb250cm9sc1NjcmlwdCgpIG92ZXJyaWRlOworICAg
IFN0cmluZyBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpIG92ZXJyaWRlOworICAgIFN0cmluZyBt
ZWRpYUNvbnRyb2xzU2NyaXB0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQotICAgIHZpcnR1YWwgU3RyaW5nIGltYWdlQ29udHJvbHNTdHlsZVNoZWV0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGltYWdlQ29udHJvbHNTdHlsZVNoZWV0KCkg
Y29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1NlbGVj
dGlvbkZvcmVncm91bmRDb2xvcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgc3VwcG9ydHNTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3JzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxkU3R5bGUoU3R5bGVSZXNv
bHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
cGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RUZXh0RmllbGRTdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRUZXh0QXJlYShjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRl
ck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgYWRqdXN0VGV4dEFyZWFTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUm
LCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51
TGlzdChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShTdHls
ZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBwYWludE1lbnVMaXN0KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0TWVudUxpc3RTdHls
ZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0
IFJlbmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2
ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBh
aW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdE1lbnVM
aXN0QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFByb2dyZXNzQmFyU3R5bGUo
U3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBwYWludFByb2dyZXNzQmFyKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVz
dFByb2dyZXNzQmFyU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRQcm9ncmVzc0Jhcihjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5kZXJPYmplY3QmLCBjb25z
dCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxl
bWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhjb25zdCBS
ZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBhZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJT
dHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0
IEludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBwYWludFNsaWRlclRodW1iKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNs
aWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCopIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoY29uc3Qg
UmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXIm
LCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhaW50
U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHls
ZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJl
c29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyQm94Jiwg
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRq
dXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5
bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFNlYXJjaEZpZWxk
Q2FuY2VsQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZERl
Y29yYXRpb25QYXJ0U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiwgRWxlbWVudCop
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFNlYXJjaEZpZWxkRGVjb3Jh
dGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uUGFy
dFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHBhaW50U2VhcmNoRmllbGREZWNvcmF0aW9uUGFydChjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBh
cnQoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRT
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBwYWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0
IFJlbmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShT
dHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRl
ckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhaW50U2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYs
IGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNDbG9zZWRDYXB0aW9uaW5nKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
SGF2ZUNhcHNMb2NrSW5kaWNhdG9yKEhUTUxJbnB1dEVsZW1lbnQmKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIHNob3VsZEhhdmVDYXBzTG9ja0luZGljYXRvcihIVE1MSW5wdXRFbGVtZW50Jikg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbmFwc2hvdHRlZFBsdWdp
bk92ZXJsYXkoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50
UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFpbnRTbmFwc2hvdHRlZFBsdWdpbk92ZXJsYXko
Y29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92
ZXJyaWRlOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIExh
eW91dFNpemUgYXR0YWNobWVudEludHJpbnNpY1NpemUoY29uc3QgUmVuZGVyQXR0YWNobWVudCYp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IGF0dGFjaG1lbnRCYXNlbGluZShjb25z
dCBSZW5kZXJBdHRhY2htZW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBh
aW50QXR0YWNobWVudChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgTGF5b3V0U2l6ZSBhdHRhY2htZW50SW50cmluc2lj
U2l6ZShjb25zdCBSZW5kZXJBdHRhY2htZW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGF0
dGFjaG1lbnRCYXNlbGluZShjb25zdCBSZW5kZXJBdHRhY2htZW50JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBwYWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCBTdHJpbmcgZmlsZUxpc3ROYW1lRm9yV2lkdGgoY29uc3QgRmlsZUxpc3QqLCBj
b25zdCBGb250Q2FzY2FkZSYsIGludCB3aWR0aCwgYm9vbCBtdWx0aXBsZUZpbGVzQWxsb3dlZCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGZpbGVMaXN0TmFtZUZvcldpZHRoKGNvbnN0IEZp
bGVMaXN0KiwgY29uc3QgRm9udENhc2NhZGUmLCBpbnQgd2lkdGgsIGJvb2wgbXVsdGlwbGVGaWxl
c0FsbG93ZWQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xv
cihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICBDb2xvciBzeXN0ZW1Db2xvcihDU1NW
YWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIEdldCB0aGUgY29udHJvbCBzaXplIGJh
c2VkIG9mZiB0aGUgZm9udC4gVXNlZCBieSBzb21lIG9mIHRoZSBjb250cm9scyAobGlrZSBidXR0
b25zKS4KICAgICBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplRm9yRm9udChjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0OwpAQCAtMjIyLDkgKzIyMiw5IEBAIHByaXZhdGU6CiAgICAgY29uc3QgaW50
KiBwcm9ncmVzc0Jhck1hcmdpbnMoTlNDb250cm9sU2l6ZSkgY29uc3Q7CiAKICNpZiBFTkFCTEUo
U0VSVklDRV9DT05UUk9MUykKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRJbWFnZUNvbnRyb2xzQnV0
dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VDb250cm9sc0J1dHRvblNpemUo
Y29uc3QgUmVuZGVyT2JqZWN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnRTaXpl
IGltYWdlQ29udHJvbHNCdXR0b25Qb3NpdGlvbk9mZnNldCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgcGFpbnRJbWFnZUNvbnRyb2xzQnV0dG9uKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBJbnRTaXplIGltYWdl
Q29udHJvbHNCdXR0b25TaXplKGNvbnN0IFJlbmRlck9iamVjdCYpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIEludFNpemUgaW1hZ2VDb250cm9sc0J1dHRvblBvc2l0aW9uT2Zmc2V0KCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBOU1NlcnZpY2VzUm9sbG92ZXJCdXR0b25DZWxsICpzZXJ2aWNlc1JvbGxv
dmVyQnV0dG9uQ2VsbCgpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZVdpbi5oCmluZGV4IDBhN2IxOGRlOWZhNTA5MDc1ODliMjQxZmJiOTlhZThiMTNi
NWI3NWQuLjhmOWMxZDI1NzcwMTQwMWZmY2FmMDg0YTI2N2YyZjZlMDA4OGI5M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5oCkBAIC01MSw4NyArNTEsODcgQEAg
Y2xhc3MgUmVuZGVyVGhlbWVXaW4gZmluYWw6IHB1YmxpYyBSZW5kZXJUaGVtZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJp
bmcgZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGV4dHJhRGVm
YXVsdFN0eWxlU2hlZXQoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZXh0cmFRdWlya3NTdHlsZVNo
ZWV0KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBBIG1ldGhvZCBhc2tpbmcgaWYgdGhlIHRoZW1lJ3Mg
Y29udHJvbHMgYWN0dWFsbHkgY2FyZSBhYm91dCByZWRyYXdpbmcgd2hlbiBob3ZlcmVkLgotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c0hvdmVyKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFj
a2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9y
bUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIENvbG9yIHBsYXRmb3JtQWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQ29sb3Ig
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIENvbG9yIHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDb2xvciBzeXN0ZW1Db2xv
cihDU1NWYWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKKyAgICBDb2xvciBzeXN0ZW1Db2xvcihDU1NW
YWx1ZUlEKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludENoZWNrYm94
KGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0
JiByKSBvdmVycmlkZQorICAgIGJvb2wgcGFpbnRDaGVja2JveChjb25zdCBSZW5kZXJPYmplY3Qm
IG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikgb3ZlcnJpZGUKICAgICB7
IHJldHVybiBwYWludEJ1dHRvbihvLCBpLCByKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVj
a2JveFNpemUoUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldENoZWNr
Ym94U2l6ZShSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29s
IHBhaW50UmFkaW8oY29uc3QgUmVuZGVyT2JqZWN0JiBvLCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHIpIG92ZXJyaWRlCisgICAgYm9vbCBwYWludFJhZGlvKGNvbnN0IFJlbmRl
ck9iamVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKSBvdmVycmlk
ZQogICAgIHsgcmV0dXJuIHBhaW50QnV0dG9uKG8sIGksIHIpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0IG92ZXJyaWRlCisgICAgdm9p
ZCBzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdCBvdmVycmlkZQogICAgIHsg
cmV0dXJuIHNldENoZWNrYm94U2l6ZShzdHlsZSk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludEJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0SW5uZXJTcGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRl
clN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dElubmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RJbm5lclNwaW5CdXR0b25T
dHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihjb25zdCBSZW5kZXJPYmplY3QmLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRUZXh0RmllbGQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFRleHRGaWVsZChj
b25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9i
amVjdCYgbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBGbG9hdFJlY3QmIHIpIG92ZXJyaWRl
CisgICAgYm9vbCBwYWludFRleHRBcmVhKGNvbnN0IFJlbmRlck9iamVjdCYgbywgY29uc3QgUGFp
bnRJbmZvJiBpLCBjb25zdCBGbG9hdFJlY3QmIHIpIG92ZXJyaWRlCiAgICAgeyByZXR1cm4gcGFp
bnRUZXh0RmllbGQobywgaSwgcik7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZW51TGlz
dFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZW51TGlzdChjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVy
U3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RNZW51TGlz
dFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RN
ZW51TGlzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9u
RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxv
YXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgRmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBwYWludFNsaWRlclRyYWNrKGNvbnN0IFJlbmRlck9iamVjdCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICBib29sIHBhaW50
U2xpZGVyVGh1bWIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRl
clN0eWxlJiwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHBv
cHVwT3B0aW9uU3VwcG9ydHNUZXh0SW5kZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgcG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2VhcmNoRmll
bGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmllbGQoY29uc3QgUmVuZGVyT2Jq
ZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFNlYXJjaEZpZWxkKGNvbnN0
IFJlbmRlck9iamVjdCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxl
KFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbihjb25zdCBSZW5k
ZXJCb3gmLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBS
ZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhaW50U2Vh
cmNoRmllbGRDYW5jZWxCdXR0b24oY29uc3QgUmVuZGVyQm94JiwgY29uc3QgUGFpbnRJbmZvJiwg
Y29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmLCBF
bGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50U2VhcmNoRmll
bGREZWNvcmF0aW9uUGFydChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBQYWludEluZm8mLCBj
b25zdCBJbnRSZWN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5
bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBwYWludFNlYXJjaEZpZWxk
RGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgSW50UmVjdCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29s
dmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnQoY29uc3QgUmVuZGVy
Qm94JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZv
aWQgYWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblBhcnRTdHlsZShTdHlsZVJlc29s
dmVyJiwgUmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBw
YWludFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb25QYXJ0KGNvbnN0IFJlbmRlckJveCYsIGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwg
UmVuZGVyU3R5bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkanVzdFNlYXJj
aEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVs
ZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHBhaW50U2VhcmNoRmllbGRSZXN1bHRz
QnV0dG9uKGNvbnN0IFJlbmRlckJveCYsIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3Qm
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHRoZW1lQ2hhbmdlZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFk
anVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1l
bnQqKSBjb25zdCBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0VGV4dEZpZWxk
U3R5bGUoU3R5bGVSZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
IG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RUZXh0QXJlYVN0eWxlKFN0eWxl
UmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIGFkanVzdEJ1dHRvblN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHls
ZSYgc3R5bGUsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFkanVzdFRl
eHRGaWVsZFN0eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYgc3R5bGUsIEVsZW1lbnQq
KSBjb25zdCBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGFkanVzdFRleHRBcmVhU3R5bGUoU3R5bGVS
ZXNvbHZlciYsIFJlbmRlclN0eWxlJiBzdHlsZSwgRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlIHsg
fQogCiAgICAgc3RhdGljIHZvaWQgc2V0V2ViS2l0SXNCZWluZ1VubG9hZGVkKCk7CiAKICAgICBz
dGF0aWMgU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZShDRlN0cmluZ1JlZiBuYW1lLCBD
RlN0cmluZ1JlZiB0eXBlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzUmluZyhj
b25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNGb2N1
c1JpbmcoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShW
SURFTykKLSAgICB2aXJ0dWFsIFN0cmluZyBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIG1lZGlhQ29udHJvbHNTY3JpcHQoKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQoKSBvdmVycmlkZTsKKyAgICBTdHJp
bmcgbWVkaWFDb250cm9sc1NjcmlwdCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVURVJfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIEludFNpemUgbWV0ZXJTaXplRm9yQm91bmRzKGNv
bnN0IFJlbmRlck1ldGVyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c01ldGVyKENvbnRyb2xQYXJ0KSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWV0ZXJTdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5
bGUmLCBFbGVtZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhaW50TWV0
ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYp
IG92ZXJyaWRlOworICAgIEludFNpemUgbWV0ZXJTaXplRm9yQm91bmRzKGNvbnN0IFJlbmRlck1l
dGVyJiwgY29uc3QgSW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNN
ZXRlcihDb250cm9sUGFydCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGp1c3RNZXRlclN0
eWxlKFN0eWxlUmVzb2x2ZXImLCBSZW5kZXJTdHlsZSYsIEVsZW1lbnQqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIHBhaW50TWV0ZXIoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUGFpbnRJ
bmZvJiwgY29uc3QgSW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0x
NDUsNyArMTQ1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5SZW5kZXJUaGVtZVdpbigpOwog
CiAgICAgLy8gU3lzdGVtIGZvbnRzLgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDYWNoZWRTeXN0
ZW1Gb250RGVzY3JpcHRpb24oQ1NTVmFsdWVJRCwgRm9udENhc2NhZGVEZXNjcmlwdGlvbiYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQ2FjaGVkU3lzdGVtRm9udERlc2NyaXB0aW9u
KENTU1ZhbHVlSUQsIEZvbnRDYXNjYWRlRGVzY3JpcHRpb24mKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZvaWQgYWRkSW50cmluc2ljTWFyZ2lucyhSZW5kZXJTdHlsZSYpIGNvbnN0OwogICAgIHZv
aWQgY2xvc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
VFRDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWVFRDdWUuaAppbmRleCBh
OTkxMGNkNTBhMDk3MjFlZGQ0MTAwN2IxM2ZhZWMzNGJhNDVmYTQ4Li4zZWI0ZDJmNzU5YTFmNzU0
NDNmMWVhOTk2ZTNlMzc1YTRjOWJhYWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVlRUQ3VlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZUVEN1ZS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJWVFRDdWUoVlRU
Q3VlQm94JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZv
aWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgaXNPdXRzaWRlKCkgY29uc3Q7CiAgICAgYm9vbCByZWN0SXNXaXRoaW5Db250YWluZXIo
Y29uc3QgSW50UmVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZGVvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
aAppbmRleCAwYmY5MTU4OTAxZjMxYjQ5ZWQzMmFjY2E1NDI2NGMxZDQzZTRkNjkyLi4xMWQwZjM5
ZTQyMDVmZWEwMjYwZmYwMmQ0Yzc2MmJkZDE0NGM4ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlkZW8uaApAQCAtNTUsMzcgKzU1LDM3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgdm9pZCBtZWRpYUVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1l
bnQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgp
IG92ZXJyaWRlOworICAgIHZvaWQgaW50cmluc2ljU2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAg
ICBMYXlvdXRTaXplIGNhbGN1bGF0ZUludHJpbnNpY1NpemUoKTsKICAgICB2b2lkIHVwZGF0ZUlu
dHJpbnNpY1NpemUoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZElt
YWdlUHRyLCBjb25zdCBJbnRSZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Kikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
VmlkZW8iOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJWaWRlbyI7IH0KIAotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0xheWVy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZGVvKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgcmVxdWlyZXNM
YXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzVmlkZW8o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFpbnRSZXBsYWNlZChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2Vk
TG9naWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgID0gQ29tcHV0ZUFjdHVhbCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgbWluaW11
bVJlcGxhY2VkSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBjb21wdXRl
UmVwbGFjZWRMb2dpY2FsV2lkdGgoU2hvdWxkQ29tcHV0ZVByZWZlcnJlZCAgPSBDb21wdXRlQWN0
dWFsKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IG1pbmltdW1SZXBsYWNl
ZEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBvZmZzZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
TGF5b3V0VW5pdCBvZmZzZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IG9mZnNldExlZnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IG9mZnNldFRvcCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgb2Zmc2V0V2lkdGgoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRVbml0IG9mZnNldEhlaWdodCgpIGNvbnN0IG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICAgICB2b2lkIHVwZGF0ZVBsYXllcigpOwogCi0gICAgdmlydHVhbCBib29sIGZvcmVn
cm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3Qs
IHVuc2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGZvcmVn
cm91bmRJc0tub3duVG9CZU9wYXF1ZUluUmVjdChjb25zdCBMYXlvdXRSZWN0JiBsb2NhbFJlY3Qs
IHVuc2lnbmVkIG1heERlcHRoVG9UZXN0KSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFNp
emUgbV9jYWNoZWRJbWFnZVNpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3
LmgKaW5kZXggNDBhYTU4MjI5ODkyZTk2YzA0NmU2Y2NkODRkYWJlYTRlOGM3OThiOC4uMWIzYTFi
ZjVjMDEzOWZhNTNhZWY3NmI5ZTRiN2ZhYTU1OWRmYWM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5oCkBAIC01MCwxNyArNTAsMTcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGl0VGVzdChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQm
KTsKICAgICBib29sIGhpdFRlc3QoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBIaXRUZXN0
TG9jYXRpb24mLCBIaXRUZXN0UmVzdWx0Jik7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyVmlldyI7IH0KKyAgICBj
b25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclZp
ZXciOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29u
c3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZUxvZ2ljYWxXaWR0aCgpIG92ZXJyaWRlOworICAgIHZvaWQgY29tcHV0ZUxvZ2ljYWxIZWln
aHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExvZ2lj
YWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBM
YXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxIZWlnaHQoQXZhaWxhYmxlTG9naWNhbEhlaWdodFR5
cGUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbEhlaWdo
dChBdmFpbGFibGVMb2dpY2FsSGVpZ2h0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBU
aGUgc2FtZSBhcyB0aGUgRnJhbWVWaWV3J3MgbGF5b3V0SGVpZ2h0L2xheW91dFdpZHRoIGJ1dCB3
aXRoIG51bGwgY2hlY2sgZ3VhcmRzLgogICAgIGludCB2aWV3SGVpZ2h0KCkgY29uc3Q7CkBAIC03
NSwxNCArNzUsMTQgQEAgcHVibGljOgogCiAgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcoKSBjb25z
dCB7IHJldHVybiBtX2ZyYW1lVmlldzsgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHZpc3Vh
bE92ZXJmbG93UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBj
b21wdXRlUmVjdEZvclJlcGFpbnQoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCB2aXN1YWxPdmVyZmxvd1JlY3QoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRSZWN0IGNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBMYXlvdXRS
ZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHJlcGFpbnRSb290Q29u
dGVudHMoKTsKICAgICB2b2lkIHJlcGFpbnRWaWV3UmVjdGFuZ2xlKGNvbnN0IExheW91dFJlY3Qm
KSBjb25zdDsKICAgICB2b2lkIHJlcGFpbnRWaWV3QW5kQ29tcG9zaXRlZExheWVycygpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludEJveERlY29yYXRp
b25zKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBlbnVt
IFNlbGVjdGlvblJlcGFpbnRNb2RlIHsgUmVwYWludE5ld1hPUk9sZCwgUmVwYWludE5ld01pbnVz
T2xkLCBSZXBhaW50Tm90aGluZyB9OwogICAgIHZvaWQgc2V0U2VsZWN0aW9uKFJlbmRlck9iamVj
dCogc3RhcnQsIGludCBzdGFydFBvcywgUmVuZGVyT2JqZWN0KiBlbmQsIGludCBlbmRQb3MsIFNl
bGVjdGlvblJlcGFpbnRNb2RlID0gUmVwYWludE5ld1hPUk9sZCk7CkBAIC05NSw4ICs5NSw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhYnNvbHV0
ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRl
OwogCiAgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCgpIGNvbnN0OwogCkBAIC0xMzksNyArMTM5LDcg
QEAgcHVibGljOgogICAgIGJvb2wgbGF5b3V0U3RhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCA9PSAwICYmIG1fbGF5b3V0U3RhdGU7IH0KICAgICBM
YXlvdXRTdGF0ZSogbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dFN0YXRlLmdl
dCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0UmVz
dWx0JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUhpdFRl
c3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAK
ICAgICBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
TG9naWNhbEhlaWdodDsgfQogICAgIHZvaWQgc2V0UGFnZUxvZ2ljYWxIZWlnaHQoTGF5b3V0VW5p
dCBoZWlnaHQpCkBAIC0xOTgsNyArMTk4LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tUd29Q
YXNzTGF5b3V0Rm9yQXV0b0hlaWdodFJlZ2lvbnMoKSBjb25zdDsKICAgICBGbG93VGhyZWFkQ29u
dHJvbGxlciYgZmxvd1RocmVhZENvbnRyb2xsZXIoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHls
ZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAKICAgICBJbnRTaXplIHZpZXdwb3J0
U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdDsKIApAQCAtMjUzLDE1ICsyNTMsMTUgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxU
b0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBtYXBBYnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1T
dGF0ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc0NvbHVtbnMo
aW50IGRlc2lyZWRDb2x1bW5Db3VudCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXBMb2Nh
bFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQp
IGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBS
ZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgbWFwQWJzb2x1dGVU
b0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHJlcXVpcmVzQ29sdW1ucyhpbnQgZGVzaXJlZENvbHVtbkNvdW50
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVMYXlvdXRT
dGF0ZShMYXlvdXRTdGF0ZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVDb2x1bW5Db3Vu
dEFuZFdpZHRoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlQ29sdW1uQ291bnRBbmRXaWR0
aCgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRSZXBhaW50KGNvbnN0IExheW91dFJlY3Qm
KSBjb25zdDsKICAgICB2b2lkIGZsdXNoQWNjdW11bGF0ZWRSZXBhaW50UmVnaW9uKCkgY29uc3Q7
CkBAIC0zMDcsNyArMzA3LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGF5b3V0U3Rh
dGVEaXNhYmxlcjsKICAgICBmcmllbmQgY2xhc3MgU3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5l
cjsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94KCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQm94
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNwbGl0U2VsZWN0aW9uQmV0d2VlblN1YnRy
ZWVzKGNvbnN0IFJlbmRlck9iamVjdCogc3RhcnRSZW5kZXJlciwgaW50IHN0YXJ0UG9zLCBjb25z
dCBSZW5kZXJPYmplY3QqIGVuZFJlbmRlcmVyLCBpbnQgZW5kUG9zLCBTZWxlY3Rpb25SZXBhaW50
TW9kZSBibG9ja1JlcGFpbnRNb2RlKTsKICAgICB2b2lkIGNsZWFyU3VidHJlZVNlbGVjdGlvbihj
b25zdCBTZWxlY3Rpb25TdWJ0cmVlUm9vdCYsIFNlbGVjdGlvblJlcGFpbnRNb2RlLCBPbGRTZWxl
Y3Rpb25EYXRhJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyV2lkZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgK
aW5kZXggOWIwNzA3MTc1YzQyYjFkMjQxMTg1YTQ1ZjRkNjgzNWJjMDU2NjdmYy4uYTJhZmJkMjVi
YjQ5MGVjNDNiYTljMTUyNjI0ZTRjMTk2MmZlZDg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuaApAQCAtODEsMjQgKzgxLDI0IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBSZW5kZXJXaWRnZXQoSFRNTEZyYW1lT3duZXJFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
PiYmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZURp
ZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3Zl
cnJpZGUgZmluYWw7CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50
KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBub2Rl
QXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1
bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWly
ZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzV2lkZ2V0KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNXaWRnZXQoKSBjb25zdCBv
dmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQ
cmVmZXJyZWRXaWR0aHNSZWNhbGN1bGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAg
dmlydHVhbCBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsOworICAgIGJvb2wgbmVlZHNQcmVmZXJyZWRXaWR0aHNSZWNhbGN1bGF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGUgZmluYWw7CisgICAgUmVuZGVyQm94KiBlbWJlZGRlZENvbnRlbnRCb3goKSBjb25z
dCBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0
aW9uU3RhdGUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGFwVGVz
dFJlc3VsdChib29sKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHdpbGxCZURlc3Ryb3llZCgp
IG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3Rh
dGUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgc2V0T3ZlcmxhcFRlc3RSZXN1bHQoYm9vbCkg
b3ZlcnJpZGUgZmluYWw7CiAKICAgICBib29sIHNldFdpZGdldEdlb21ldHJ5KGNvbnN0IExheW91
dFJlY3QmKTsKICAgICBib29sIHVwZGF0ZVdpZGdldEdlb21ldHJ5KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCA5ODY4YjAwNmM3MDU5Y2RmZmJiNGMwYzhm
ZTlhN2ZkMTA4Zjg5ODI1Li5iNzVhODhkNDk4YWM1NGE5MDJmODA3ZDlhYmIyNzA1MThiZTg3OWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIFJvb3RJbmxpbmVCb3gqIG5leHRSb290Qm94KCkgY29uc3Q7CiAg
ICAgUm9vdElubGluZUJveCogcHJldlJvb3RCb3goKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RQb3NpdGlvbihmbG9hdCBkeCwgZmxvYXQgZHkpIG92ZXJyaWRlIGZpbmFsOworICAg
IHZvaWQgYWRqdXN0UG9zaXRpb24oZmxvYXQgZHgsIGZsb2F0IGR5KSBvdmVycmlkZSBmaW5hbDsK
IAogICAgIExheW91dFVuaXQgbGluZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVRvcDsgfQog
ICAgIExheW91dFVuaXQgbGluZUJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJvdHRvbTsg
fQpAQCAtMTA0LDI3ICsxMDQsMjcgQEAgcHVibGljOgogICAgIC8vIFJldHVybiB0aGUgdHJ1bmNh
dGVkV2lkdGgsIHRoZSB3aWR0aCBvZiB0aGUgdHJ1bmNhdGVkIHRleHQgKyBlbGxpcHNpcy4KICAg
ICBmbG9hdCBwbGFjZUVsbGlwc2lzKGNvbnN0IEF0b21pY1N0cmluZyYgZWxsaXBzaXNTdHIsIGJv
b2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9ja1JpZ2h0RWRnZSwgZmxvYXQg
ZWxsaXBzaXNXaWR0aCwgSW5saW5lQm94KiBtYXJrdXBCb3ggPSBudWxscHRyKTsKICAgICAvLyBS
ZXR1cm4gdGhlIHBvc2l0aW9uIG9mIHRoZSBFbGxpcHNpc0JveCBvciAtMS4KLSAgICB2aXJ0dWFs
IGZsb2F0IHBsYWNlRWxsaXBzaXNCb3goYm9vbCBsdHIsIGZsb2F0IGJsb2NrTGVmdEVkZ2UsIGZs
b2F0IGJsb2NrUmlnaHRFZGdlLCBmbG9hdCBlbGxpcHNpc1dpZHRoLCBmbG9hdCAmdHJ1bmNhdGVk
V2lkdGgsIGJvb2wmIGZvdW5kQm94KSBvdmVycmlkZSBmaW5hbDsKKyAgICBmbG9hdCBwbGFjZUVs
bGlwc2lzQm94KGJvb2wgbHRyLCBmbG9hdCBibG9ja0xlZnRFZGdlLCBmbG9hdCBibG9ja1JpZ2h0
RWRnZSwgZmxvYXQgZWxsaXBzaXNXaWR0aCwgZmxvYXQgJnRydW5jYXRlZFdpZHRoLCBib29sJiBm
b3VuZEJveCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICB1c2luZyBJbmxpbmVCb3g6Omhhc0VsbGlw
c2lzQm94OwogICAgIEVsbGlwc2lzQm94KiBlbGxpcHNpc0JveCgpIGNvbnN0OwogCiAgICAgdm9p
ZCBwYWludEVsbGlwc2lzQm94KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIGNvbnN0OwogCi0gICAgdmlydHVh
bCB2b2lkIGNsZWFyVHJ1bmNhdGlvbigpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgY2xlYXJU
cnVuY2F0aW9uKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBib29sIGlzSHlwaGVuYXRlZCgpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFz
ZWxpbmVUeXBlKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
bGluZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGludCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAg
IExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5p
dCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxp
bmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQg
bGluZUJvdHRvbSkgb3ZlcnJpZGU7CisgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJy
aWRlOwogCiAgICAgdXNpbmcgSW5saW5lQm94OjpoYXNTZWxlY3RlZENoaWxkcmVuOwogICAgIHVz
aW5nIElubGluZUJveDo6c2V0SGFzU2VsZWN0ZWRDaGlsZHJlbjsKIAotICAgIHZpcnR1YWwgUmVu
ZGVyT2JqZWN0OjpTZWxlY3Rpb25TdGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIG92ZXJyaWRlIGZpbmFs
OworICAgIFJlbmRlck9iamVjdDo6U2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBvdmVy
cmlkZSBmaW5hbDsKICAgICBJbmxpbmVCb3gqIGZpcnN0U2VsZWN0ZWRCb3goKTsKICAgICBJbmxp
bmVCb3gqIGxhc3RTZWxlY3RlZEJveCgpOwogCkBAIC0xNTQsOSArMTU0LDkgQEAgcHVibGljOgog
CiAgICAgVmVjdG9yPFJlbmRlckJveCo+KiBmbG9hdHNQdHIoKSB7IEFTU0VSVCghaXNEaXJ0eSgp
KTsgcmV0dXJuIG1fZmxvYXRzLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZXh0cmFjdExp
bmVCb3hGcm9tUmVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lk
IGF0dGFjaExpbmVCb3hUb1JlbmRlck9iamVjdCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVMaW5lQm94RnJvbVJlbmRlck9iamVjdCgpIG92ZXJyaWRlIGZpbmFsOwor
ICAgIHZvaWQgZXh0cmFjdExpbmVCb3hGcm9tUmVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCBhdHRhY2hMaW5lQm94VG9SZW5kZXJPYmplY3QoKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2b2lkIHJlbW92ZUxpbmVCb3hGcm9tUmVuZGVyT2JqZWN0KCkgb3ZlcnJpZGUgZmluYWw7
CiAgICAgCiAgICAgRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEZvbnRCYXNlbGluZT4obV9iYXNlbGluZVR5cGUpOyB9CiAKQEAgLTE5MSwxMCAr
MTkxLDEwIEBAIHB1YmxpYzoKICAgICBOb2RlKiBnZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUoSW5s
aW5lQm94KiYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQotICAgIHZpcnR1
YWwgY29uc3QgY2hhciogYm94TmFtZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGNvbnN0
IGNoYXIqIGJveE5hbWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICNlbmRpZgogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBpbmNsdWRlTGVhZGluZ0ZvckJv
eChJbmxpbmVCb3gmKSBjb25zdDsKICAgICBib29sIGluY2x1ZGVGb250Rm9yQm94KElubGluZUJv
eCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5n
RmxvYXRzUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RyYWlsaW5n
RmxvYXRzUm9vdElubGluZUJveC5oCmluZGV4IGEzNDczZWVhODNhZDNjZDU3ODRmMjQ5ZmJjYTQz
ZDRmYWNiN2E2OTguLmRkYjcxMzYyY2JjMmYxNDJkYWY3ZmEzN2Y0YmQzZjRkZmJlYTlmN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UcmFpbGluZ0Zsb2F0c1Jvb3RJbmxp
bmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVHJhaWxpbmdGbG9hdHNSb290
SW5saW5lQm94LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorICAgIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gMDsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmlu
ZGV4IDZjYjZlN2JiODYyY2I1YzZhYzA5NTZkMmIyNjA1ZjJlZGQ5MjQzNzMuLjBkZWYyNDExZDhk
MzJiNDQ0NzJjMTg0Y2NlNjhmZDk2ZjQzY2JkM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
cHVibGljOgogICAgIFJlbmRlck1hdGhNTEJsb2NrKEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+
JiYpOwogICAgIFJlbmRlck1hdGhNTEJsb2NrKERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYm
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3Qm
LCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNDaGlsZEFs
bG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVy
cmlkZTsKICAgICAKICAgICAvLyBNYXRoTUwgZGVmaW5lcyBhbiAiZW1iZWxsaXNoZWQgb3BlcmF0
b3IiIGFzIHJvdWdobHkgYW4gPG1vPiB0aGF0IG1heSBoYXZlIHN1YnNjcmlwdHMsCiAgICAgLy8g
c3VwZXJzY3JpcHRzLCB1bmRlcnNjcmlwdHMsIG92ZXJzY3JpcHRzLCBvciBhIGRlbm9taW5hdG9y
IChhcyBpbiBkL2R4LCB3aGVyZSAiZCIgaXMgc29tZQpAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NjE3Lgog
ICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigp
IHsgcmV0dXJuIDA7IH0KICAgICAKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQogICAg
IHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwpAQCAt
NjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyUHRyPFJlbmRlck1hdGhNTEJsb2NrPiBj
cmVhdGVBbm9ueW1vdXNNYXRoTUxCbG9jaygpOwogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJNYXRoTUxCbG9jaygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzUmVuZGVyTWF0aE1MQmxvY2soKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIGJvb2wgaXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CiB9OwogCkBAIC03NywxMSArNzcsMTEgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJN
YXRoTUxUYWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVy
TWF0aE1MVGFibGUiOyB9CisgICAgYm9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVGFibGUiOyB9CiB9OwogCiAvLyBQYXJz
aW5nIGZ1bmN0aW9ucyBmb3IgTWF0aE1MIExlbmd0aCB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZlbmNlZC5oCmluZGV4IDE0OWQw
N2RmNjI3YWEzNTA1N2IyNTgwYzQ4NzVmOGY5YzNiMWY3MTMuLmUzODg3ZDg1NzI3OTBkZDAyMzZh
OWUyOWYzOTI2NWE5ODFjMDVjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGZW5jZWQuaApAQCAtNDAsMTAgKzQwLDEwIEBAIHB1Ymxp
YzoKICAgICBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiBlbGVtZW50KCkgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0
aE1MRmVuY2VkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJN
YXRoTUxGZW5jZWQiOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNSZW5kZXJNYXRo
TUxGZW5jZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxGZW5j
ZWQiOyB9CisgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkg
b3ZlcnJpZGU7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MT3BlcmF0b3I+IGNyZWF0ZU1h
dGhNTE9wZXJhdG9yKGNvbnN0IFN0cmluZyYgb3BlcmF0b3JTdHJpbmcsIE1hdGhNTE9wZXJhdG9y
RGljdGlvbmFyeTo6Rm9ybSwgTWF0aE1MT3BlcmF0b3JEaWN0aW9uYXJ5OjpGbGFnKTsKICAgICB2
b2lkIG1ha2VGZW5jZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCA3M2MwYjZjNDlkNmRkZDliYzg0YjRi
NTdiZGVkNjI5ZTFiYjM0ZjRlLi42MzZiZmMyODc0YzFkNjNlODRjMDQ4YjRlYTI5Mjg2NWI4OGFl
MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC00MiwxNiArNDIsMTYgQEAgcHVibGljOgogICAgIGZsb2F0
IGxpbmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX2xpbmVUaGlja25lc3M7IH0KIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxGcmFjdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MRnJhY3Rpb24iOyB9Cisg
ICAgYm9vbCBpc1JlbmRlck1hdGhNTEZyYWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MRnJhY3Rpb24iOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hp
bGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hl
ZE9wZXJhdG9yKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRDaGlsZChSZW5k
ZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBSZW5kZXJNYXRoTUxPcGVy
YXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZml4Q2hpbGRT
dHlsZShSZW5kZXJPYmplY3QqKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxNYXRoLmgKaW5kZXggYzM0ZjE2N2Q3ZmQ2ZjM4MDgzOTJk
ZTk3YmJlOWIyNjNhM2RhNjkxZC4uZTZmZmZjNTUwY2JiOWEzYjJiYTZmOTkyMTRhMGFhY2MzZjQ5
MzI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNYXRoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxNYXRoLmgKQEAgLTM3LDggKzM3LDggQEAgcHVibGljOgogICAgIFJlbmRlck1hdGhNTE1h
dGgoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBib29sIGlzUmVuZGVyTWF0aE1MTWF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiUmVuZGVyTWF0aE1MTWF0aCI7IH0KKyAgICBib29sIGlzUmVuZGVyTWF0aE1MTWF0
aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1hdGgiOyB9CiB9
OwogICAgIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxNZW5jbG9zZS5oCmluZGV4IGQ0MjMxZTU4ZGQ4YTNiY2U4MzUwNGQxNzQxMDkz
NDY0ODZjNTRjYjkuLmYwZjU2ZjkzYjJiOWU3MWNjNjAyNzFjN2ZmMTRlMjk0ZWFiZTVlMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MTWVu
Y2xvc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE1lbmNsb3NlLmgKQEAgLTM2LDExICszNiwxMSBAQCBwdWJsaWM6CiAgICAgUmVuZGVyTWF0aE1M
TWVuY2xvc2UoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludElu
Zm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVMb2dpY2FsSGVpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJl
bmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRy
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0
aHMoKSBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTE1lbmNsb3NlIjsgfQorICAgIHZvaWQgcGFpbnQoUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxv
Z2ljYWxIZWlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
bmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBjaGVja05vdGF0aW9uYWxWYWx1ZXNWYWxpZGl0eShjb25zdCBWZWN0b3I8U3RyaW5nPiYp
IGNvbnN0OwogfTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCA3Y2YxOTA0MzBhYTNmNzg5ZWZhYmIx
ZmU5MTE2YmQ5MTEwNGJkZjc2Li5hNmFjOGZiNDQ2NDYxYjcyYTU4NmRmNjJlNGMxZjQ2ODdmMzQ1
MzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxPcGVyYXRvci5oCkBAIC01MiwyMCArNTIsMjAgQEAgcHVibGljOgogICAgIGJvb2wg
aXNMYXJnZU9wZXJhdG9ySW5EaXNwbGF5U3R5bGUoKSBjb25zdCB7IHJldHVybiAhaGFzT3BlcmF0
b3JGbGFnKE1hdGhNTE9wZXJhdG9yRGljdGlvbmFyeTo6U3RyZXRjaHkpICYmIGhhc09wZXJhdG9y
RmxhZyhNYXRoTUxPcGVyYXRvckRpY3Rpb25hcnk6OkxhcmdlT3ApOyB9CiAgICAgYm9vbCBpc1Zl
cnRpY2FsKCkgY29uc3QgeyByZXR1cm4gbV9pc1ZlcnRpY2FsOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZVN0eWxlKCkg
b3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZVRva2VuQ29udGVu
dChjb25zdCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
VG9rZW5Db250ZW50KCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCB1cGRhdGVUb2tlbkNvbnRl
bnQoKSBvdmVycmlkZSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZU9wZXJhdG9yUHJvcGVydGllcygp
OwogICAgIHZvaWQgc2V0T3BlcmF0b3JGbGFnQW5kU2NoZWR1bGVMYXlvdXRJZk5lZWRlZChNYXRo
TUxPcGVyYXRvckRpY3Rpb25hcnk6OkZsYWcsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRl
VmFsdWUpOwogICAgIExheW91dFVuaXQgdHJhaWxpbmdTcGFjZUVycm9yKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BlcmF0b3JQcm9wZXJ0aWVzKCk7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwg
TGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxI
ZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVz
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgZmxvYXQgYWR2YW5jZUZvckdseXBoKGNvbnN0IEdseXBo
RGF0YSYpIGNvbnN0OwogICAgIHZvaWQgc2V0TGVhZGluZ1NwYWNlKExheW91dFVuaXQgbGVhZGlu
Z1NwYWNlKSB7IG1fbGVhZGluZ1NwYWNlID0gbGVhZGluZ1NwYWNlOyB9CiAgICAgdm9pZCBzZXRU
cmFpbGluZ1NwYWNlKExheW91dFVuaXQgdHJhaWxpbmdTcGFjZSkgeyBtX3RyYWlsaW5nU3BhY2Ug
PSB0cmFpbGluZ1NwYWNlOyB9CkBAIC0xMjcsMTcgKzEyNywxNyBAQCBwcml2YXRlOgogICAgICAg
ICBHbHlwaERhdGEgbV9kYXRhWzRdOwogICAgIH07CiAKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJl
bmRlck1hdGhNTE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciI7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNv
bnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3Qp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1hdGhNTE9w
ZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxPcGVyYXRvciI7IH0KKyAgICB2b2lk
IHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlvdXRQb2ludCYsIFBh
aW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlkZTsKKyAgICBib29s
IGlzUmVuZGVyTWF0aE1MT3BlcmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgLy8gVGhlIGZvbGxvd2luZyBvcGVyYXRvcnMgYXJlIGludmlzaWJsZTogVSsyMDYxIEZV
TkNUSU9OIEFQUExJQ0FUSU9OLCBVKzIwNjIgSU5WSVNJQkxFIFRJTUVTLCBVKzIwNjMgSU5WSVNJ
QkxFIFNFUEFSQVRPUiwgVSsyMDY0IElOVklTSUJMRSBQTFVTLgogICAgIGJvb2wgaXNJbnZpc2li
bGVPcGVyYXRvcigpIGNvbnN0IHsgcmV0dXJuIDB4MjA2MSA8PSBtX3RleHRDb250ZW50ICYmIG1f
dGV4dENvbnRlbnQgPD0gMHgyMDY0OyB9Ci0gICAgdmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2Vk
KGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJNYXRo
TUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhp
czsgfQorICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hlZE9wZXJhdG9yKCkgb3Zl
cnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIHZvaWQgcmVidWlsZFRva2VuQ29udGVudChjb25z
dCBTdHJpbmcmIG9wZXJhdG9yU3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVs
ZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7
CiAKICAgICBib29sIHNob3VsZEFsbG93U3RyZXRjaGluZygpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3IuaAppbmRleCBmMmIxZGZiZmVmZDkzNmM5MTM1ZDEzZjU2ODM1MzEzZTc4YTBl
NDY1Li5hZmNmNGM2MDIwNGQxMmE0MWY4ZGEwYzRjYTRhZjhkZTYxNGNhOGFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJhZGljYWxPcGVy
YXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
UmFkaWNhbE9wZXJhdG9yLmgKQEAgLTM2LDE1ICszNiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBSZW5kZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IgZmluYWwgOiBwdWJsaWMgUmVuZGVy
TWF0aE1MT3BlcmF0b3IgewogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFJhZGljYWxPcGVyYXRv
cihEb2N1bWVudCYsIFJlZjxSZW5kZXJTdHlsZT4mJik7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmV0
Y2hUbyhMYXlvdXRVbml0IGhlaWdodEFib3ZlQmFzZWxpbmUsIExheW91dFVuaXQgZGVwdGhCZWxv
d0Jhc2VsaW5lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExv
Z2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RyZXRjaFRvKExheW91dFVuaXQgaGVpZ2h0QWJvdmVCYXNlbGlu
ZSwgTGF5b3V0VW5pdCBkZXB0aEJlbG93QmFzZWxpbmUpIG92ZXJyaWRlOworICAgIHZvaWQgY29t
cHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MUmFkaWNh
bE9wZXJhdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQW5vbnlt
b3VzKCkgPyAiUmVuZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5k
ZXJNYXRoTUxSYWRpY2FsT3BlcmF0b3IiOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wZXJhdG9y
UHJvcGVydGllcygpIG92ZXJyaWRlOworICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxSYWRpY2FsT3Bl
cmF0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVu
ZGVyTWF0aE1MUmFkaWNhbE9wZXJhdG9yIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxSYWRp
Y2FsT3BlcmF0b3IiOyB9CisgICAgdm9pZCBzZXRPcGVyYXRvclByb3BlcnRpZXMoKSBvdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm9vdC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb290LmgKaW5kZXggZjBlMWVjNjNmZmRmNDdk
NjU3ZDE5MzZkZTgyOGFhM2I2NWUyMWM1Ni4uN2QxMWY2NmZjNjE5ZDVjZTc4NTEzNjY5YTgwOWRh
MDFjM2RhYWFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxSb290LmgKQEAgLTQ1LDIyICs0NSwyMiBAQCBwdWJsaWM6CiAgICAgUmVuZGVy
TWF0aE1MUm9vdChFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICBSZW5kZXJNYXRo
TUxSb290KERvY3VtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkID0gMCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogbmV3Q2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAw
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZyb21F
bGVtZW50KCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIqIGJh
c2VXcmFwcGVyKCkgY29uc3Q7CiAgICAgUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIqIGluZGV4V3Jh
cHBlcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92
ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFJvb3QoKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFJvb3QiOyB9Ci0g
ICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc1JlbmRlck1hdGhNTFJvb3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxSb290IjsgfQorICAgIE9wdGlvbmFsPGludD4gZmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVN0eWxlKCk7
CiAgICAgdm9pZCByZXN0cnVjdHVyZVdyYXBwZXJzKCk7CiAKQEAgLTg0LDEwICs4NCwxMCBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVDaGlsZFdpdGhvdXRSZXN0cnVjdHVy
aW5nKFJlbmRlck9iamVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJP
YmplY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92
ZXJyaWRlOwogICAgIHN0YXRpYyBSZW5kZXJQdHI8UmVuZGVyTWF0aE1MUm9vdFdyYXBwZXI+IGNy
ZWF0ZUFub255bW91c1dyYXBwZXIoUmVuZGVyTWF0aE1MUm9vdCogcmVuZGVyT2JqZWN0KTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJNYXRoTUxSb290V3JhcHBlcigpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIiOyB9CisgICAg
Ym9vbCBpc1JlbmRlck1hdGhNTFJvb3RXcmFwcGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiUmVuZGVyTWF0aE1MUm9vdFdyYXBwZXIiOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb3cuaAppbmRleCAwNjQwOGI1ZDk2ZGJiMzRkNzhlNTgyMjFkZDJkZGY3NzZkMzQxYWRmLi4x
YzdjOTQwMmQ5ZThlNjQ2ZjJkNGMzOTJiYjJjZjNmOWE4ZjRiYzZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTQzLDExICs0
MywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVPcGVyYXRvclByb3BlcnRpZXMoKTsKIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
ck1hdGhNTFJvdygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBp
c0Fub255bW91cygpID8gIlJlbmRlck1hdGhNTFJvdyAoYW5vbnltb3VzKSIgOiAiUmVuZGVyTWF0
aE1MUm93IjsgfQorICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxSb3coKSBjb25zdCBvdmVycmlkZSBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGlzQW5vbnltb3VzKCkgPyAiUmVuZGVyTWF0aE1MUm93IChhbm9u
eW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxSb3ciOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU2NyaXB0cy5oCmluZGV4IDFjOTRjYzQ5ZDlhMTE0YzEwMzU0NjY0Y2VlMGVhMTI3NTgyNWUy
ZjIuLmEyZmNmMGYyZDNhOGZkNzkwOTgyMWM2ZWY1MmNmZmE2MDBhNjdkMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CkBAIC00Miw4ICs0Miw4IEBAIGZyaWVuZCBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzOwogcHVi
bGljOgogICAgIGVudW0gV3JhcHBlclR5cGUgeyBCYXNlLCBTdWJTdXBQYWlyIH07CiAKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChS
ZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJl
bmRlck1hdGhNTFNjcmlwdHNXcmFwcGVyKERvY3VtZW50JiBkb2N1bWVudCwgUmVmPFJlbmRlclN0
eWxlPiYmIHN0eWxlLCBXcmFwcGVyVHlwZSBraW5kKQpAQCAtNTcsOCArNTcsOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgYWRkQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbEluc2VydGlvbiwgUmVuZGVy
T2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwogICAgIHZvaWQg
cmVtb3ZlQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbFJlbW92YWwsIFJlbmRlck9iamVjdCYgY2hp
bGQpOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9raW5kID09IEJhc2UgPyAiQmFzZSBXcmFwcGVyIiA6ICJTdWJTdXBQYWly
IFdyYXBwZXIiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0c1dyYXBw
ZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fa2luZCA9PSBCYXNlID8g
IkJhc2UgV3JhcHBlciIgOiAiU3ViU3VwUGFpciBXcmFwcGVyIjsgfQorICAgIGJvb2wgaXNSZW5k
ZXJNYXRoTUxTY3JpcHRzV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFJlbmRlck1hdGhNTFNjcmlwdHMqIHBhcmVudE1hdGhNTFNjcmlwdHMoKTsK
IApAQCAtNzIsMjYgKzcyLDI2IEBAIGZyaWVuZCBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzV3Jh
cHBlcjsKIAogcHVibGljOgogICAgIFJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYsIFJlZjxS
ZW5kZXJTdHlsZT4mJik7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9iamVjdCog
Y2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSAwKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBh
ZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0g
MCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlk
ZTsKICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVk
T3BlcmF0b3IoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5l
bWJlbGxpc2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8aW50PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2
b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAgICAg
CiBwcml2YXRlOgogICAgIHZvaWQgYWRkQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbEluc2VydGlv
biwgUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApOwog
ICAgIHZvaWQgcmVtb3ZlQ2hpbGRJbnRlcm5hbChib29sIG5vcm1hbFJlbW92YWwsIFJlbmRlck9i
amVjdCYgY2hpbGQpOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MU2NyaXB0
cyI7IH0KKyAgICBib29sIGlzUmVuZGVyTWF0aE1MU2NyaXB0cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNjcmlwdHMiOyB9CiAKICAgICB2b2lkIGZpeEFub255
bW91c1N0eWxlRm9yU3ViU3VwUGFpcihSZW5kZXJPYmplY3QqIHN1YlN1cFBhaXIsIGJvb2wgaXNQ
b3N0U2NyaXB0KTsKICAgICB2b2lkIGZpeEFub255bW91c1N0eWxlcygpOwogCi0gICAgdmlydHVh
bCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIC8vIE9t
aXQgb3VyIHN1YnNjcmlwdCBhbmQvb3Igc3VwZXJzY3JpcHQuIFRoaXMgbWF5IHJldHVybiAwIGZv
ciBhIG5vbi1NYXRoTUwgYmFzZSAod2hpY2gKICAgICAvLyB3b24ndCBvY2N1ciBpbiB2YWxpZCBN
YXRoTUwpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5oCmluZGV4IDgxMjA4N2Y2MGM4ZmVhMTFhMGM1NDRjZDNkMWZiYWNkNWQ5OGJm
OWEuLjJiNjU2NzM0OGVlMmI5ZjI5ZDZjMjY4MTU3MjMzNTY5ZmVlN2YwMGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKQEAg
LTM5LDE1ICszOSwxNSBAQCBwdWJsaWM6CiAgICAgTWF0aE1MVGV4dEVsZW1lbnQmIGVsZW1lbnQo
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXRoTUxUZXh0RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5h
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1hdGhN
TFNwYWNlIChhbm9ueW1vdXMpIiA6ICJSZW5kZXJNYXRoTUxTcGFjZSI7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJNYXRoTUxTcGFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0No
aWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5p
dCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
TG9naWNhbFdpZHRoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxI
ZWlnaHQoKSBvdmVycmlkZTsKKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxTcGFjZSAoYW5vbnlt
b3VzKSIgOiAiUmVuZGVyTWF0aE1MU3BhY2UiOyB9CisgICAgYm9vbCBpc1JlbmRlck1hdGhNTFNw
YWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3Qg
UmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQg
Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHRo
LCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lkdGgo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUxvZ2ljYWxIZWlnaHQoKSBvdmVycmlkZTsKIAog
ICAgIExheW91dFVuaXQgbV93aWR0aDsKICAgICBMYXlvdXRVbml0IG1faGVpZ2h0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVS
b290LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFy
ZVJvb3QuaAppbmRleCA5ZTk1NTY5MDkzZWQ0OGMxY2YxMGI5ZTFmMWU4Y2ZiMzk1OWIxNmYwLi5l
OTZmNjNlYzA4OTNiMzM5NzBiMzEwMzJiNjc4MDdkZjVmNTY5YWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3Qu
aApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlbmRlclB0cjxSZW5kZXJN
YXRoTUxTcXVhcmVSb290PiBjcmVhdGVBbm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoUmVuZGVy
TWF0aE1MTWVuY2xvc2UmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyTWF0aE1MU3F1YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiUmVuZGVyTWF0aE1MU3F1YXJlUm9vdCI7IH0KKyAgICBib29sIGlzUmVuZGVyTWF0aE1MU3F1
YXJlUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlck1hdGhNTFNxdWFy
ZVJvb3QiOyB9CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IDRk
NTZiMDg1YjE2NDJiMTQwYmJkZWM4ZTczZmM5YzdiYmFlNmZiODcuLjIyNDNhM2Y2MGIzYTEwMzVi
MGQ4M2NmM2E5NmJkM2M0YTk4MjliOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTQxLDE4ICs0MSwxOCBAQCBwdWJs
aWM6CiAKICAgICBNYXRoTUxUZXh0RWxlbWVudCYgZWxlbWVudCgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PE1hdGhNTFRleHRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCi0gICAg
dmlydHVhbCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJl
bmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZv
cmVDaGlsZCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJP
YmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH07CisgICAgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmpl
Y3QqIGJlZm9yZUNoaWxkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVG9rZW5D
b250ZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAg
ICAgdm9pZCBjcmVhdGVXcmFwcGVySWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBpc0Fub255bW91cygpID8gIlJlbmRlck1hdGhNTFRva2VuIChhbm9ueW1v
dXMpIiA6ICJSZW5kZXJNYXRoTUxUb2tlbiI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUb2tlbigpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gaXNBbm9ueW1vdXMoKSA/ICJSZW5kZXJNYXRoTUxUb2tlbiAoYW5vbnlt
b3VzKSIgOiAiUmVuZGVyTWF0aE1MVG9rZW4iOyB9CisgICAgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxlKCk7CiAKICAgICAvLyBUaGlzIGJvb2xlYW4gaW5k
aWNhdGVzIHdoZXRoZXIgdGhlIHRva2VuIGVsZW1lbnQgY29udGFpbnMgc29tZSBSZW5kZXJFbGVt
ZW50IGRlc2NlbmRhbnRzLCBvdGhlciB0aGFuIHRoZSBhbm9ueW1vdXMgcmVuZGVyZXJzIGNyZWF0
ZWQgZm9yIGxheW91dCBwdXJwb3NlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKaW5kZXggZjA4ODI5YTMxMzFiOTA0
ZWM0M2EyZGIzMzg2MGFmZGU5YmU1YmEyOS4uZjdmODg5NDU1ZDI2N2EzMDUyYzRjZDY4NWM4ZTUw
YWIxOTBjOWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxVbmRlck92ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCkBAIC0zNiwxNiArMzYsMTYgQEAgY2xhc3MgUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1
YmxpYzoKICAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIoRWxlbWVudCYsIFJlZjxSZW5kZXJTdHls
ZT4mJik7CiAgICAgCi0gICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxp
c2hlZE9wZXJhdG9yKCkgb3ZlcnJpZGU7CisgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1i
ZWxsaXNoZWRPcGVyYXRvcigpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlck1hdGhNTFVuZGVyT3Zl
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNo
YXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyTWF0aE1MVW5k
ZXJPdmVyIjsgfQorICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxVbmRlck92ZXIoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxVbmRlck92ZXIiOyB9CiAKICAgICBlbnVt
IFVuZGVyT3ZlclR5cGUgeyBVbmRlciwgT3ZlciwgVW5kZXJPdmVyIH07CiAgICAgVW5kZXJPdmVy
VHlwZSBtX2tpbmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVz
L0JveFNoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL0JveFNoYXBlLmgK
aW5kZXggYzJiMTc3MTM3YzM3NWEyNmE1ZGJkNmMxZTI3NWQ5NTU5ODFmOTMxOC4uMzM5ZWE1ZDZj
NDQ1YWYzZTM4ODI0ZTYzZWNhOTkxOTJiOTlhMWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9Cb3hTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zaGFwZXMvQm94U2hhcGUuaApAQCAtNDcsMTEgKzQ3LDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9naWNhbEJvdW5k
aW5nQm94KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KLSAgICB2aXJ0dWFsIExp
bmVTZWdtZW50IGdldEV4Y2x1ZGVkSW50ZXJ2YWwoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlv
dXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFJlY3Qgc2hh
cGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KKyAg
ICBMaW5lU2VnbWVudCBnZXRFeGNsdWRlZEludGVydmFsKExheW91dFVuaXQgbG9naWNhbFRvcCwg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBidWlsZERpc3BsYXlQYXRocyhEaXNwbGF5UGF0aHMmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGJ1aWxkRGlzcGxheVBhdGhzKERpc3BsYXlQYXRocyYpIGNvbnN0IG92ZXJyaWRlOwog
CiBwcml2YXRlOgogICAgIEZsb2F0Um91bmRlZFJlY3Qgc2hhcGVNYXJnaW5Cb3VuZHMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNo
YXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1BvbHlnb25TaGFwZS5oCmlu
ZGV4IGFlNDNmYzE1Y2I4NzY5MTI5NjQxNzY0OGMzMDAzZmEyNDQ3YzMxOTYuLjcwYTY4YjdkZjUz
ZGQwNjU4YmNkZWNkYTk5M2EzOGNhOTVjMjRlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zaGFwZXMvUG9seWdvblNoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3NoYXBlcy9Qb2x5Z29uU2hhcGUuaApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgY29uc3QgRmxvYXRQb2ludCYgdmVydGV4MSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVydGV4MTsgfQotICAgIHZpcnR1YWwgY29uc3QgRmxv
YXRQb2ludCYgdmVydGV4MigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVydGV4MjsgfQor
ICAgIGNvbnN0IEZsb2F0UG9pbnQmIHZlcnRleDEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3ZlcnRleDE7IH0KKyAgICBjb25zdCBGbG9hdFBvaW50JiB2ZXJ0ZXgyKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV92ZXJ0ZXgyOyB9CiAKICAgICBib29sIGlzV2l0aGluWVJhbmdlKGZsb2F0
IHkxLCBmbG9hdCB5MikgY29uc3QgeyByZXR1cm4geTEgPD0gbWluWSgpICYmIHkyID49IG1heFko
KTsgfQogICAgIGJvb2wgb3ZlcmxhcHNZUmFuZ2UoZmxvYXQgeTEsIGZsb2F0IHkyKSBjb25zdCB7
IHJldHVybiB5MiA+PSBtaW5ZKCkgJiYgeTEgPD0gbWF4WSgpOyB9CkBAIC02NSwxMSArNjUsMTEg
QEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgc2hhcGVN
YXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcG9seWdvbi5pc0VtcHR5KCk7
IH0KLSAgICB2aXJ0dWFsIExpbmVTZWdtZW50IGdldEV4Y2x1ZGVkSW50ZXJ2YWwoTGF5b3V0VW5p
dCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIExheW91dFJlY3Qgc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BvbHln
b24uaXNFbXB0eSgpOyB9CisgICAgTGluZVNlZ21lbnQgZ2V0RXhjbHVkZWRJbnRlcnZhbChMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYnVpbGREaXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJikg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBidWlsZERpc3BsYXlQYXRocyhEaXNwbGF5UGF0aHMm
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBGbG9hdFBvbHlnb24gbV9wb2x5Z29u
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFw
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SYXN0ZXJTaGFwZS5oCmluZGV4
IGFlZGQ2MTc1MjdmNzFmNjI5YzRkM2Y0YjM4Mzc1MjdlZmVmYzYwYjEuLjdjMGViNzkxODk1MGUy
MWZhNTNkMDljNzcwY2E0MjJjMTI1Mjk3NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zaGFwZXMvUmFzdGVyU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc2hhcGVzL1Jhc3RlclNoYXBlLmgKQEAgLTg3LDExICs4NywxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1faW50ZXJ2YWxzLT5pbml0aWFsaXplQm91bmRzKCk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9naWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91
bmRzKCkpOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2ludGVydmFscy0+aXNFbXB0eSgpOyB9Ci0gICAgdmlydHVhbCBMaW5lU2VnbWVudCBn
ZXRFeGNsdWRlZEludGVydmFsKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW5pdCBsb2dp
Y2FsSGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IHNoYXBlTWFyZ2luTG9n
aWNhbEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TGF5
b3V0UmVjdD4obWFyZ2luSW50ZXJ2YWxzKCkuYm91bmRzKCkpOyB9CisgICAgYm9vbCBpc0VtcHR5
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbnRlcnZhbHMtPmlzRW1wdHkoKTsgfQorICAg
IExpbmVTZWdtZW50IGdldEV4Y2x1ZGVkSW50ZXJ2YWwoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBM
YXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIGJ1aWxkRGlzcGxheVBhdGhzKERpc3BsYXlQYXRocyYgcGF0aHMpIGNvbnN0IG92ZXJyaWRl
CisgICAgdm9pZCBidWlsZERpc3BsYXlQYXRocyhEaXNwbGF5UGF0aHMmIHBhdGhzKSBjb25zdCBv
dmVycmlkZQogICAgIHsKICAgICAgICAgbV9pbnRlcnZhbHMtPmJ1aWxkQm91bmRzUGF0aChwYXRo
cy5zaGFwZSk7CiAgICAgICAgIGlmIChzaGFwZU1hcmdpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9SZWN0YW5nbGVTaGFwZS5oCmluZGV4IGIwMzYxYzYxMjIyNzEx
NDViNTllNzkyYTg2YWMxNGZlMDhmY2Q2NDUuLjU3ZjQ3Nzc0NTg2ZDZkY2JlZmFjZWZhMzZlNzI1
NWRhOWYwNTViNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
UmVjdGFuZ2xlU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1Jl
Y3RhbmdsZVNoYXBlLmgKQEAgLTQ3LDExICs0NywxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBzaGFwZU1hcmdpbkxvZ2ljYWxCb3VuZGluZ0JveCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PExheW91dFJlY3Q+KHNoYXBlTWFy
Z2luQm91bmRzKCkpOyB9Ci0gICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2JvdW5kcy5pc0VtcHR5KCk7IH0KLSAgICB2aXJ0dWFsIExpbmVTZWdtZW50
IGdldEV4Y2x1ZGVkSW50ZXJ2YWwoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0IGxv
Z2ljYWxIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFJlY3Qgc2hhcGVNYXJnaW5M
b2dpY2FsQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0aWNfY2FzdDxM
YXlvdXRSZWN0PihzaGFwZU1hcmdpbkJvdW5kcygpKTsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYm91bmRzLmlzRW1wdHkoKTsgfQorICAgIExpbmVTZWdt
ZW50IGdldEV4Y2x1ZGVkSW50ZXJ2YWwoTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGJ1aWxk
RGlzcGxheVBhdGhzKERpc3BsYXlQYXRocyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYnVp
bGREaXNwbGF5UGF0aHMoRGlzcGxheVBhdGhzJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgRmxvYXRSZWN0IHNoYXBlTWFyZ2luQm91bmRzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCmluZGV4IGJlMTU3MmIxMzM1M2QxODFj
NGFhNmIzMzkxZTEwYTk1ODRmNmZhY2YuLmU4YzQ2OWE1NjhhODJhZTZiNTBmZDQwMDA1YzRiMjc5
MzVmNDgyNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBl
cy5oCkBAIC0xOTAsMTQgKzE5MCwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEJhc2ljU2hh
cGVDaXJjbGUoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVDaXJjbGVUeXBlOyB9CisgICAgVHlwZSB0eXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZUNpcmNsZVR5cGU7IH0KIAotICAgIHZp
cnR1YWwgY29uc3QgUGF0aCYgcGF0aChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBj
b25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYs
IGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEJhc2ljU2hhcGVDZW50ZXJD
b29yZGluYXRlIG1fY2VudGVyWDsKICAgICBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSBtX2Nl
bnRlclk7CkBAIC0yMjIsMTQgKzIyMiwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEJhc2lj
U2hhcGVFbGxpcHNlKCkgPSBkZWZhdWx0OwogCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBCYXNpY1NoYXBlRWxsaXBzZVR5cGU7IH0KKyAgICBUeXBlIHR5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXNpY1NoYXBlRWxsaXBzZVR5cGU7IH0KIAot
ICAgIHZpcnR1YWwgY29uc3QgUGF0aCYgcGF0aChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91
YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNT
aGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEJhc2ljU2hhcGVD
ZW50ZXJDb29yZGluYXRlIG1fY2VudGVyWDsKICAgICBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0
ZSBtX2NlbnRlclk7CkBAIC0yNDgsMTkgKzI0OCwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRX
aW5kUnVsZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBtX3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KICAg
ICB2b2lkIGFwcGVuZFBvaW50KExlbmd0aCB4LCBMZW5ndGggeSkgeyBtX3ZhbHVlcy5hcHBlbmQo
V1RGTW92ZSh4KSk7IG1fdmFsdWVzLmFwcGVuZChXVEZNb3ZlKHkpKTsgfQogCi0gICAgdmlydHVh
bCBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7
IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2lu
ZFJ1bGU7IH0KIAogcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUG9seWdvbigpID0gZGVmYXVsdDsK
IAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNT
aGFwZVBvbHlnb25UeXBlOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gQmFzaWNTaGFwZVBvbHlnb25UeXBlOyB9CiAKLSAgICB2aXJ0dWFsIGNvbnN0IFBhdGgmIHBh
dGgoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgY29uc3QgUGF0aCYgcGF0aChjb25z
dCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5CbGVuZChjb25z
dCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWY8QmFzaWNTaGFw
ZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
PEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQmFzaWNTaGFwZSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBXaW5kUnVsZSBtX3dpbmRSdWxlIHsgUlVMRV9OT05aRVJPIH07
CiAgICAgVmVjdG9yPExlbmd0aD4gbV92YWx1ZXM7CkBAIC0yNzQsMjEgKzI3NCwyMSBAQCBwdWJs
aWM6CiAgICAgfQogCiAgICAgdm9pZCBzZXRXaW5kUnVsZShXaW5kUnVsZSB3aW5kUnVsZSkgeyBt
X3dpbmRSdWxlID0gd2luZFJ1bGU7IH0KLSAgICB2aXJ0dWFsIFdpbmRSdWxlIHdpbmRSdWxlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93aW5kUnVsZTsgfQorICAgIFdpbmRSdWxlIHdpbmRS
dWxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93aW5kUnVsZTsgfQogCiAgICAgY29uc3Qg
U1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGhEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlU3RyZWFt
LmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgQmFzaWNTaGFwZVBhdGgoc3RkOjp1bmlxdWVfcHRy
PFNWR1BhdGhCeXRlU3RyZWFtPiYmKTsKIAotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZVBhdGhUeXBlOyB9CisgICAgVHlwZSB0eXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZVBhdGhUeXBlOyB9CiAKLSAgICB2aXJ0
dWFsIGNvbnN0IFBhdGgmIHBhdGgoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgY29u
c3QgUGF0aCYgcGF0aChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJsZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBk
b3VibGUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgQmFzaWNTaGFwZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
UGF0aEJ5dGVTdHJlYW0+IG1fYnl0ZVN0cmVhbTsKICAgICBXaW5kUnVsZSBtX3dpbmRSdWxlIHsg
UlVMRV9OT05aRVJPIH07CkBAIC0zMjEsMTQgKzMyMSwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEJhc2ljU2hhcGVJbnNldCgpID0gZGVmYXVsdDsKIAotICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZUluc2V0VHlwZTsgfQorICAgIFR5
cGUgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEJhc2ljU2hhcGVJbnNldFR5cGU7IH0K
IAotICAgIHZpcnR1YWwgY29uc3QgUGF0aCYgcGF0aChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKKyAgICBjb25zdCBQYXRoJiBwYXRoKGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFJlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwg
ZG91YmxlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhbkJsZW5kKGNvbnN0IEJhc2ljU2hh
cGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFz
aWNTaGFwZSYsIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBCYXNpY1NoYXBlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEJhc2ljU2hhcGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExlbmd0aCBt
X3JpZ2h0OwogICAgIExlbmd0aCBtX3RvcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Db250ZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbnRlbnREYXRhLmgKaW5kZXggZDk3YTE5N2I4YmVmYWNiYTcwNzVkNDU0NTVlZjEzZmU2
MjQ4NTJhZi4uZDQ0NjFjMDNmYWM3NWIyNzFjZGQ4NTQyZDJkZGY0N2MxYjM4OTY5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbnRlbnREYXRhLmgKQEAgLTk0LDEwICs5
NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1faW1hZ2UgPSBpbWFnZTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1
bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVu
ZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHN0ZDo6
dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IG92ZXJyaWRlCisg
ICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29uc3Qgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gaW1hZ2Ug
PSBzdGQ6Om1ha2VfdW5pcXVlPEltYWdlQ29udGVudERhdGE+KG1faW1hZ2UuZ2V0KCkpOwogICAg
ICAgICBpbWFnZS0+c2V0QWx0VGV4dChhbHRUZXh0KCkpOwpAQCAtMTI5LDEwICsxMjksMTAgQEAg
cHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsg
fQogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpIHsgbV90ZXh0ID0gdGV4dDsg
fQogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyT2JqZWN0PiBjcmVhdGVDb250ZW50UmVu
ZGVyZXIoRG9jdW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAg
IFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+IGNsb25lSW50ZXJuYWwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFRleHRDb250ZW50RGF0YT4odGV4dCgp
KTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8VGV4dENvbnRlbnREYXRhPih0
ZXh0KCkpOyB9CiAKICAgICBTdHJpbmcgbV90ZXh0OwogfTsKQEAgLTE2MywxMCArMTYzLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgbV9jb3VudGVyID0gV1RGTW92ZShjb3VudGVyKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+IGNyZWF0ZUNvbnRlbnRSZW5kZXJl
cihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJlbmRlcmVyKERvY3VtZW50JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJbnRlcm5hbCgpIGNvbnN0IG92ZXJy
aWRlCisgICAgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnREYXRhPiBjbG9uZUludGVybmFsKCkgY29u
c3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGF1dG8gY291bnRlckRhdGEgPSBzdGQ6Om1ha2Vf
dW5pcXVlPENvdW50ZXJDb250ZW50Pihjb3VudGVyKCkpOwogICAgICAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxDb3VudGVyQ29udGVudERhdGE+KFdURk1vdmUoY291bnRlckRhdGEpKTsKQEAg
LTE5NiwxMCArMTk2LDEwIEBAIHB1YmxpYzoKICAgICBRdW90ZVR5cGUgcXVvdGUoKSBjb25zdCB7
IHJldHVybiBtX3F1b3RlOyB9CiAgICAgdm9pZCBzZXRRdW90ZShRdW90ZVR5cGUgcXVvdGUpIHsg
bV9xdW90ZSA9IHF1b3RlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJPYmplY3Q+
IGNyZWF0ZUNvbnRlbnRSZW5kZXJlcihEb2N1bWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlck9iamVjdD4gY3JlYXRlQ29udGVudFJl
bmRlcmVyKERvY3VtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50RGF0YT4gY2xvbmVJ
bnRlcm5hbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UXVvdGVD
b250ZW50RGF0YT4ocXVvdGUoKSk7IH0KKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudERhdGE+
IGNsb25lSW50ZXJuYWwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFF1b3RlQ29udGVudERhdGE+KHF1b3RlKCkpOyB9CiAKICAgICBRdW90ZVR5cGUgbV9xdW90ZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1h
Z2UuaAppbmRleCAyZDIwYzM0Yzg2MTI5NmIzZWU5NmRiZGQzYWI3NTMyZDA0NGIyOWUxLi5jYzA5
Y2FjOTE5YTgyYWVmNjMwNTE1ZmQzZWEwNzQ2ZDVjODczNTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKQEAgLTM4LDI2ICszOCwy
NiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdHlsZUNhY2hlZEltYWdlPiBjcmVhdGUoQ2Fj
aGVkSW1hZ2UqIGltYWdlKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFN0eWxlQ2FjaGVkSW1hZ2Uo
aW1hZ2UpKTsgfQogICAgIHZpcnR1YWwgflN0eWxlQ2FjaGVkSW1hZ2UoKTsKIAotICAgIHZpcnR1
YWwgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
bWFnZS5nZXQoKTsgfQorICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbWFnZS5nZXQo
KTsgfQorICAgIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9pbWFnZS5nZXQoKTsgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25z
dCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
ZXJyb3JPY2N1cnJlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRmxvYXRTaXplIGlt
YWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJp
bnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1l
bnQqLCBjb25zdCBGbG9hdFNpemUmLCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZUNsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8
SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1l
bnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmpl
Y3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTG9hZGVk
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0
IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CisgICAgYm9vbCB1
c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250
YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6
ZSYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRl
OworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6
ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ckVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGV4cGxpY2l0IFN0eWxlQ2FjaGVkSW1h
Z2UoQ2FjaGVkSW1hZ2UqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgKaW5kZXggMjRkODMzMGQ5OWYyZjRmZjk4NmFkOGMw
Y2IwMTg4YTkwNzdmMjg3Yi4uOTU3M2U4MmExMjc1N2FiOWFiNzEyM2MwOWNkMjhkYWM2M2I1NDEw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVk
SW1hZ2VTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNo
ZWRJbWFnZVNldC5oCkBAIC00OSwzMiArNDksMzIgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0
dWFsIH5TdHlsZUNhY2hlZEltYWdlU2V0KCk7CiAKLSAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmVzdEZpdEltYWdlLmdldCgp
OyB9CisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KIAogICAgIHZvaWQgY2xlYXJJbWFnZVNldFZhbHVl
KCkgeyBtX2ltYWdlU2V0VmFsdWUgPSBudWxscHRyOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVh
bCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBG
SVhNRTogVGhpcyBpcyB1c2VkIGJ5IFN0eWxlSW1hZ2UgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24s
IGJ1dCB0aGlzIGltcGxlbWVudGF0aW9uCiAgICAgLy8gb25seSBsb29rcyBhdCB0aGUgaW1hZ2Ug
ZnJvbSB0aGUgc2V0IHRoYXQgd2UgaGF2ZSBsb2FkZWQuIEknbSBub3Qgc3VyZSBpZiB0aGF0IGlz
CiAgICAgLy8gbWVhbmluZ2Z1bCBlbm91Z2ggb3Igbm90LgotICAgIHZpcnR1YWwgV3JhcHBlZElt
YWdlUHRyIGRhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Jlc3RGaXRJbWFnZS5nZXQo
KTsgfQotCi0gICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqLCBm
bG9hdCBtdWx0aXBsaWVyKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNMb2Fk
ZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQq
LCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRT
aXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHVzZXNJbWFn
ZUNvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJF
bGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJF
bGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ltYWdl
U2NhbGVGYWN0b3I7IH0KLSAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJl
bmRlckVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmVzdEZpdEltYWdlLmdldCgpOyB9CisKKyAgICBi
b29sIGNhblJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGlzTG9hZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBlcnJvck9jY3VycmVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRTaXplIGltYWdlU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNv
bXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGlu
dHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5z
aWNSYXRpbykgb3ZlcnJpZGU7CisgICAgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2
b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVD
bGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJyaWRlOworICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2Uo
UmVuZGVyRWxlbWVudCosIGNvbnN0IEZsb2F0U2l6ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGZs
b2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ltYWdlU2Nh
bGVGYWN0b3I7IH0KKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50
KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTdHlsZUNhY2hlZEltYWdlU2V0KENhY2hlZEltYWdl
KiwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvciwgQ1NTSW1hZ2VTZXRWYWx1ZSopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaApp
bmRleCBkYjQ5ZGQ1NDRiOTY1MmM3NGUyZGIxYmQxNzc0YTgyNDNmMmMwN2MzLi5mODkyZWY2NjRh
ZjI4ZTM3YmJmM2EzYTBlYTMyNGYxNGQyNmYzOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKQEAgLTQxLDIwICs0MSwy
MCBAQCBwdWJsaWM6CiAgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSYgaW1hZ2VWYWx1ZSgpIHsg
cmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwg
V3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2ltYWdlR2Vu
ZXJhdG9yVmFsdWUucHRyKCk7IH0KKyAgICBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS5wdHIoKTsgfQogCi0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIEZsb2F0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11
bHRpcGxpZXIpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2ZpeGVkU2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVu
Z3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIW1fZml4ZWRTaXplOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5l
clNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiBj
b250YWluZXJTaXplLCBmbG9hdCkgb3ZlcnJpZGUgeyBtX2NvbnRhaW5lclNpemUgPSBjb250YWlu
ZXJTaXplOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50Kikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Kikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBj
b25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9h
dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQorICAgIGJvb2wgaW1hZ2VIYXNSZWxhdGl2
ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQorICAgIHZv
aWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0
aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGlu
dHJpbnNpY1JhdGlvKSBvdmVycmlkZTsKKyAgICBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KKyAgICB2b2lkIHNldENv
bnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRT
aXplJiBjb250YWluZXJTaXplLCBmbG9hdCkgb3ZlcnJpZGUgeyBtX2NvbnRhaW5lclNpemUgPSBj
b250YWluZXJTaXplOyB9CisgICAgdm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIG92ZXJy
aWRlOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVt
ZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBleHBsaWNpdCBTdHlsZUdlbmVyYXRlZEltYWdl
KFJlZjxDU1NJbWFnZUdlbmVyYXRvclZhbHVlPiYmKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKaW5kZXggMTkyNGZiYTdh
YzI5ZTM0MThlMWM0MTRiYzZmMDFmYzU2MzFjY2YzMC4uY2M0MTc4ZDIyYWRjZDc4ZDg3YTI1Yzkw
ZDA3ZTAxZTQ1Yzk4YzQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmgKQEAgLTU2LDI2ICs1NiwyNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZXRhY2hGcm9tQ1NTVmFsdWUoKSB7IG1fdmFsdWUgPSBudWxscHRyOyB9CiAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIGNvbnN0X2Nhc3Q8U3R5bGVQZW5kaW5nSW1hZ2UqPih0aGlzKTsgfQorICAgIFdyYXBw
ZWRJbWFnZVB0ciBkYXRhKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gY29uc3RfY2FzdDxTdHls
ZVBlbmRpbmdJbWFnZSo+KHRoaXMpOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92YWx1ZTsgfQorICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92
YWx1ZTsgfQogICAgIAotICAgIHZpcnR1YWwgRmxvYXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IEZsb2F0U2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVt
ZW50KiwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNXaWR0aCAqLyAsIExlbmd0aCYgLyogaW50cmluc2lj
SGVpZ2h0ICovLCBGbG9hdFNpemUmIC8qIGludHJpbnNpY1JhdGlvICovKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiwgZmxvYXQpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCop
IG92ZXJyaWRlIHsgfQotCi0gICAgdmlydHVhbCBSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZQorICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFNpemUoKTsgfQorICAgIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZVdpZHRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlt
YWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCos
IExlbmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdo
dCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLykgb3ZlcnJpZGUgeyB9CisgICAg
Ym9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmxvYXRTaXplJiwgZmxvYXQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHJlbW92ZUNs
aWVudChSZW5kZXJFbGVtZW50Kikgb3ZlcnJpZGUgeyB9CisKKyAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFNpemUmKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVy
RWxlbWVudCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBrbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgCiAgICAgU3R5bGVQZW5kaW5nSW1hZ2UoQ1NTVmFsdWUqIHZhbHVlKQog
ICAgICAgICA6IG1fdmFsdWUodmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0Jsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0Jsb2NrLmgKaW5kZXggYWM4YjZhZDVlNGJmNGYxOTcyZDU4NmQ2ZDNmMzM4NzZk
ZGY1YWY1ZS4uNTU0NTMyZGRjOWJkNzdjMTZkMmNmYTUzODFiOTgwZDlmOTNmYmZiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQmxvY2suaApAQCAtMzAsMjQg
KzMwLDI0IEBAIGNsYXNzIFNWR0VsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlclNWR0Jsb2NrIDogcHVi
bGljIFJlbmRlckJsb2NrRmxvdyB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IHZp
c3VhbE92ZXJmbG93UmVjdCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFJlY3Qg
dmlzdWFsT3ZlcmZsb3dSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBTVkdHcmFw
aGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNW
R0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgUmVuZGVyU1ZHQmxvY2soU1ZHR3JhcGhpY3NFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxl
PiYmKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVs
ZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9tU3R5
bGUoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUZyb21TdHlsZSgpIG92ZXJyaWRl
IGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyU1ZHQmxvY2soKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1JlbmRlclNWR0Jsb2NrKCkg
Y29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFic29sdXRlUmVjdHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFic29sdXRlUmVjdHMoVmVj
dG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0KSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZl
cmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBv
bGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCBkZGVkODJiMjFlOTg5MGNj
MmUwNDJkM2IyZGViZjcyYTBmMjZjMTY1Li41YzE4NjYxZGNjOTliYjgxM2JmMmYzOTcyMDM2M2U1
M2JmNGI3ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmgKQEAgLTMzLDMwICszMywzMCBAQCBjbGFzcyBSZW5kZXJTVkdDb250YWlu
ZXIgOiBwdWJsaWMgUmVuZGVyU1ZHTW9kZWxPYmplY3QgewogcHVibGljOgogICAgIHZpcnR1YWwg
flJlbmRlclNWR0NvbnRhaW5lcigpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5m
byYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5l
ZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIGZpbmFsIHsgbV9uZWVkc0JvdW5kYXJpZXNV
cGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIG5lZWRzQm91bmRhcmllc1VwZGF0ZSgp
IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlOyB9CisgICAg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyBtX25lZWRz
Qm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KKyAgICBib29sIG5lZWRzQm91bmRhcmllc1VwZGF0
ZSgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbmVlZHNCb3VuZGFyaWVzVXBkYXRlOyB9CiAg
ICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgYm9vbCBpc09iamVjdEJvdW5kaW5nQm94VmFsaWQoKSBjb25zdCB7IHJldHVybiBt
X29iamVjdEJvdW5kaW5nQm94VmFsaWQ7IH0KIAogcHJvdGVjdGVkOgogICAgIFJlbmRlclNWR0Nv
bnRhaW5lcihTVkdFbGVtZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAotICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJT
VkdDb250YWluZXIiOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdDb250YWluZXIiOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgY2FuSGF2ZUNoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQg
bGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2Jq
ZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJl
Y3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkID0gMCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmpl
Y3QmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxM
YXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRhaW5lciA9IDApIG92ZXJyaWRlIGZpbmFs
OwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9Ci0gICAgdmlydHVhbCBG
bG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biBtX3N0cm9rZUJvdW5kaW5nQm94OyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX3Jl
cGFpbnRCb3VuZGluZ0JveDsgfQorICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNv
bnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICBG
bG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9yZXBhaW50Qm91
bmRpbmdCb3g7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5Q
YXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOworICAgIGJvb2wgbm9kZUF0RmxvYXRQb2lu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50
JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAogICAgIC8vIEFsbG93
IFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIgdG8gaG9vayBpbiBhdCB0aGUgcmlnaHQg
dGltZSBpbiBsYXlvdXQoKQogICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVMb2NhbFRyYW5zZm9y
bSgpIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC03Miw3ICs3Miw3IEBAIHByb3RlY3RlZDoKICAgICB2
b2lkIHVwZGF0ZUNhY2hlZEJvdW5kYXJpZXMoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc1NWR0NvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIEZsb2F0UmVjdCBtX29iamVjdEJvdW5kaW5nQm94OwogICAgIGJvb2wg
bV9vYmplY3RCb3VuZGluZ0JveFZhbGlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0VsbGlwc2UuaAppbmRleCA5YTZmYzEyY2RlZGFiYTE1NTI1YzQ0ZGJhODkz
ZThjZjU5ZTZiNDc1Li44YzQ4NjQ5YmViY2VhZTExZTZmNWRjM2YyZjgyOTQ4ZGU4NzM4YmI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuaApA
QCAtMzcsMTUgKzM3LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5SZW5kZXJTVkdFbGxpcHNl
KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0VsbGlwc2UiOyB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBS
ZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDogbV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9
Ci0gICAgdmlydHVhbCBib29sIGlzUmVuZGVyaW5nRGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQmKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJva2VDb250YWlu
cyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNoYXBlRGVw
ZW5kZW50RmlsbENvbnRhaW5zKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdFbGxpcHNlIjsgfQorCisgICAgdm9pZCB1cGRhdGVTaGFwZUZy
b21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV91c2VQYXRoRmFsbGJhY2sgPyBSZW5kZXJTVkdTaGFwZTo6aXNFbXB0eSgpIDog
bV9maWxsQm91bmRpbmdCb3guaXNFbXB0eSgpOyB9CisgICAgYm9vbCBpc1JlbmRlcmluZ0Rpc2Fi
bGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0
JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJva2VTaGFwZShHcmFwaGljc0NvbnRleHQm
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNoYXBlRGVwZW5kZW50U3Ryb2tlQ29udGFpbnMo
Y29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hhcGVEZXBlbmRlbnRGaWxs
Q29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IFdpbmRSdWxlKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2b2lkIGNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVyKCk7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ZvcmVpZ25PYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5oCmluZGV4IDcyODIzYTNmZDg3OWRiYTBiYTJjMzllM2QwMzU2YWE2ZTUyMWUzZWYuLjI3YzQ4
MDMzZTIzOGVhOWY5N2Q2ODg2Y2I2ZDM0MmY4NTkyZjlmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oCkBAIC0zNywz
NiArMzcsMzYgQEAgcHVibGljOgogCiAgICAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQmIGZvcmVp
Z25PYmplY3RFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJ
bmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIExheW91
dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBG
bG9hdFJlY3QgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9
IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IG92ZXJyaWRl
OworICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgRmxvYXRSZWN0IGNvbXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4
ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBjb21wdXRlUmVjdEZv
clJlcGFpbnQoY29uc3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIGJvb2wg
cmVxdWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IG9iamVjdEJvdW5k
aW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwg
bV92aWV3cG9ydC5zaXplKCkpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRp
bmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBt
X3ZpZXdwb3J0LnNpemUoKSk7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCByZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIEZsb2F0UmVjdCBvYmplY3RCb3Vu
ZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IG1fdmlld3BvcnQuc2l6ZSgpKTsgfQorICAgIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmlld3Bv
cnQuc2l6ZSgpKTsgfQorICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRl
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fdmll
d3BvcnQuc2l6ZSgpKTsgfQogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29u
c3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhp
dFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVB
dEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxh
Z3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRl
IHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2b2lkIG1hcExvY2FsVG9D
b250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
VHJhbnNmb3JtU3RhdGUmLCBNYXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFp
bmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRl
ckdlb21ldHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc1RyYW5zZm9y
bVVwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTVkdGb3JlaWduT2JqZWN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZ3JhcGhpY3NFbGVtZW50KCkg
Y29uc3QgPSBkZWxldGU7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ZvcmVpZ25PYmplY3QiOyB9CisgICAgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdG
b3JlaWduT2JqZWN0IjsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxvZ2ljYWxXaWR0aCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCwgTG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVMb2dpY2FsV2lk
dGgoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQg
bG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2FsVG9wLCBMb2dpY2FsRXh0ZW50Q29tcHV0
ZWRWYWx1ZXMmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBBZmZpbmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2Nh
bFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgQWZmaW5lVHJhbnNmb3Jt
IGxvY2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9y
bTsgfQogCiAgICAgYm9vbCBtX25lZWRzVHJhbnNmb3JtVXBkYXRlIDogMTsKICAgICBGbG9hdFJl
Y3QgbV92aWV3cG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0dyYWRpZW50U3RvcC5oCmluZGV4IGRhOTUzZGRkNDQyM2E0YjM5NjUzZGE1YmFjMTUy
ODEwYjFiOWI3YzQuLmU2MmUwY2E4ZTNkMTQ5YzcwYzFiOWI1OWUyNzE3NTgzNzc1NWViMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRT
dG9wLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuaApAQCAtMzgsMjQgKzM4LDI0IEBAIHB1YmxpYzoKICAgICBTVkdTdG9wRWxlbWVudCYg
ZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PFNWR1N0b3BFbGVtZW50PihSZW5kZXJP
YmplY3Q6Om5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJl
bmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAK
ICAgICAvLyBUaGVzZSBvdmVycmlkZXMgYXJlIG5lZWRlZCB0byBwcmV2ZW50IEFTU0VSVHMgb24g
PHN2Zz48c3RvcCAvPjwvc3ZnPgogICAgIC8vIFJlbmRlck9iamVjdCdzIGRlZmF1bHQgaW1wbGVt
ZW50YXRpb25zIEFTU0VSVF9OT1RfUkVBQ0hFRCgpCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNDAwCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEZsb2F0
UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZsb2F0UmVj
dCgpOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJl
cGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxv
YXRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiwgSGl0VGVzdEFj
dGlvbikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBMYXlvdXRSZWN0IGNsaXBwZWRP
dmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICBGbG9hdFJlY3Qgb2JqZWN0
Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorICAg
IEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZs
b2F0UmVjdCgpOyB9CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KKyAgICBib29sIG5vZGVB
dEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
RmxvYXRQb2ludCYsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdHcmFkaWVudFN0b3AoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0dyYWRpZW50U3RvcCI7IH0KKyAgICBib29sIGlz
U1ZHR3JhZGllbnRTdG9wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
R3JhZGllbnRTdG9wIjsgfQogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBjYW5I
YXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQg
cGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSB7IH0KIAogICAg
IFNWR0dyYWRpZW50RWxlbWVudCogZ3JhZGllbnRFbGVtZW50KCk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmgK
aW5kZXggZjcwYWM1MTJmODM4MzJmYTVlYjk2OTIxMTNiNGQ4NzE1ZGYxNmZhMy4uMjY2MTNjZjg2
MmM0ZGE3ODlkYzllYzg4MzQzODk2ZTFlYjQwMDQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oCkBAIC0zMywx
OCArMzMsMTggQEAgcHVibGljOgogICAgIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihTVkdFbGVt
ZW50JiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0hpZGRlbkNvbnRhaW5lcigpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRl
ck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVy
IjsgfQorICAgIGJvb2wgaXNTVkdIaWRkZW5Db250YWluZXIoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiB0cnVlOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdIaWRkZW5Db250YWluZXIiOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZSBm
aW5hbDsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3Zl
cnJpZGUgZmluYWw7CiAgICAgCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxv
d1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdCBvdmVy
cmlkZSBmaW5hbCB7IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWJz
b2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVy
cmlkZSBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50
KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9uKSBv
dmVycmlkZSBmaW5hbDsKKyAgICBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCwg
SGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CiB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggMzY5MmU0MDFhMzIwZjk4YjQz
NzNjNDI5ODhjNWI5MTRiOTIyZDFmYS4uMDcwYzBiOTJhMDJjNTI4ZjliN2Q3Y2RhNTQzZGFkNmUy
NWI1OWI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1h
Z2UuaApAQCAtNDIsOSArNDIsOSBAQCBwdWJsaWM6CiAgICAgU1ZHSW1hZ2VFbGVtZW50JiBpbWFn
ZUVsZW1lbnQoKSBjb25zdDsKIAogICAgIGJvb2wgdXBkYXRlSW1hZ2VWaWV3cG9ydCgpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVl
ZHNCb3VuZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JvdW5k
YXJpZXNVcGRhdGUoKSBvdmVycmlkZSB7IHJldHVybiBtX25lZWRzQm91bmRhcmllc1VwZGF0ZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92ZXJyaWRlIHsg
bV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICB2b2lkIHNldE5lZWRzQm91bmRh
cmllc1VwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgPSB0cnVlOyB9
CisgICAgYm9vbCBuZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSB7IHJldHVybiBtX25l
ZWRzQm91bmRhcmllc1VwZGF0ZTsgfQorICAgIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUo
KSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CiAKICAgICBSZW5k
ZXJJbWFnZVJlc291cmNlJiBpbWFnZVJlc291cmNlKCkgeyByZXR1cm4gKm1faW1hZ2VSZXNvdXJj
ZTsgfQogICAgIGNvbnN0IFJlbmRlckltYWdlUmVzb3VyY2UmIGltYWdlUmVzb3VyY2UoKSBjb25z
dCB7IHJldHVybiAqbV9pbWFnZVJlc291cmNlOyB9CkBAIC01NSwyOSArNTUsMjkgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZp
cnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJTVkdJbWFnZSI7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUNoaWxkcmVu
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0ltYWdlIjsgfQorICAg
IGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBi
b29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
LSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX2xvY2FsVHJhbnNmb3JtOyB9CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBv
YmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRp
bmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0KLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fcmVwYWludEJvdW5kaW5nQm94OyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsgfQorICAg
IEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
b2JqZWN0Qm91bmRpbmdCb3g7IH0KKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5kaW5nQm94OyB9CisgICAgRmxvYXRS
ZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbV9yZXBhaW50Qm91bmRpbmdCb3g7IH0KKyAgICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxv
Y2FsQ29vcmRpbmF0ZXNFeGNsdWRpbmdTVkdTaGFkb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGluZ1NoYWRvdzsgfQogCi0gICAgdmlydHVhbCB2
b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWlu
dENvbnRhaW5lciA9IDApIG92ZXJyaWRlOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVj
dG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3Qg
SW50UmVjdCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICB2b2lkIGltYWdlQ2hhbmdlZChXcmFw
cGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGludmFsaWRhdGVCdWZmZXJlZEZvcmVncm91bmQoKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0
JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRl
c3RBY3Rpb24pIG92ZXJyaWRlOworICAgIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRU
ZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFy
ZW50LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIGxvY2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5z
Zm9ybTsgfQorICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KICAgICB2b2lkIGNhbGN1bGF0ZUltYWdl
Vmlld3BvcnQoKTsKIAogICAgIGJvb2wgbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGUgOiAxOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lLmgKaW5kZXggN2Iy
NjgxNjcyZDViOTU3ZTUzODMwMTgxOTEwZjYwNTRlOWU3NzgzZi4uZTJjMGQyODE3MTJiNGZiMGZj
MjVjYWY2NDAzY2Y5MGJjNTg5MjBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZS5oCkBAIC0zNSwzNCArMzUsMzQgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29u
c3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdJ
bmxpbmUiOyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0lubGluZSgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiBy
ZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR0lubGluZSI7IH0K
KyAgICBib29sIHJlcXVpcmVzTGF5ZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBm
YWxzZTsgfQorICAgIGJvb2wgaXNTVkdJbmxpbmUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbVN0eWxlKCkgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCB1cGRhdGVGcm9tU3R5bGUoKSBvdmVycmlkZSBmaW5hbDsKIAog
ICAgIC8vIENoYXB0ZXIgMTAuNCBvZiB0aGUgU1ZHIFNwZWNpZmljYXRpb24gc2F5IHRoYXQgd2Ug
c2hvdWxkIHVzZSB0aGUKICAgICAvLyBvYmplY3QgYm91bmRpbmcgYm94IG9mIHRoZSBwYXJlbnQg
dGV4dCBlbGVtZW50LgogICAgIC8vIFdlIHNlYXJjaCBmb3IgdGhlIHJvb3QgdGV4dCBlbGVtZW50
IGFuZCB0YWtlIGl0cyBib3VuZGluZyBib3guCiAgICAgLy8gSXQgaXMgYWxzbyBuZWNlc3Nhcnkg
dG8gdGFrZSB0aGUgc3Ryb2tlIGFuZCByZXBhaW50IHJlY3Qgb2YKICAgICAvLyB0aGlzIGVsZW1l
bnQsIHNpbmNlIHdlIG5lZWQgaXQgZm9yIGZpbHRlcnMuCi0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
b2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBzdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZp
cnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVzKCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgRmxvYXRSZWN0IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3Zl
cnJpZGUgZmluYWw7CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBl
ZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVw
YWludENvbnRhaW5lcikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCBGbG9hdFJl
Y3QgY29tcHV0ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNl
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgbWFwTG9jYWxUb0NvbnRh
aW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFu
c2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBp
bmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3Rv
cEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgRmxvYXRSZWN0IGNvbXB1dGVGbG9hdFJlY3RG
b3JSZXBhaW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgTWFwQ29vcmRpbmF0ZXNG
bGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIGNvbnN0IFJl
bmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1hcCYpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJv
b2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPElubGluZUZsb3dCb3g+IGNyZWF0ZUlubGluZUZsb3dCb3goKSBvdmVycmlkZSBm
aW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRmxvd0JveD4gY3JlYXRlSW5saW5lRmxv
d0JveCgpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHls
ZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkgb3ZlcnJpZGUgZmluYWw7
CisgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KSBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChSZW5kZXJPYmpl
Y3QqIGNoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNoaWxkID0gbnVsbHB0cikgb3ZlcnJpZGUg
ZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVy
T2JqZWN0KiBiZWZvcmVDaGlsZCA9IG51bGxwdHIpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQg
cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0lubGluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IDdlMzQ5OTc4ZTBlMzM0YjBjMjQyMzJkNWM4Y2ZkNTA4
YmZiMTg5NzYuLjc0Njc3M2JkOTJkZWM5MThkOTdkMWYzMzQ0ZmUzMWUwNDdjYzg1M2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5o
CkBAIC00OSwyMCArNDksMjAgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBmbG9hdExpbmVzQm91
bmRpbmdCb3goKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHSW5saW5lVGV4dCI7
IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlJlbmRlclNWR0lubGluZVRleHQiOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBvcmlnaW5hbFRl
eHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UmVuZGVyZWRUZXh0KGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShT
dHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IG9yaWdpbmFsVGV4dCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UmVuZGVyZWRUZXh0
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVE
aWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBG
bG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmbG9h
dExpbmVzQm91bmRpbmdCb3goKTsgfQorICAgIEZsb2F0UmVjdCBvYmplY3RCb3VuZGluZ0JveCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZsb2F0TGluZXNCb3VuZGluZ0JveCgpOyB9CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdJbmxpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIGJvb2wgaXNTVkdJbmxpbmVUZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlclJlZ2lvbiopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRP
ZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgSW50UmVjdCBsaW5lc0JvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgp
IG92ZXJyaWRlOworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExh
eW91dFBvaW50JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVj
dCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQq
IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApIG92ZXJyaWRlOworICAgIEludFJlY3QgbGluZXNC
b3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVU
ZXh0Qm94PiBjcmVhdGVUZXh0Qm94KCkgb3ZlcnJpZGU7CiAKICAgICBmbG9hdCBtX3NjYWxpbmdG
YWN0b3I7CiAgICAgRm9udENhc2NhZGUgbV9zY2FsZWRGb250OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5oCmluZGV4IDZhNTg1N2Nh
MWIzZWRmZjRlOGVkNWYxN2NmMWJmYjVkYTVmNThkMjkuLjM5YmQ1Zjc0MzI2ZDY2ZGNkMzE2NjAy
ZTg1OTNjZDFjZTBiMWIyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmgKQEAgLTQ2LDE2ICs0NiwxNiBAQCBjbGFzcyBTVkdF
bGVtZW50OwogCiBjbGFzcyBSZW5kZXJTVkdNb2RlbE9iamVjdCA6IHB1YmxpYyBSZW5kZXJFbGVt
ZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
cikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgY29tcHV0ZUZsb2F0UmVj
dEZvclJlcGFpbnQoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVuZGVy
R2VvbWV0cnlNYXAqKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0UmVjdCBjb21wdXRlRmxv
YXRSZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IG92ZXJy
aWRlIGZpbmFsOworICAgIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgY29uc3QgUmVuZGVyR2Vv
bWV0cnlNYXAqKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAotICAgIHZpcnR1YWwgdm9pZCBhYnNv
bHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRl
ZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCBhYnNvbHV0ZVJlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBh
YnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIG1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBN
YXBDb29yZGluYXRlc0ZsYWdzLCBib29sKiB3YXNGaXhlZCkgY29uc3Qgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIo
Y29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2Vv
bWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgc3R5bGVE
aWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92
ZXJyaWRlOworICAgIHZvaWQgbWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5h
dGVzRmxhZ3MsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICBjb25z
dCBSZW5kZXJPYmplY3QqIHB1c2hNYXBwaW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogYW5jZXN0b3JUb1N0b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBib29s
IGNoZWNrSW50ZXJzZWN0aW9uKFJlbmRlckVsZW1lbnQqLCBjb25zdCBGbG9hdFJlY3QmKTsKICAg
ICBzdGF0aWMgYm9vbCBjaGVja0VuY2xvc3VyZShSZW5kZXJFbGVtZW50KiwgY29uc3QgRmxvYXRS
ZWN0Jik7CkBAIC02OSwxNCArNjksMTQgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFJlbmRl
clNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogCi0gICAg
dmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEJl
RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzUmVu
ZGVyU1ZHTW9kZWxPYmplY3QoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc1JlbmRlclNWR01vZGVsT2JqZWN0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gVGhpcyBtZXRob2Qgc2hvdWxkIG5ldmVyIGJlIGNh
bGxlZCwgU1ZHIHVzZXMgYSBkaWZmZXJlbnQgbm9kZUF0UG9pbnQgbWV0aG9kCi0gICAgdmlydHVh
bCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0
UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYpIG92
ZXJyaWRlIGZpbmFsOworICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24p
IG92ZXJyaWRlOworICAgIHZvaWQgYWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYpIG92ZXJyaWRlIGZpbmFsOwogICAgIGJvb2wgbV9oYXNTVkdTaGFkb3c7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1BhdGguaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUGF0aC5oCmluZGV4IGJiZDIy
ZGM1YjBjYjliODVjMTJlODEwYmViMDQ0NDFjMjlkODc2OGUuLjkwMDEzMzFlMWZlYjcyZWU3NWI4
NzUwMzBkNmY0ZTY3ZTY2NWM3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUGF0aC5oCkBAIC0zNiwyMSArMzYsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flJlbmRlclNWR1BhdGgoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdQYXRo
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdQYXRoIjsg
fQorICAgIGJvb2wgaXNTVkdQYXRoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVu
ZGVyU1ZHUGF0aCI7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTaGFwZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7
CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVwZGF0ZWRTdHJva2VCb3VuZGluZ0JveCgpIGNvbnN0
OwogCi0gICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5z
KGNvbnN0IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cm9rZVNoYXBlKEdyYXBo
aWNzQ29udGV4dCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hhcGVEZXBlbmRlbnRTdHJv
a2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3Vs
ZFN0cm9rZVplcm9MZW5ndGhTdWJwYXRoKCkgY29uc3Q7CiAgICAgUGF0aCogemVyb0xlbmd0aExp
bmVjYXBQYXRoKGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKICAgICBGbG9hdFJlY3QgemVyb0xl
bmd0aFN1YnBhdGhSZWN0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCkgY29uc3Q7CiAgICAgdm9p
ZCB1cGRhdGVaZXJvTGVuZ3RoU3VicGF0aHMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRl
cmluZ0Rpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1JlbmRlcmluZ0Rpc2Fi
bGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8RmxvYXRQb2ludD4gbV96ZXJvTGVu
Z3RoTGluZWNhcExvY2F0aW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVjdC5oCmluZGV4IDAyNmVlNjMwOWI1OTFlYzFmMGMzNWNkNjMyMTU3OTUyNzky
ZTRlYTIuLjJiZjJkNDZjMzVkNTU4ZGZiZmEzNzVjZDc3YTljOWMyNjkxNTBhMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5oCkBAIC00MywxNSArNDMs
MTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1JlY3QiOyB9CisgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZWN0IjsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdXNlUGF0aEZh
bGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5kaW5nQm94Lmlz
RW1wdHkoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbGxTaGFwZShHcmFwaGljc0NvbnRleHQmKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNoYXBlRGVwZW5kZW50U3Ry
b2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2lu
ZFJ1bGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxlbWVudCgp
IG92ZXJyaWRlOworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
dXNlUGF0aEZhbGxiYWNrID8gUmVuZGVyU1ZHU2hhcGU6OmlzRW1wdHkoKSA6IG1fZmlsbEJvdW5k
aW5nQm94LmlzRW1wdHkoKTsgfQorICAgIGJvb2wgaXNSZW5kZXJpbmdEaXNhYmxlZCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IG92
ZXJyaWRlOworICAgIHZvaWQgc3Ryb2tlU2hhcGUoR3JhcGhpY3NDb250ZXh0JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgYm9vbCBzaGFwZURlcGVuZGVudFN0cm9rZUNvbnRhaW5zKGNvbnN0IEZsb2F0
UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHNoYXBlRGVwZW5kZW50RmlsbENvbnRhaW5zKGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBXaW5kUnVsZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6CiAgICAgRmxvYXRSZWN0IG1faW5uZXJTdHJva2VSZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgKaW5kZXgg
MmE2ZmY0M2Y5MDA0ODI3ZGQ3MWFkMjZkNjAwMWJmMTU0ZThiNWRjYi4uMmY3OGQxYmI1ODMyOWM0
YTdiYTM3ZDMwM2VkYTVjMmMzMmIzZTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCkBAIC00MCwyOSArNDAs
MjkgQEAgcHVibGljOgogCiAgICAgU1ZHQ2xpcFBhdGhFbGVtZW50JiBjbGlwUGF0aEVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdDbGlwUGF0aEVsZW1lbnQ+KG5vZGVGb3JOb25B
bm9ueW1vdXMoKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNh
Y2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYsIGJvb2wgbWFya0Zv
ckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQWxsQ2xpZW50
c0Zyb21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiwgYm9vbCBtYXJrRm9y
SW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlS
ZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRl
eHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKSBvdmVycmlkZTsKKyAgICBib29sIGFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3ND
b250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkgb3ZlcnJpZGU7CiAgICAgLy8g
Y2xpcFBhdGggY2FuIGJlIGNsaXBwZWQgdG9vLCBidXQgZG9uJ3QgaGF2ZSBhIGJvdW5kaW5nQm94
IG9yIHJlcGFpbnRSZWN0LiBTbyB3ZSBjYW4ndCBjYWxsCiAgICAgLy8gYXBwbHlSZXNvdXJjZSBk
aXJlY3RseSBhbmQgdXNlIHRoZSByZWN0cyBmcm9tIHRoZSBvYmplY3QsIHNpbmNlIHRoZXkgYXJl
IGVtcHR5IGZvciBSZW5kZXJTVkdSZXNvdXJjZXMKICAgICAvLyBGSVhNRTogV2UgbWFkZSBhcHBs
eUNsaXBwaW5nVG9Db250ZXh0IHB1YmxpYyBiZWNhdXNlIHdlIGNhbm5vdCBjYWxsIGFwcGx5UmVz
b3VyY2Ugb24gSFRNTCBlbGVtZW50cyAoaXQgYXNzZXJ0cyBvbiBSZW5kZXJPYmplY3Q6Om9iamVj
dEJvdW5kaW5nQm94KQogICAgIGJvb2wgYXBwbHlDbGlwcGluZ1RvQ29udGV4dChSZW5kZXJFbGVt
ZW50JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NDb250ZXh0
Jik7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5k
ZXJPYmplY3QmKSBvdmVycmlkZTsKKyAgICBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChj
b25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVz
b3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENsaXBwZXJS
ZXNvdXJjZVR5cGU7IH0KKyAgICBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ2xpcHBlclJlc291cmNlVHlwZTsgfQogICAgIAogICAg
IGJvb2wgaGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9p
bnQmKTsKIAogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgY2xpcFBhdGhVbml0cygpIGNv
bnN0IHsgcmV0dXJuIGNsaXBQYXRoRWxlbWVudCgpLmNsaXBQYXRoVW5pdHMoKTsgfQogCiBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHNlbGZOZWVkc0NsaWVudEludmFsaWRhdGlvbigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIChldmVySGFkTGF5b3V0KCkgfHwgbV9jbGlwcGVyLnNpemUo
KSkgJiYgc2VsZk5lZWRzTGF5b3V0KCk7IH0KKyAgICBib29sIHNlbGZOZWVkc0NsaWVudEludmFs
aWRhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIChldmVySGFkTGF5b3V0KCkgfHwgbV9j
bGlwcGVyLnNpemUoKSkgJiYgc2VsZk5lZWRzTGF5b3V0KCk7IH0KIAogcHJpdmF0ZToKICAgICB2
b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIiOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIiOyB9CiAgICAgYm9vbCBpc1NWR1Jlc291
cmNlQ2xpcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wg
cGF0aE9ubHlDbGlwcGluZyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBjb25zdCBGbG9hdFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAppbmRleCA2YjA3ODM5OTdjMmU4
MDQ4NzRjMGMyMzI4ZDNmZTQ2MDBhZTg1YWI4Li44MTAwMzIyMTlkNDY5OGUzYzQ4MzJjNmRhODU5
NDYxNWRiZDM0NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCkBAIC0zMiwxMCArMzIsMTAgQEAgY2xh
c3MgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLAogcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAg
IHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUpIG92ZXJyaWRlIGZpbmFsOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHUmVzb3Vy
Y2VDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisgICAg
Ym9vbCBpc1NWR1Jlc291cmNlQ29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkVHJhbnNmb3JtT25UZXh0UGFpbnRp
bmcoY29uc3QgUmVuZGVyRWxlbWVudCYsIEFmZmluZVRyYW5zZm9ybSYpOwogICAgIHN0YXRpYyBB
ZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtT25Ob25TY2FsaW5nU3Ryb2tlKFJlbmRlck9iamVjdCos
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcmVzb3VyY2VUcmFuc2Zvcm0pOwpAQCAtNjYsNyArNjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQmKTsKICAgICB2
b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlRGVzdHJveWVkKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCB3aWxsQmVEZXN0cm95ZWQo
KSBvdmVycmlkZSBmaW5hbDsKICAgICB2b2lkIHJlZ2lzdGVyUmVzb3VyY2UoKTsKIAogICAgIEF0
b21pY1N0cmluZyBtX2lkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IGQ2Y2NmYmY4NjZmZGMwYWViYmY3ZDdl
NjE1MDE3ZjU3ZjBjNDE5MTguLmZkYTAwNjZlZDM4NTg3OTAzYWI3MTNiNzU4OGJkOGY3OWJmNTg0
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgKQEAgLTY3LDEzICs2NywxMyBAQCBwdWJsaWM6CiAKICAgICBTVkdG
aWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZH
RmlsdGVyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0Zv
ckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVD
bGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9
IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29s
IG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNs
aWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0g
dHJ1ZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQg
c2hvcnQgcmVzb3VyY2VNb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdEFwcGx5
UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9y
dCByZXNvdXJjZU1vZGUsIGNvbnN0IFBhdGgqLCBjb25zdCBSZW5kZXJTVkdTaGFwZSopIG92ZXJy
aWRlOworICAgIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVy
U3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFw
aGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBjb25zdCBQYXRoKiwg
Y29uc3QgUmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7CisgICAg
RmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJp
ZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHRmlsdGVyQnVpbGRlcj4gYnVpbGRQcmltaXRp
dmVzKFNWR0ZpbHRlciYpIGNvbnN0OwogCkBAIC04MiwxNCArODIsMTQgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291
cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZpbHRlclJlc291cmNlVHlwZTsgfQor
ICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBGaWx0ZXJSZXNvdXJjZVR5cGU7IH0KIAogICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVn
aW9uKFJlbmRlck9iamVjdCopIGNvbnN0OwogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciI7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNTVkdSZXNvdXJjZUZpbHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyIjsgfQorICAgIGJvb2wgaXNTVkdSZXNvdXJj
ZUZpbHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhhc2hNYXA8
UmVuZGVyT2JqZWN0Kiwgc3RkOjp1bmlxdWVfcHRyPEZpbHRlckRhdGE+PiBtX2ZpbHRlcjsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXggZWRlOTJiYzBkMWNiMTIyMGEyODM4
NzQ1ZjJhMGVmZmUwNTc0MWVmZC4uODIwNWQ5ZTU0Njk2YzQ3ZTNkZTBlMTEzZDEzNGJiYmQ5ZDMx
MzI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzksOSArMzksOSBAQCBw
dWJsaWM6CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzJiwgUmVmPFJlbmRlclN0eWxlPiYmKTsKICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMmIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQo
KSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9CisgICAgY29uc3QgY2hhciogcmVu
ZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRl
clByaW1pdGl2ZSI7IH0KIAogICAgIC8vIFRoZXkgZGVwZW5kIG9uIHRoZSBSZW5kZXJPYmplY3Qg
YXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UuCiAgICAg
c3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVy
RWZmZWN0Jik7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIqPihmaWx0ZXIpLT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKHRoaXMsIGF0dHJpYnV0ZSk7CiAgICAgfQogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICBib29sIGlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VHcmFkaWVudC5oCmluZGV4IDc4ZGE3M2FkYzVlZjRhY2IzY2JkMTc4N2ZjNGQy
YjI4YzE1MDIwNjEuLmIzNmUxNDk5ZTRjOGI2NmMzMTIxOGQ2YmM3ODdmYzNjMjgxNzgzZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VH
cmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VHcmFkaWVudC5oCkBAIC00NCwxMiArNDQsMTIgQEAgY2xhc3MgUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudCA6IHB1YmxpYyBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciB7CiBwdWJsaWM6
CiAgICAgU1ZHR3JhZGllbnRFbGVtZW50JiBncmFkaWVudEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxTVkdHcmFkaWVudEVsZW1lbnQmPihSZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lcjo6ZWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNG
cm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50Jiwg
Ym9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9p
ZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRy
dWUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRl
ckVsZW1lbnQmLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZSBmaW5h
bDsKIAotICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJj
ZU1vZGUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJj
ZShSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291
cmNlTW9kZSwgY29uc3QgUGF0aCosIGNvbnN0IFJlbmRlclNWR1NoYXBlKikgb3ZlcnJpZGUgZmlu
YWw7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5k
ZXJPYmplY3QmKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBGbG9hdFJlY3QoKTsgfQorICAgIGJv
b2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFw
aGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKSBvdmVycmlkZSBmaW5h
bDsKKyAgICB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0Nv
bnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBjb25zdCBQYXRoKiwgY29uc3Qg
UmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZSBmaW5hbDsKKyAgICBGbG9hdFJlY3QgcmVzb3VyY2VC
b3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBG
bG9hdFJlY3QoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVu
dChTVkdHcmFkaWVudEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGlu
ZWFyR3JhZGllbnQuaAppbmRleCA5NjM0ODI4M2ZhOTU2NTQ0YTMwZThhZmFhNjQ0ZDI2NTE5NDQ3
NGY0Li4wMmUzMzY4YjlmMWRiZDUwZDdjN2Q0NDdkOTM5YjVmMzYzNGEyOWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTGluZWFyR3Jh
ZGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlTGluZWFyR3JhZGllbnQuaApAQCAtMzQsMTIgKzM0LDEyIEBAIHB1YmxpYzoKIAogICAgIFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudCYgbGluZWFyR3JhZGllbnRFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZG93bmNhc3Q8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50OjpncmFkaWVudEVsZW1lbnQoKSk7IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyU1ZH
UmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExpbmVh
ckdyYWRpZW50UmVzb3VyY2VUeXBlOyB9CisgICAgUmVuZGVyU1ZHUmVzb3VyY2VUeXBlIHJlc291
cmNlVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIExpbmVhckdyYWRpZW50UmVzb3VyY2VU
eXBlOyB9CiAKLSAgICB2aXJ0dWFsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgZ3JhZGllbnRV
bml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5ncmFkaWVudFVuaXRz
KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlR3JhZGllbnRUcmFuc2Zvcm0oQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0pIG92ZXJyaWRlIHsgdHJhbnNmb3JtID0gbV9hdHRyaWJ1dGVz
LmdyYWRpZW50VHJhbnNmb3JtKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29sbGVjdEdyYWRpZW50
QXR0cmlidXRlcygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBidWlsZEdyYWRpZW50KEdy
YWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOworICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0cmlidXRlcy5n
cmFkaWVudFVuaXRzKCk7IH0KKyAgICB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJhbnNmb3JtKEFm
ZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBvdmVycmlkZSB7IHRyYW5zZm9ybSA9IG1fYXR0cmli
dXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CisgICAgYm9vbCBjb2xsZWN0R3JhZGllbnRBdHRy
aWJ1dGVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBidWlsZEdyYWRpZW50KEdyYWRpZW50RGF0YSop
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50KGNvbnN0IExpbmVh
ckdyYWRpZW50QXR0cmlidXRlcyYpIGNvbnN0OwogICAgIEZsb2F0UG9pbnQgZW5kUG9pbnQoY29u
c3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7CkBAIC00Nyw3ICs0Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFkaWVudEVsZW1lbnQoKSBjb25zdCA9IGRlbGV0
ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUxpbmVhckdyYWRpZW50IjsgfQorICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVz
b3VyY2VMaW5lYXJHcmFkaWVudCI7IH0KIAogICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRlcyBt
X2F0dHJpYnV0ZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCmluZGV4IDhiODQ2OGY3ODI3MDY2ZmFlNzVlODYy
MTViYmZmNGI3NmEzMjNjZmYuLjM1YjFkYTExZjUzYjJlNTQ2ZTM3NDgxNGVhZDIzNzZlZTBhN2U4
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VNYXJrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlTWFya2VyLmgKQEAgLTM3LDM0ICszNywzNCBAQCBwdWJsaWM6CiAKICAgICBTVkdN
YXJrZXJFbGVtZW50JiBtYXJrZXJFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8U1ZH
TWFya2VyRWxlbWVudD4oUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0Zv
ckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVD
bGllbnRGcm9tQ2FjaGUoUmVuZGVyRWxlbWVudCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9
IHRydWUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29s
IG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNs
aWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0g
dHJ1ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRyYXcoUGFpbnRJbmZvJiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJik7CiAKICAgICAvLyBDYWxjdWxhdGVzIG1hcmtlciBib3VuZGFyaWVzLCBtYXBw
ZWQgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgY29vcmRpbmF0ZSBzcGFjZQogICAgIEZsb2F0UmVj
dCBtYXJrZXJCb3VuZGFyaWVzKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWFya2VyVHJhbnNmb3Jt
YXRpb24pIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5Vmlld3BvcnRDbGlwKFBhaW50
SW5mbyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseVZp
ZXdwb3J0Q2xpcChQYWludEluZm8mKSBvdmVycmlkZTsKKyAgICB2b2lkIGxheW91dCgpIG92ZXJy
aWRlOworICAgIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXJrZXJUcmFuc2Zvcm1hdGlv
bihjb25zdCBGbG9hdFBvaW50JiBvcmlnaW4sIGZsb2F0IGFuZ2xlLCBmbG9hdCBzdHJva2VXaWR0
aCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3Vy
Y2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJldHVybiBGbG9h
dFJlY3QoKTsgfQorICAgIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3Qg
UmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQpIG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgRmxvYXRSZWN0IHJlc291cmNlQm91bmRpbmdCb3goY29u
c3QgUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGUgeyByZXR1cm4gRmxvYXRSZWN0KCk7IH0KIAogICAg
IEZsb2F0UG9pbnQgcmVmZXJlbmNlUG9pbnQoKSBjb25zdDsKICAgICBmbG9hdCBhbmdsZSgpIGNv
bnN0OwogICAgIFNWR01hcmtlclVuaXRzVHlwZSBtYXJrZXJVbml0cygpIGNvbnN0IHsgcmV0dXJu
IG1hcmtlckVsZW1lbnQoKS5tYXJrZXJVbml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNW
R1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNYXJr
ZXJSZXNvdXJjZVR5cGU7IH0KKyAgICBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWFya2VyUmVzb3VyY2VUeXBlOyB9CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZH
UmVzb3VyY2VNYXJrZXIiOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciI7IH0KIAogICAgIC8vIEdl
bmVyYXRlcyBhIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB1c2FibGUgdG8gcmVuZGVyIG1hcmtlciBj
b250ZW50LiBIYW5kbGVzIHNjYWxpbmcgdGhlIG1hcmtlciBjb250ZW50CiAgICAgLy8gYWNvcmRp
bmcgdG8gU1ZHcyBtYXJrZXJVbml0cz0ic3Ryb2tlV2lkdGgiIGNvbmNlcHQsIHdoZW4gYSBzdHJv
a2VXaWR0aCB2YWx1ZSAhPSAtMSBpcyBwYXNzZWQgaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgKaW5kZXggYmVmMjk4
NWMzZTY2MGY5NGFiOGNhNjBmNGM3ZDlhZjZlZGFlOGI3Yi4uNWNlNzMwNGVkNWQ2YzkwYjEwNmJm
NmFiYzdmNjM4NjYzOWYxY2U0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaApAQCAtNDIsMjAgKzQyLDIwIEBAIHB1
YmxpYzoKIAogICAgIFNWR01hc2tFbGVtZW50JiBtYXNrRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFNWR01hc2tFbGVtZW50PihSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6ZWxl
bWVudCgpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUo
Ym9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiwgYm9vbCBtYXJrRm9ySW52
YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0KiYs
IHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9h
dFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0
aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVu
ZGVyRWxlbWVudCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKSBvdmVycmlk
ZTsKKyAgICBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3Qm
KSBvdmVycmlkZTsKIAogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbWFza1VuaXRzKCkg
Y29uc3QgeyByZXR1cm4gbWFza0VsZW1lbnQoKS5tYXNrVW5pdHMoKTsgfQogICAgIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUgbWFza0NvbnRlbnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1hc2tF
bGVtZW50KCkubWFza0NvbnRlbnRVbml0cygpOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclNWR1Jl
c291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNYXNrZXJS
ZXNvdXJjZVR5cGU7IH0KKyAgICBSZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gTWFza2VyUmVzb3VyY2VUeXBlOyB9CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXIiOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlciI7IH0KIAogICAgIGJvb2wgZHJh
d0NvbnRlbnRJbnRvTWFza0ltYWdlKE1hc2tlckRhdGEqLCBDb2xvclNwYWNlLCBSZW5kZXJPYmpl
Y3QqKTsKICAgICB2b2lkIGNhbGN1bGF0ZU1hc2tDb250ZW50UmVwYWludFJlY3QoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0
ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5oCmluZGV4IDVlZWFhMjQ0MjQwMmU3MDRkMzgyODc1MTYwMmIxZTNjZDhlNWU5M2EuLjU3
MmQ4MTIyZTFjZDY4N2NhNGEyMzYzNTY2YjNhNmI2NDQ3NzE1MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uaApA
QCAtNDQsMjAgKzQ0LDIwIEBAIHB1YmxpYzoKICAgICBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4o
U1ZHUGF0dGVybkVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIFNWR1BhdHRlcm5F
bGVtZW50JiBwYXR0ZXJuRWxlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVt
ZW50JiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRy
dWUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlckVsZW1l
bnQmLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50Jiwg
R3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0
aCosIGNvbnN0IFJlbmRlclNWR1NoYXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJl
dHVybiBGbG9hdFJlY3QoKTsgfQorICAgIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQg
cmVzb3VyY2VNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRl
ckVsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2Rl
LCBjb25zdCBQYXRoKiwgY29uc3QgUmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZTsKKyAgICBGbG9h
dFJlY3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7
IHJldHVybiBGbG9hdFJlY3QoKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUGF0dGVyblJlc291cmNl
VHlwZTsgfQorICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBQYXR0ZXJuUmVzb3VyY2VUeXBlOyB9CiAKICAgICB2b2lkIGNvbGxl
Y3RQYXR0ZXJuQXR0cmlidXRlcyhQYXR0ZXJuQXR0cmlidXRlcyYpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIHZpcnR1YWwgY29uc3Qg
Y2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4iOyB9CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4iOyB9CiAKICAgICBib29sIGJ1
aWxkVGlsZUltYWdlVHJhbnNmb3JtKFJlbmRlckVsZW1lbnQmLCBjb25zdCBQYXR0ZXJuQXR0cmli
dXRlcyYsIGNvbnN0IFNWR1BhdHRlcm5FbGVtZW50JiwgRmxvYXRSZWN0JiBwYXR0ZXJuQm91bmRh
cmllcywgQWZmaW5lVHJhbnNmb3JtJiB0aWxlSW1hZ2VUcmFuc2Zvcm0pIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUmFk
aWFsR3JhZGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VSYWRpYWxHcmFkaWVudC5oCmluZGV4IGQxYWE1N2M0ZjM0OTY3ZWE3ZWQ5ZjU2YTI1YTNl
NWVmNDBjYmRhZTEuLmM3NjM0M2ZjMTljZGUyNzY0Y2ViMDlkODNlNzE4NzUwNmYwNjMxNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VS
YWRpYWxHcmFkaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VSYWRpYWxHcmFkaWVudC5oCkBAIC0zNiwxMSArMzYsMTEgQEAgcHVibGljOgog
CiAgICAgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50JiByYWRpYWxHcmFkaWVudEVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+KFJlbmRlclNW
R1Jlc291cmNlR3JhZGllbnQ6OmdyYWRpZW50RWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCBS
ZW5kZXJTVkdSZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gUmFkaWFsR3JhZGllbnRSZXNvdXJjZVR5cGU7IH0KKyAgICBSZW5kZXJTVkdSZXNvdXJjZVR5
cGUgcmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmFkaWFsR3JhZGllbnRS
ZXNvdXJjZVR5cGU7IH0KIAotICAgIHZpcnR1YWwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBn
cmFkaWVudFVuaXRzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9hdHRyaWJ1dGVzLmdyYWRp
ZW50VW5pdHMoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVHcmFkaWVudFRyYW5zZm9y
bShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkgb3ZlcnJpZGUgeyB0cmFuc2Zvcm0gPSBtX2F0
dHJpYnV0ZXMuZ3JhZGllbnRUcmFuc2Zvcm0oKTsgfQotICAgIHZpcnR1YWwgdm9pZCBidWlsZEdy
YWRpZW50KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOworICAgIFNWR1VuaXRUeXBlczo6
U1ZHVW5pdFR5cGUgZ3JhZGllbnRVbml0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYXR0
cmlidXRlcy5ncmFkaWVudFVuaXRzKCk7IH0KKyAgICB2b2lkIGNhbGN1bGF0ZUdyYWRpZW50VHJh
bnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKSBvdmVycmlkZSB7IHRyYW5zZm9ybSA9
IG1fYXR0cmlidXRlcy5ncmFkaWVudFRyYW5zZm9ybSgpOyB9CisgICAgdm9pZCBidWlsZEdyYWRp
ZW50KEdyYWRpZW50RGF0YSopIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgRmxvYXRQb2ludCBjZW50
ZXJQb2ludChjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmKSBjb25zdDsKICAgICBGbG9h
dFBvaW50IGZvY2FsUG9pbnQoY29uc3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzJikgY29uc3Q7
CkBAIC01MCw4ICs1MCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBncmFkaWVudEVs
ZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVy
TmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdy
YWRpZW50IjsgfQotICAgIHZpcnR1YWwgYm9vbCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKCkg
b3ZlcnJpZGU7CisgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZVJhZGlhbEdyYWRpZW50IjsgfQorICAgIGJvb2wgY29s
bGVjdEdyYWRpZW50QXR0cmlidXRlcygpIG92ZXJyaWRlOwogCiAgICAgUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaAppbmRleCA0YmFk
NWI1MjI2ODYyYTFhZDY5OWI0NzI2ZDZhMGI3NTE4MThhNjY0Li5iOWM1Nzg4ZjgzNDI2YjY2NTY5
ODI5NjQ1YjNiOTQ0MjhhYzc4MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgKQEAgLTMxLDE0ICsz
MSwxNCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yKCk7CiAgICAg
dmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29sID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJFbGVtZW50JiwgYm9v
bCA9IHRydWUpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNo
ZShib29sID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2Fj
aGUoUmVuZGVyRWxlbWVudCYsIGJvb2wgPSB0cnVlKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3Jh
cGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0aCos
IGNvbnN0IFJlbmRlclNWR1NoYXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
cmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJldHVy
biBGbG9hdFJlY3QoKTsgfQorICAgIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVz
b3VyY2VNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVs
ZW1lbnQmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBj
b25zdCBQYXRoKiwgY29uc3QgUmVuZGVyU1ZHU2hhcGUqKSBvdmVycmlkZTsKKyAgICBGbG9hdFJl
Y3QgcmVzb3VyY2VCb3VuZGluZ0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBvdmVycmlkZSB7IHJl
dHVybiBGbG9hdFJlY3QoKTsgfQogCi0gICAgdmlydHVhbCBSZW5kZXJTVkdSZXNvdXJjZVR5cGUg
cmVzb3VyY2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU29saWRDb2xvclJlc291cmNl
VHlwZTsgfQorICAgIFJlbmRlclNWR1Jlc291cmNlVHlwZSByZXNvdXJjZVR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBTb2xpZENvbG9yUmVzb3VyY2VUeXBlOyB9CiAKICAgICBjb25zdCBD
b2xvciYgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAgICAgdm9pZCBzZXRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpIHsgbV9jb2xvciA9IGNvbG9yOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGJkNWY3ZjU3MmVkMTUzZGJk
MWVlZDA3ZThhYmZjMWE2MjQ3NjJjYmQuLmMzZmVmNDUyN2NmNGIyMmY0OGNjYjNmNzhiYWQ5YzJl
ODM1YmUyY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5oCkBAIC00NCwxNyArNDQsMTcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91
Z2hTVkdJbWFnZSgpIGNvbnN0OwogICAgIGJvb2wgaXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRh
aW5pbmdTVkdEb2N1bWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6ZSwgZG91YmxlJiBp
bnRyaW5zaWNSYXRpbykgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21wdXRlSW50cmluc2lj
UmF0aW9JbmZvcm1hdGlvbihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGRvdWJsZSYgaW50cmlu
c2ljUmF0aW8pIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2Vk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9Ci0gICAgdmlydHVhbCB2
b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc0JvdW5kYXJp
ZXNPclRyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCb3Vu
ZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9uZWVkc0JvdW5kYXJpZXNPclRyYW5z
Zm9ybVVwZGF0ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
IG92ZXJyaWRlIHsgbV9uZWVkc0JvdW5kYXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0K
KyAgICB2b2lkIHNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpIG92ZXJyaWRlIHsgbV9uZWVkc0Jv
dW5kYXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KKyAgICBib29sIG5lZWRzQm91bmRh
cmllc1VwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbmVlZHNCb3VuZGFyaWVzT3JUcmFuc2Zv
cm1VcGRhdGU7IH0KKyAgICB2b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUg
eyBtX25lZWRzQm91bmRhcmllc09yVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogCiAgICAgSW50
U2l6ZSBjb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250YWluZXJTaXplOyB9CiAg
ICAgdm9pZCBzZXRDb250YWluZXJTaXplKGNvbnN0IEludFNpemUmIGNvbnRhaW5lclNpemUpIHsg
bV9jb250YWluZXJTaXplID0gY29udGFpbmVyU2l6ZTsgfQogCi0gICAgdmlydHVhbCBib29sIGhh
c1JlbGF0aXZlRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzUmVsYXRp
dmVEaW1lbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAvLyBsb2NhbFRvQm9yZGVyQm94
VHJhbnNmb3JtIG1hcHMgbG9jYWwgU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIGxvY2FsIENT
UyBib3ggY29vcmRpbmF0ZXMuICAKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGxvY2FsVG9C
b3JkZXJCb3hUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xvY2FsVG9Cb3JkZXJCb3hUcmFu
c2Zvcm07IH0KQEAgLTY5LDM5ICs2OSwzOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHUm9vdCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IGNoYXIq
IHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHUm9vdCI7IH0K
KyAgICBib29sIGlzU1ZHUm9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRl
clNWR1Jvb3QiOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9n
aWNhbFdpZHRoKFNob3VsZENvbXB1dGVQcmVmZXJyZWQgID0gQ29tcHV0ZUFjdHVhbCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2ljYWxI
ZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVSZXBsYWNlZExvZ2lj
YWxXaWR0aChTaG91bGRDb21wdXRlUHJlZmVycmVkICA9IENvbXB1dGVBY3R1YWwpIGNvbnN0IG92
ZXJyaWRlOworICAgIExheW91dFVuaXQgY29tcHV0ZVJlcGxhY2VkTG9naWNhbEhlaWdodCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWlu
dFJlcGxhY2VkKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0
KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVDaGlsZCA9IDApIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDaGlsZChSZW5kZXJPYmplY3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpIG92ZXJyaWRlOworICAg
IHZvaWQgYWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBjaGlsZCwgUmVuZGVyT2JqZWN0KiBiZWZvcmVD
aGlsZCA9IDApIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBm
aWxsQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgc3Ryb2tlQ29u
dGFpbnMoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
b2JqZWN0Qm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX29iamVjdEJvdW5k
aW5nQm94OyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9Ci0gICAgdmlydHVhbCBG
bG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQorICAgIEZsb2F0UmVjdCBvYmplY3RCb3Vu
ZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb2JqZWN0Qm91bmRpbmdCb3g7IH0K
KyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtX3N0cm9rZUJvdW5kaW5nQm94OyB9CisgICAgRmxvYXRSZWN0IHJlcGFpbnRSZWN0SW5Mb2Nh
bENvb3JkaW5hdGVzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdC
b3g7IH0KICAgICBGbG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXNFeGNsdWRp
bmdTVkdTaGFkb3coKSBjb25zdCB7IHJldHVybiBtX3JlcGFpbnRCb3VuZGluZ0JveEV4Y2x1ZGlu
Z1NoYWRvdzsgfQogCi0gICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RS
ZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25J
bkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0
QWN0aW9uKSBvdmVycmlkZTsKKyAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1
ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNv
bnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0
aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dS
ZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjb21wdXRlRmxvYXRS
ZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0
UmVjdCBjb21wdXRlRmxvYXRSZWN0Rm9yUmVwYWludChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGZpeGVkKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRl
JiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21l
dHJ5TWFwJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiwgTWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRl
OworICAgIGNvbnN0IFJlbmRlck9iamVjdCogcHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvclRvU3RvcEF0LCBSZW5kZXJHZW9tZXRyeU1h
cCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9uTGVh
ZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGNh
bkhhdmVDaGlsZHJlbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBib29sIHNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkgY29uc3Q7CiAgICAgdm9pZCB1
cGRhdGVDYWNoZWRCb3VuZGFyaWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDNkOGY4YzJhZjRiMjdhYzhhZjc5OWQxMTJjNzlj
N2JhNmNiNjg4ZTQuLjcwMjM4YzMwYzBmMDkyMDRmMTgwNTRmZjU1MDdlMGYwY2Y1ZjI1NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgb3ZlcnJpZGUKKyAgICB2b2lk
IHN0cm9rZVN0eWxlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIFNWR1JlbmRlclN1cHBvcnQ6OmFwcGx5U3Ryb2tlU3R5bGVUb0NvbnRleHQoY29udGV4
dCwgbV9yZW5kZXJlci5zdHlsZSgpLCBtX3JlbmRlcmVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggY2Y0ZTAxZjdkZTIyNjky
NGQxYmUyODNmM2I4OWM5ZTNkZTVmMGY0Yi4uNmE3OTE4MmVmZWQ2NDU1N2JkN2FjZThhMzhlNGNi
ZmQyZTg1YzBiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaApAQCAtNTEsOSArNTEsOSBAQCBwdWJsaWM6CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50
JiBncmFwaGljc0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KFJlbmRlclNWR01vZGVsT2JqZWN0OjplbGVtZW50KCkpOyB9CiAKICAgICB2b2lkIHNl
dE5lZWRzU2hhcGVVcGRhdGUoKSB7IG1fbmVlZHNTaGFwZVVwZGF0ZSA9IHRydWU7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyBt
X25lZWRzQm91bmRhcmllc1VwZGF0ZSA9IHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgbmVlZHNC
b3VuZGFyaWVzVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9uZWVkc0JvdW5kYXJp
ZXNVcGRhdGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBv
dmVycmlkZSBmaW5hbCB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdm9p
ZCBzZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUoKSBvdmVycmlkZSBmaW5hbCB7IG1fbmVlZHNCb3Vu
ZGFyaWVzVXBkYXRlID0gdHJ1ZTsgfQorICAgIGJvb2wgbmVlZHNCb3VuZGFyaWVzVXBkYXRlKCkg
b3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9uZWVkc0JvdW5kYXJpZXNVcGRhdGU7IH0KKyAgICB2
b2lkIHNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCkgb3ZlcnJpZGUgZmluYWwgeyBtX25lZWRzVHJh
bnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBmaWxsU2hhcGUoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN0cm9rZVNoYXBlKEdyYXBoaWNz
Q29udGV4dCYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1JlbmRlcmluZ0Rpc2FibGVkKCkg
Y29uc3QgPSAwOwpAQCAtNjksNyArNjksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbGVtZW50
KCkgY29uc3QgPSBkZWxldGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2hhcGVGcm9tRWxl
bWVudCgpOwotICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIHNoYXBlRGVw
ZW5kZW50U3Ryb2tlQ29udGFpbnMoY29uc3QgRmxvYXRQb2ludCYpOwogICAgIHZpcnR1YWwgYm9v
bCBzaGFwZURlcGVuZGVudEZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgV2lu
ZFJ1bGUpIGNvbnN0OwogICAgIGZsb2F0IHN0cm9rZVdpZHRoKCkgY29uc3Q7CkBAIC04NywyMyAr
ODcsMjMgQEAgcHJpdmF0ZToKICAgICBib29sIGZpbGxDb250YWlucyhjb25zdCBGbG9hdFBvaW50
JiwgYm9vbCByZXF1aXJlc0ZpbGwgPSB0cnVlLCBjb25zdCBXaW5kUnVsZSBmaWxsUnVsZSA9IFJV
TEVfTk9OWkVSTyk7CiAgICAgYm9vbCBzdHJva2VDb250YWlucyhjb25zdCBGbG9hdFBvaW50Jiwg
Ym9vbCByZXF1aXJlc1N0cm9rZSA9IHRydWUpOwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3QgcmVw
YWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVy
biBtX3JlcGFpbnRCb3VuZGluZ0JveDsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlcGFpbnRS
ZWN0SW5Mb2NhbENvb3JkaW5hdGVzRXhjbHVkaW5nU1ZHU2hhZG93KCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWwgeyByZXR1cm4gbV9yZXBhaW50Qm91bmRpbmdCb3hFeGNsdWRpbmdTaGFkb3c7IH0KLSAg
ICB2aXJ0dWFsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgp
IGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KLSAgICB2
aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICBGbG9hdFJlY3QgcmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX3Jl
cGFpbnRCb3VuZGluZ0JveDsgfQorICAgIEZsb2F0UmVjdCByZXBhaW50UmVjdEluTG9jYWxDb29y
ZGluYXRlc0V4Y2x1ZGluZ1NWR1NoYWRvdygpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJu
IG1fcmVwYWludEJvdW5kaW5nQm94RXhjbHVkaW5nU2hhZG93OyB9CisgICAgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRy
YW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR1NoYXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdTaGFwZSI7
IH0KKyAgICBib29sIGlzU1ZHU2hhcGUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiUmVuZGVyU1ZHU2hhcGUiOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYs
IGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFk
ZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50JiBh
ZGRpdGlvbmFsT2Zmc2V0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBwYWludENvbnRh
aW5lciA9IDApIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGUgZmlu
YWw7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJy
aWRlIGZpbmFsOworICAgIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+
JiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkZGl0aW9uYWxPZmZzZXQsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyID0gMCkgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgbm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRl
c3RSZXN1bHQmLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludEluUGFyZW50LCBIaXRUZXN0QWN0aW9u
KSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIG5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVu
dCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGUgZmluYWw7CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBvYmplY3RCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fZmls
bEJvdW5kaW5nQm94OyB9Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3go
KSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9Cisg
ICAgRmxvYXRSZWN0IG9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gbV9maWxsQm91bmRpbmdCb3g7IH0KKyAgICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdC
b3goKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX3N0cm9rZUJvdW5kaW5nQm94OyB9
CiAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZU9iamVjdEJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAg
RmxvYXRSZWN0IGNhbGN1bGF0ZVN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Q7CiAgICAgdm9pZCB1
cGRhdGVSZXBhaW50Qm91bmRpbmdCb3goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVFNwYW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVFNwYW4uaAppbmRleCA1NDZkZjk3ZDI5ZjQ0YWM1ZWUxOTgyMjdkNTE4ZDJm
YWZmY2QzNThiLi4yNzIwYjE3ZGNkMzI0NjNmMjliMjE2NTA4NjMwODMwY2Q4OGU1MmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RTcGFuLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUU3Bhbi5oCkBAIC0zNyw3
ICszNyw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5kZXJTVkdUU3BhbiI7IH0KKyAgICBjb25zdCBjaGFy
KiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RTcGFuIjsg
fQogfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
aAppbmRleCA3MWJlMWNkZTM0OTg0MGFhODMyYzk0OTAxNWUyMWNhMmNjMWVjYWFhLi5lZDhiMGYx
NDdiNzc4MTVhNmQyZWRlYjFiMWJhYjBmNTJhN2M1ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaApAQCAtMzksMTIgKzM5LDEyIEBAIHB1YmxpYzoK
IAogICAgIFNWR1RleHRFbGVtZW50JiB0ZXh0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5k
ZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBzZXROZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlKCkgeyBtX25lZWRzUG9zaXRpb25pbmdW
YWx1ZXNVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzVHJhbnNmb3Jt
VXBkYXRlKCkgb3ZlcnJpZGUgeyBtX25lZWRzVHJhbnNmb3JtVXBkYXRlID0gdHJ1ZTsgfQorICAg
IHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zv
cm1VcGRhdGUgPSB0cnVlOyB9CiAgICAgdm9pZCBzZXROZWVkc1RleHRNZXRyaWNzVXBkYXRlKCkg
eyBtX25lZWRzVGV4dE1ldHJpY3NVcGRhdGUgPSB0cnVlOyB9Ci0gICAgdmlydHVhbCBGbG9hdFJl
Y3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBG
bG9hdFJlY3QgcmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHN0YXRpYyBSZW5kZXJTVkdUZXh0KiBsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
UmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIGNvbnN0IFJlbmRlclNWR1RleHQqIGxvY2F0ZVJl
bmRlclNWR1RleHRBbmNlc3Rvcihjb25zdCBSZW5kZXJPYmplY3QmKTsKQEAgLTU4LDQxICs1OCw0
MSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJ0cmVlU3R5bGVEaWRDaGFuZ2UoUmVuZGVyU1ZHSW5s
aW5lVGV4dCopOwogICAgIHZvaWQgc3VidHJlZVRleHREaWRDaGFuZ2UoUmVuZGVyU1ZHSW5saW5l
VGV4dCopOwogCi0gICAgdmlydHVhbCBGbG9hdFJlY3Qgb2JqZWN0Qm91bmRpbmdCb3goKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmcmFtZVJlY3QoKTsgfQotICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHN0cm9rZUJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IG9iamVj
dEJvdW5kaW5nQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZnJhbWVSZWN0KCk7IH0KKyAg
ICBGbG9hdFJlY3Qgc3Ryb2tlQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmly
dHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1RleHQiOyB9Ci0gICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHQiOyB9CisgICAgYm9vbCBpc1NWR1RleHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24p
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uRm9yUG9pbnQo
Y29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJSZWdpb24qKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgYm9v
bCBub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYs
IGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50SW5QYXJlbnQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRl
OworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZGVyUmVnaW9uKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVx
dWlyZXNMYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGxheW91dCgpIG92ZXJyaWRlOworICAgIGJvb2wgcmVxdWlyZXNMYXllcigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9v
bCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0
b3I8RmxvYXRRdWFkPiYsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIExheW91dFJlY3QgY29tcHV0ZVJlY3RGb3JSZXBhaW50KGNvbnN0IExheW91dFJl
Y3QmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29s
IGZpeGVkID0gZmFsc2UpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNv
bXB1dGVGbG9hdFJlY3RGb3JSZXBhaW50KGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgZml4ZWQgPSBmYWxzZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWlu
dChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKSBjb25zdCBv
dmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBMYXlv
dXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwg
Ym9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFJlY3QgY29tcHV0
ZUZsb2F0UmVjdEZvclJlcGFpbnQoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwg
TWFwQ29vcmRpbmF0ZXNGbGFncywgYm9vbCogd2FzRml4ZWQpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgY29uc3QgUmVuZGVyT2JqZWN0KiBwdXNoTWFwcGluZ1RvQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yVG9TdG9wQXQsIFJlbmRlckdlb21ldHJ5
TWFwJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxscHRyKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQg
bWFwTG9jYWxUb0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE1hcENvb3JkaW5hdGVzRmxhZ3MsIGJvb2wqIHdh
c0ZpeGVkKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBSZW5kZXJPYmplY3QqIHB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JUb1N0
b3BBdCwgUmVuZGVyR2VvbWV0cnlNYXAmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENo
aWxkKFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQgPSBudWxs
cHRyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUNoaWxkKFJlbmRlck9iamVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbEJlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIEFmZmluZVRy
YW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxU
cmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxSb290SW5saW5lQm94PiBj
cmVhdGVSb290SW5saW5lQm94KCkgb3ZlcnJpZGU7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2Nh
bFRyYW5zZm9ybTsgfQorICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbFRyYW5zZm9ybSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Um9vdElubGluZUJveD4gY3JlYXRlUm9vdElubGluZUJveCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBSZW5kZXJCbG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKSBvdmVycmlkZTsKKyAgICBSZW5kZXJC
bG9jayogZmlyc3RMaW5lQmxvY2soKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZp
cnN0TGV0dGVyKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZEhhbmRsZVN1YnRyZWVNdXRh
dGlvbnMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0UGF0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdUZXh0UGF0aC5oCmluZGV4IDAyMTU1NWYyNTA1YzJhNjEwOTNhMjcyNzZlOTFkZmQ4ZjE2
NWRhNDMuLmFhNDY1ZWMxMTc1YjVjZjkyYjcyZjM5ODczN2E2YjgzNWVkMmZhYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dFBhdGguaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHRQYXRoLmgKQEAgLTM5
LDggKzM5LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGdyYXBoaWNzRWxlbWVudCgp
IGNvbnN0ID0gZGVsZXRlOwogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVGV4dFBhdGgoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiByZW5k
ZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJlbmRlclNWR1RleHRQYXRoIjsgfQor
ICAgIGJvb2wgaXNTVkdUZXh0UGF0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlJl
bmRlclNWR1RleHRQYXRoIjsgfQogCiAgICAgUGF0aCBtX2xheW91dFBhdGg7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuaAppbmRleCBiOWY2YzE4MDM4MjY1ZmM1ZjgzZWVmMDk3NDliNjJh
ZjdiNWFmMzM2Li4yZDM3NDkyNmRhOTJlNTIxNTYyZDczM2JjOWI0MDg0OTJlZjkxYTJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuaApAQCAtMzIsMTUgKzMyLDE1IEBAIHB1YmxpYzoKICAg
ICBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKFNWR0dyYXBoaWNzRWxlbWVudCYsIFJl
ZjxSZW5kZXJTdHlsZT4mJik7CiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1l
bnQoKSB7IHJldHVybiBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KFJlbmRlclNWR0NvbnRh
aW5lcjo6ZWxlbWVudCgpKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fbG9jYWxUcmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUg
PSB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJhbnNmb3JtVG9Sb290VXBkYXRlOyB9CisgICAgYm9vbCBp
c1NWR1RyYW5zZm9ybWFibGVDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFyZW50VHJhbnNmb3JtKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0
TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUg
PSB0cnVlOyB9CisgICAgYm9vbCBkaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKSBvdmVycmlkZSB7
IHJldHVybiBtX2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZTsgfQogCiBwcml2YXRlOgogICAgIHZv
aWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwotICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVM
b2NhbFRyYW5zZm9ybSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxv
Y2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRyYW5zZm9ybTsg
fQorICAgIGJvb2wgY2FsY3VsYXRlTG9jYWxUcmFuc2Zvcm0oKSBvdmVycmlkZTsKKyAgICBBZmZp
bmVUcmFuc2Zvcm0gbG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xv
Y2FsVHJhbnNmb3JtOyB9CiAKICAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwog
ICAgIGJvb2wgbV9kaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lci5o
CmluZGV4IDU5NjlhZWI2NzEyZWI4ZDg0NGM4N2NjMzE2YjkwMmY2YjkxMTYyNDIuLmZjNThiMTdm
ZTJlNTA3YTg2ZWZhNTMyNWI2YThkOWZkODYyZWVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgKQEAg
LTM4LDI3ICszOCwyNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IHZpZXdwb3J0KCkgY29uc3Qg
eyByZXR1cm4gbV92aWV3cG9ydDsgfQogCiAgICAgYm9vbCBpc0xheW91dFNpemVDaGFuZ2VkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0xheW91dFNpemVDaGFuZ2VkOyB9Ci0gICAgdmlydHVhbCBib29s
IGRpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fZGlkVHJhbnNm
b3JtVG9Sb290VXBkYXRlOyB9CisgICAgYm9vbCBkaWRUcmFuc2Zvcm1Ub1Jvb3RVcGRhdGUoKSBv
dmVycmlkZSB7IHJldHVybiBtX2RpZFRyYW5zZm9ybVRvUm9vdFVwZGF0ZTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGRldGVybWluZUlmTGF5b3V0U2l6ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKSBvdmVycmlkZSB7IG1fbmVlZHNU
cmFuc2Zvcm1VcGRhdGUgPSB0cnVlOyB9CisgICAgdm9pZCBkZXRlcm1pbmVJZkxheW91dFNpemVD
aGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpIG92
ZXJyaWRlIHsgbV9uZWVkc1RyYW5zZm9ybVVwZGF0ZSA9IHRydWU7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlkZTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR1ZpZXdwb3J0Q29udGFpbmVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciI7IH0KKyAgICBib29sIGlz
U1ZHVmlld3BvcnRDb250YWluZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lciI7IH0KIAogICAgIEFmZmluZVRyYW5zZm9ybSB2aWV3cG9y
dFRyYW5zZm9ybSgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBs
b2NhbFRvUGFyZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRv
UGFyZW50VHJhbnNmb3JtOyB9CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBsb2NhbFRvUGFy
ZW50VHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2NhbFRvUGFyZW50VHJh
bnNmb3JtOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY1ZpZXdwb3J0KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUxvY2FsVHJhbnNmb3JtKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjYWxjVmlld3BvcnQoKSBvdmVycmlkZTsKKyAgICBib29sIGNhbGN1bGF0ZUxvY2FsVHJh
bnNmb3JtKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlWaWV3cG9ydENsaXAo
UGFpbnRJbmZvJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3
cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBhcHBseVZpZXdwb3J0Q2xpcChQYWludEluZm8mKSBvdmVycmlkZTsKKyAgICBib29sIHBv
aW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYgcG9pbnRJblBhcmVudCkg
b3ZlcnJpZGU7CiAKICAgICBGbG9hdFJlY3QgbV92aWV3cG9ydDsKICAgICBtdXRhYmxlIEFmZmlu
ZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZUZsb3dCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW5saW5lRmxvd0JveC5oCmluZGV4IDA2MTNiYzAwZmJjZWQwMDZj
MDk5OTIxMmE5ZTI3YjU2YzM2YmYxNTYuLjM5YWFkMDJkYmVlYzlmY2NlMjNlNjY1YTlhYTNkNmU5
MzQyNDI5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lRmxvd0JveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5saW5l
Rmxvd0JveC5oCkBAIC0zOCwxNSArMzgsMTUgQEAgcHVibGljOgogCiAgICAgUmVuZGVyU1ZHSW5s
aW5lJiByZW5kZXJlcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclNWR0lubGluZSY+KElu
bGluZUZsb3dCb3g6OnJlbmRlcmVyKCkpOyB9CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjYWxj
dWxhdGVCb3VuZGFyaWVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGNhbGN1bGF0
ZUJvdW5kYXJpZXMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TG9naWNhbEhlaWdo
dChmbG9hdCBoKSB7IG1fbG9naWNhbEhlaWdodCA9IGg7IH0KICAgICB2b2lkIHBhaW50U2VsZWN0
aW9uQmFja2dyb3VuZChQYWludEluZm8mKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbmxpbmVGbG93Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUJvdHRvbSkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NWR0lubGluZUZsb3dCb3goKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KKyAgICB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwogCiAgICAgZmxvYXQgbV9sb2dpY2FsSGVp
Z2h0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW5s
aW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0
Qm94LmgKaW5kZXggMTdlY2VmM2FjYTk0NWY3MWIyZTVmYzg0NmE5MzE1ZDJmZmNhMTEzYS4uNTY0
NTEyNTZiODFjZjZkZWViYzcxMDJkYWEwOWFmZjIzZTA4OGYwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmgKQEAgLTM3LDI4ICszNywyOCBA
QCBwdWJsaWM6CiAKICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsg
cmV0dXJuIGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KElubGluZVRleHRCb3g6OnJlbmRl
cmVyKCkpOyB9CiAKLSAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CisgICAgZmxvYXQgdmlydHVh
bExvZ2ljYWxIZWlnaHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7
IH0KICAgICB2b2lkIHNldExvZ2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNhbEhl
aWdodCA9IGhlaWdodDsgfQogCiAgICAgaW50IHNlbGVjdGlvblRvcCgpIHsgcmV0dXJuIHRvcCgp
OyB9CiAgICAgaW50IHNlbGVjdGlvbkhlaWdodCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o
Y2VpbGYobV9sb2dpY2FsSGVpZ2h0KSk7IH0KLSAgICB2aXJ0dWFsIGludCBvZmZzZXRGb3JQb3Np
dGlvbihmbG9hdCB4LCBib29sIGluY2x1ZGVQYXJ0aWFsR2x5cGhzID0gdHJ1ZSkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBwb3NpdGlvbkZvck9mZnNldChpbnQgb2Zmc2V0KSBj
b25zdCBvdmVycmlkZTsKKyAgICBpbnQgb2Zmc2V0Rm9yUG9zaXRpb24oZmxvYXQgeCwgYm9vbCBp
bmNsdWRlUGFydGlhbEdseXBocyA9IHRydWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGZsb2F0IHBv
c2l0aW9uRm9yT2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBw
YWludFNlbGVjdGlvbkJhY2tncm91bmQoUGFpbnRJbmZvJik7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBs
b2NhbFNlbGVjdGlvblJlY3QoaW50IHN0YXJ0UG9zaXRpb24sIGludCBlbmRQb3NpdGlvbikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2lu
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsK
KyAgICBMYXlvdXRSZWN0IGxvY2FsU2VsZWN0aW9uUmVjdChpbnQgc3RhcnRQb3NpdGlvbiwgaW50
IGVuZFBvc2l0aW9uKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgbWFwU3RhcnRFbmRQb3Np
dGlvbnNJbnRvRnJhZ21lbnRDb29yZGluYXRlcyhjb25zdCBTVkdUZXh0RnJhZ21lbnQmLCBpbnQm
IHN0YXJ0UG9zaXRpb24sIGludCYgZW5kUG9zaXRpb24pIGNvbnN0OwogCi0gICAgdmlydHVhbCBG
bG9hdFJlY3QgY2FsY3VsYXRlQm91bmRhcmllcygpIGNvbnN0IG92ZXJyaWRlOworICAgIEZsb2F0
UmVjdCBjYWxjdWxhdGVCb3VuZGFyaWVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNs
ZWFyVGV4dEZyYWdtZW50cygpIHsgbV90ZXh0RnJhZ21lbnRzLmNsZWFyKCk7IH0KICAgICBWZWN0
b3I8U1ZHVGV4dEZyYWdtZW50PiYgdGV4dEZyYWdtZW50cygpIHsgcmV0dXJuIG1fdGV4dEZyYWdt
ZW50czsgfQogICAgIGNvbnN0IFZlY3RvcjxTVkdUZXh0RnJhZ21lbnQ+JiB0ZXh0RnJhZ21lbnRz
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RnJhZ21lbnRzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlydHlPd25MaW5lQm94ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlydHlMaW5l
Qm94ZXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpcnR5T3duTGluZUJveGVzKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaXJ0eUxpbmVCb3hlcygpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzdGFydHNO
ZXdUZXh0Q2h1bmsoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0c05ld1RleHRDaHVuazsgfQogICAg
IHZvaWQgc2V0U3RhcnRzTmV3VGV4dENodW5rKGJvb2wgbmV3VGV4dENodW5rKSB7IG1fc3RhcnRz
TmV3VGV4dENodW5rID0gbmV3VGV4dENodW5rOyB9CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoK
ICAgICBGbG9hdFJlY3Qgc2VsZWN0aW9uUmVjdEZvclRleHRGcmFnbWVudChjb25zdCBTVkdUZXh0
RnJhZ21lbnQmLCBpbnQgZnJhZ21lbnRTdGFydFBvc2l0aW9uLCBpbnQgZnJhZ21lbnRFbmRQb3Np
dGlvbiwgUmVuZGVyU3R5bGUqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbmxpbmVUZXh0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgaXNTVkdJbmxpbmVUZXh0Qm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgVGV4dFJ1biBjb25zdHJ1Y3RUZXh0UnVuKFJlbmRlclN0eWxlKiwgY29uc3QgU1ZH
VGV4dEZyYWdtZW50JikgY29uc3Q7CiAKQEAgLTgyLDcgKzgyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCYsIFJlbmRlclN0eWxlKiwg
VGV4dFJ1biYsIGNvbnN0IFNWR1RleHRGcmFnbWVudCYsIGludCBzdGFydFBvc2l0aW9uLCBpbnQg
ZW5kUG9zaXRpb24pOwogICAgIHZvaWQgcGFpbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYsIFJlbmRl
clN0eWxlKiwgUmVuZGVyU3R5bGUqIHNlbGVjdGlvblN0eWxlLCBjb25zdCBTVkdUZXh0RnJhZ21l
bnQmLCBib29sIGhhc1NlbGVjdGlvbiwgYm9vbCBwYWludFNlbGVjdGVkVGV4dE9ubHkpOwogCi0g
ICAgdmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CisgICAgYm9vbCBu
b2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBh
Y2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0
b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGZsb2F0IG1fbG9n
aWNhbEhlaWdodDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
Um9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5s
aW5lQm94LmgKaW5kZXggODUxMTY0OGJmY2JhOWMxZWQ5ZDczY2QyZjZhZmM2NTUyOTM5Nzk1OS4u
Yzk5OWI5M2Y4Y2MwZDkxYzJjYTNhMDg0ZmNhOGUzOGY1ZjFiMWVhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSb290SW5saW5lQm94LmgKQEAgLTM4LDE5ICszOCwx
OSBAQCBwdWJsaWM6CiAKICAgICBSZW5kZXJTVkdUZXh0JiByZW5kZXJTVkdUZXh0KCk7CiAKLSAg
ICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CisgICAgZmxvYXQgdmlydHVhbExvZ2ljYWxIZWlnaHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvZ2ljYWxIZWlnaHQ7IH0KICAgICB2b2lkIHNl
dExvZ2ljYWxIZWlnaHQoZmxvYXQgaGVpZ2h0KSB7IG1fbG9naWNhbEhlaWdodCA9IGhlaWdodDsg
fQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50
JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNv
bXB1dGVQZXJDaGFyYWN0ZXJMYXlvdXRJbmZvcm1hdGlvbigpOwogCiAgICAgSW5saW5lQm94KiBj
bG9zZXN0TGVhZkNoaWxkRm9yUG9zaXRpb24oY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVCb3R0b20sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlIGZpbmFsOworICAgIGJvb2wg
bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90
dG9tLCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZSBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0
dWFsIGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNTVkdSb290SW5saW5lQm94KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIHZvaWQgcmVvcmRlclZhbHVlTGlzdHMoVmVjdG9yPFNWR1RleHRMYXlv
dXRBdHRyaWJ1dGVzKj4mKTsKICAgICB2b2lkIGxheW91dENoYXJhY3RlcnNJblRleHRCb3hlcyhJ
bmxpbmVGbG93Qm94KiwgU1ZHVGV4dExheW91dEVuZ2luZSYpOwogICAgIHZvaWQgbGF5b3V0Q2hp
bGRCb3hlcyhJbmxpbmVGbG93Qm94KiwgRmxvYXRSZWN0KiA9IG51bGxwdHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCA3NTY4YjZhMDYyZDg2YjMxMjUwODc3NmE5M2QyMmE2ZjNhNTM2Mjkx
Li5lMTIxNTM2ZmUzNGI4MGMwZGMwNDA2ZTg1MTU3Y2RjNDExNzU3N2QxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJpbmdD
b250ZXh0LmNwcApAQCAtMTA4LDE1ICsxMDgsMTUgQEAgY2xhc3MgU1ZHR2x5cGhUb1BhdGhUcmFu
c2xhdG9yIGZpbmFsIDogcHVibGljIEdseXBoVG9QYXRoVHJhbnNsYXRvciB7CiBwdWJsaWM6CiAg
ICAgU1ZHR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRleHRSdW4qIGNvbnN0LCBjb25zdCBH
bHlwaEJ1ZmZlciYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBTVkdGb250RGF0YSYsIFNWR0Zv
bnRFbGVtZW50JiwgY29uc3QgaW50IGZyb20sIGNvbnN0IGludCBudW1HbHlwaHMsIGZsb2F0IHNj
YWxlLCBib29sIGlzVmVydGljYWxUZXh0KTsKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGNv
bnRhaW5zTW9yZVBhdGhzKCkgb3ZlcnJpZGUKKyAgICBib29sIGNvbnRhaW5zTW9yZVBhdGhzKCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG1fc3RvcHBpbmdQb2lu
dDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhdGggcGF0aCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZXh0ZW50cygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgR2x5cGhVbmRlcmxpbmVUeXBlIHVuZGVybGluZVR5cGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgYWR2YW5jZSgpIG92ZXJyaWRlOworICAgIFBhdGggcGF0aCgpIG92ZXJyaWRlOwor
ICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGV4dGVudHMoKSBvdmVycmlkZTsKKyAgICBHbHlw
aFVuZGVybGluZVR5cGUgdW5kZXJsaW5lVHlwZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYWR2YW5j
ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbW92ZVRvTmV4dFZhbGlkR2x5cGgoKTsKICAgICBBZmZp
bmVUcmFuc2Zvcm0gdHJhbnNmb3JtKCk7CiAKQEAgLTIyMywyMyArMjIzLDIzIEBAIHZvaWQgU1ZH
R2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKCkKIH0KIAogY2xhc3MgRHVtbXlHbHlwaFRv
UGF0aFRyYW5zbGF0b3IgZmluYWwgOiBwdWJsaWMgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29udGFpbnNNb3JlUGF0aHMoKSBvdmVycmlkZQorICAgIGJvb2wgY29u
dGFpbnNNb3JlUGF0aHMoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSAgICB2aXJ0dWFsIFBhdGggcGF0aCgpIG92ZXJyaWRlCisgICAgUGF0aCBwYXRoKCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiBQYXRoKCk7CiAgICAgfQotICAgIHZpcnR1
YWwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZXh0ZW50cygpIG92ZXJyaWRlCisgICAgc3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4gZXh0ZW50cygpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3BhaXIoMC5mLCAwLmYpOwogICAgIH0KLSAgICB2aXJ0dWFsIEdseXBoVW5k
ZXJsaW5lVHlwZSB1bmRlcmxpbmVUeXBlKCkgb3ZlcnJpZGUKKyAgICBHbHlwaFVuZGVybGluZVR5
cGUgdW5kZXJsaW5lVHlwZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gR2x5cGhV
bmRlcmxpbmVUeXBlOjpEcmF3T3ZlckdseXBoOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgYWR2
YW5jZSgpIG92ZXJyaWRlCisgICAgdm9pZCBhZHZhbmNlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1
blJlbmRlcmluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dFJ1blJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA5ZDg1ZmJlN2JhYTllZDQ5NzUxODI2ODZiZTNi
MWU5MTdhMDY0OTVkLi42NTgxMWU0NjkzZjVkYzRkMmExYTgzNGRmNmU5YjA5ZWY4M2ExNzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRSdW5SZW5kZXJp
bmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVu
UmVuZGVyaW5nQ29udGV4dC5oCkBAIC00MiwxMCArNDIsMTAgQEAgcHVibGljOgogICAgIFJlbmRl
clNWR1Jlc291cmNlKiBhY3RpdmVQYWludGluZ1Jlc291cmNlKCkgY29uc3QgeyByZXR1cm4gbV9h
Y3RpdmVQYWludGluZ1Jlc291cmNlOyB9CiAgICAgdm9pZCBzZXRBY3RpdmVQYWludGluZ1Jlc291
cmNlKFJlbmRlclNWR1Jlc291cmNlKiBvYmplY3QpIHsgbV9hY3RpdmVQYWludGluZ1Jlc291cmNl
ID0gb2JqZWN0OyB9CiAKLSAgICB2aXJ0dWFsIEdseXBoRGF0YSBnbHlwaERhdGFGb3JDaGFyYWN0
ZXIoY29uc3QgRm9udENhc2NhZGUmLCBXaWR0aEl0ZXJhdG9yJiwgVUNoYXIzMiBjaGFyYWN0ZXIs
IGJvb2wgbWlycm9yLCBpbnQgY3VycmVudENoYXJhY3RlciwgdW5zaWduZWQmIGFkdmFuY2VMZW5n
dGgsIFN0cmluZyYgbm9ybWFsaXplZFNwYWNlc1N0cmluZ0NhY2hlKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZHJhd1NWR0dseXBocyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGb250Jiwg
Y29uc3QgR2x5cGhCdWZmZXImLCBpbnQgZnJvbSwgaW50IHRvLCBjb25zdCBGbG9hdFBvaW50Jikg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBmbG9hdFdpZHRoVXNpbmdTVkdGb250
KGNvbnN0IEZvbnRDYXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGludCYgY2hhcnNDb25zdW1lZCwg
U3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBhcHBs
eVNWR0tlcm5pbmcoY29uc3QgRm9udCosIFdpZHRoSXRlcmF0b3ImLCBHbHlwaEJ1ZmZlciosIGlu
dCBmcm9tKSBjb25zdCBvdmVycmlkZTsKKyAgICBHbHlwaERhdGEgZ2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKGNvbnN0IEZvbnRDYXNjYWRlJiwgV2lkdGhJdGVyYXRvciYsIFVDaGFyMzIgY2hhcmFjdGVy
LCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRDaGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVu
Z3RoLCBTdHJpbmcmIG5vcm1hbGl6ZWRTcGFjZXNTdHJpbmdDYWNoZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3U1ZHR2x5cGhzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZvbnQmLCBjb25zdCBH
bHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgdG8sIGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBmbG9hdCBmbG9hdFdpZHRoVXNpbmdTVkdGb250KGNvbnN0IEZvbnRDYXNj
YWRlJiwgY29uc3QgVGV4dFJ1biYsIGludCYgY2hhcnNDb25zdW1lZCwgU3RyaW5nJiBnbHlwaE5h
bWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgYXBwbHlTVkdLZXJuaW5nKGNvbnN0IEZvbnQq
LCBXaWR0aEl0ZXJhdG9yJiwgR2x5cGhCdWZmZXIqLCBpbnQgZnJvbSkgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTYwLDcgKzYwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIH5TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dCgpIHsgfQogCiAjaWYgRU5BQkxFKFNWR19G
T05UUykKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFRvUGF0aFRyYW5zbGF0b3I+
IGNyZWF0ZUdseXBoVG9QYXRoVHJhbnNsYXRvcihjb25zdCBGb250JiwgY29uc3QgVGV4dFJ1bios
IGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhUb1BhdGhU
cmFuc2xhdG9yPiBjcmVhdGVHbHlwaFRvUGF0aFRyYW5zbGF0b3IoY29uc3QgRm9udCYsIGNvbnN0
IFRleHRSdW4qLCBjb25zdCBHbHlwaEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBj
b25zdCBGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFJlbmRlck9i
amVjdCYgbV9yZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9DYXB0
dXJpbmdJbnB1dEN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0
Q3Vyc29yLmgKaW5kZXggYTQxNGMyZTE1MzliNDhhYzNiNDQwYTc0ZjY0Njg0MjQwOGFhYWIzNS4u
ZGFiNmVjMDg3MGRiZjYyMGUyNzQxMzQwZWY0MDQ4ZGIyYmM2MTcyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmgKQEAgLTQ2LDE3ICs0NiwxNyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxDYXB0dXJpbmdJbnB1dEN1cnNvcj4gY3JlYXRlKFJlZlB0
cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mJik7CiAgICAgdmlydHVhbCB+Q2FwdHVyaW5nSW5wdXRD
dXJzb3IoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0NhcHR1cmluZygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNSZXBsYXlpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNDYXB0dXJpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1JlcGxheWluZygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIE5vbmRl
dGVybWluaXN0aWNJbnB1dEJhc2UqIGxvYWRJbnB1dChJbnB1dFF1ZXVlLCBjb25zdCBTdHJpbmcm
IHR5cGUpIG92ZXJyaWRlOworICAgIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIGxvYWRJbnB1
dChJbnB1dFF1ZXVlLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIENhcHR1cmluZ0lucHV0Q3Vyc29yKFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4mJik7
CiAKLSAgICB2aXJ0dWFsIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJ
bnB1dChJbnB1dFF1ZXVlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVJbnB1dChz
dGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pIG92ZXJyaWRlOworICAg
IE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVl
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVy
bWluaXN0aWNJbnB1dEJhc2U+KSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9u
U2VnbWVudD4gbV9zZWdtZW50OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9FdmVudExvb3BJbnB1dC5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0
LmgKaW5kZXggNDBkNTFjOTJjNjNjZGViZmU2ZTA4YWU4ZWM5MjQyNDRmYTg0MWZkNC4uN2RhNTk1
Y2QyOWIwMjE0OWNkZDVlZDVhNmZlNWQ1YTI5NGQzZTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L0V2ZW50TG9vcElucHV0LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKIGNsYXNzIEV2ZW50
TG9vcElucHV0QmFzZSA6IHB1YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5FdmVudExvb3BJbnB1dEJhc2UoKSB7IH0KLSAgICB2aXJ0dWFsIElu
cHV0UXVldWUgcXVldWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBJbnB1dFF1ZXVl
OjpFdmVudExvb3BJbnB1dDsgfQorICAgIElucHV0UXVldWUgcXVldWUoKSBjb25zdCBvdmVycmlk
ZSBmaW5hbCB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogCiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSA9IDA7CiB9OwpAQCAtNjUsNyAr
NjUsNyBAQCBwdWJsaWM6CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRUeXBlPgogY2xhc3MgRXZl
bnRMb29wSW5wdXQgOiBwdWJsaWMgRXZlbnRMb29wSW5wdXRCYXNlIHsKIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsCisgICAgY29u
c3QgU3RyaW5nJiB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwKICAgICB7CiAgICAgICAgIHJl
dHVybiBJbnB1dFRyYWl0czxJbnB1dFR5cGU+Ojp0eXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVwbGF5L0Z1bmN0b3JJbnB1dEN1cnNvci5oIGIvU291cmNlL1dlYkNv
cmUvcmVwbGF5L0Z1bmN0b3JJbnB1dEN1cnNvci5oCmluZGV4IDAwNDNmNzM0NDFkMTZjMTA2OGI2
ODhkODk3Mjk4ZTUwZjY4Njk5ZWQuLjEzZjliZDBjZTZkYzQzZGNjOThkYjE0YzIwYTEzYzQ5ZjUy
NmNiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9GdW5jdG9ySW5wdXRDdXJz
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmgKQEAg
LTQ5LDE2ICs0OSwxNiBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gSW5wdXRDdXJzb3IKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc1JlcGxheWluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0NhcHR1cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1JlcGxheWluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVJbnB1dChzdGQ6OnVuaXF1ZV9w
dHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTm9u
ZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSogdW5jaGVja2VkTG9hZElucHV0KElucHV0UXVldWUpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RvcmVJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5p
c3RpY0lucHV0QmFzZT4pIG92ZXJyaWRlOworICAgIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2Uq
IHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSBvdmVycmlkZTsKIAogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+CiAgICAgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JF
YWNoSW5wdXRJblF1ZXVlKElucHV0UXVldWUsIEZ1bmN0b3ImKTsKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIGxvYWRJbnB1dChJbnB1dFF1ZXVlLCBj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBs
b2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiBwcml2YXRlOgog
ICAgIEZ1bmN0b3JJbnB1dEN1cnNvcihSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+JiYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvTWVtb2l6ZWRET01SZXN1bHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlcGxheS9NZW1vaXplZERPTVJlc3VsdC5oCmluZGV4IGM0NGYwOWVi
N2Y4NjgzOGJlMDk2ZGMzMGY5NmYzNGQ5OWQ4Yzc2MTAuLjVhOTAyZjdjNmJiNDcyNWJhZDZmYzE0
YzUyZDdhM2I2MjA2ZTg1YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9NZW1v
aXplZERPTVJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9NZW1vaXplZERPTVJl
c3VsdC5oCkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICBib29sIGNvbnZlcnRUbyhUJiBk
ZWNvZGVkVmFsdWUpOwogCiAgICAgdmlydHVhbCBFbmNvZGVkVmFsdWUgZW5jb2RlZFJlc3VsdCgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIElucHV0UXVldWUgcXVldWUoKSBjb25zdCBmaW5hbCBv
dmVycmlkZSB7IHJldHVybiBJbnB1dFF1ZXVlOjpTY3JpcHRNZW1vaXplZERhdGE7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IFN0cmluZyYgdHlwZSgpIGNvbnN0IGZpbmFsIG92ZXJyaWRlOworICAgIElu
cHV0UXVldWUgcXVldWUoKSBjb25zdCBmaW5hbCBvdmVycmlkZSB7IHJldHVybiBJbnB1dFF1ZXVl
OjpTY3JpcHRNZW1vaXplZERhdGE7IH0KKyAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCBm
aW5hbCBvdmVycmlkZTsKIAogICAgIGNvbnN0IFN0cmluZyYgYXR0cmlidXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hdHRyaWJ1dGU7IH0KICAgICBFbmNvZGVkQ1R5cGUgY3R5cGUoKSBjb25zdCB7IHJl
dHVybiBtX2N0eXBlOyB9CkBAIC0xMTQsNyArMTE0LDcgQEAgcHVibGljOgogICAgICAgICAsIG1f
cmVzdWx0KHJlc3VsdCkgeyB9CiAgICAgdmlydHVhbCB+TWVtb2l6ZWRET01SZXN1bHQoKSB7IH0K
IAotICAgIHZpcnR1YWwgRW5jb2RlZFZhbHVlIGVuY29kZWRSZXN1bHQoKSBjb25zdCBvdmVycmlk
ZQorICAgIEVuY29kZWRWYWx1ZSBlbmNvZGVkUmVzdWx0KCkgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIHJldHVybiBFbmNvZGluZ1RyYWl0czxNZW1vaXplZFR5cGU+OjplbmNvZGVWYWx1
ZShtX3Jlc3VsdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Jl
cGxheUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVy
LmgKaW5kZXggMjRmMDljZWQ2ZGU0Njg5NWJiNTViMzc4M2E3OWM2ZGExNWVjZWZkNi4uM2JkNjM3
MTdmN2QyZDc2Y2E2OTVhMmRiZWM0N2RkN2MwMzE0Mjc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvUmVwbGF5Q29udHJvbGxlci5oCkBAIC0xNDksOSArMTQ5LDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIC8vIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlckNsaWVudCBBUEkKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbERpc3BhdGNoSW5wdXQoY29uc3QgRXZlbnRMb29wSW5wdXRCYXNlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BhdGNoSW5wdXQoY29uc3QgRXZlbnRMb29w
SW5wdXRCYXNlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BhdGNoRmluYWxJ
bnB1dCgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERpc3BhdGNoSW5wdXQoY29uc3QgRXZlbnRM
b29wSW5wdXRCYXNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWREaXNwYXRjaElucHV0KGNvbnN0
IEV2ZW50TG9vcElucHV0QmFzZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGlzcGF0Y2hGaW5h
bElucHV0KCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNyZWF0ZVNlZ21lbnQoKTsKICAgICB2b2lk
IGNvbXBsZXRlU2VnbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1Jl
cGxheWluZ0lucHV0Q3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5nSW5w
dXRDdXJzb3IuaAppbmRleCBlMGE2YWFkMDk1YmNkOTEyZTc4YmY3NzQyZTUxN2FlZDZlNjhmZjVj
Li5hMWJkMTg2YTE1YzE3ZGM3N2UxYWEwMGYyNWE2MTFjNTg0NGZiYmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5nSW5wdXRDdXJzb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5nSW5wdXRDdXJzb3IuaApAQCAtNTIsMTkgKzUyLDE5IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlcGxheWluZ0lucHV0Q3Vyc29yPiBjcmVhdGUoUmVm
UHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiYmLCBQYWdlJiwgRXZlbnRMb29wSW5wdXREaXNwYXRj
aGVyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+UmVwbGF5aW5nSW5wdXRDdXJzb3IoKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBpc0NhcHR1cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzUmVwbGF5aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNDYXB0dXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQorICAgIGJvb2wgaXNSZXBsYXlpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKICAgICBFdmVudExvb3BJbnB1dERpc3BhdGNoZXImIGRpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiAqbV9kaXNwYXRjaGVyOyB9CiAKICAgICBFdmVudExvb3BJbnB1dERhdGEg
bG9hZEV2ZW50TG9vcElucHV0KCk7CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBOb25kZXRlcm1p
bmlzdGljSW5wdXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgU3RyaW5nJiB0eXBl
KSBvdmVycmlkZTsKKyAgICBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBsb2FkSW5wdXQoSW5w
dXRRdWV1ZSwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKIHByaXZhdGU6CiAgICAgUmVw
bGF5aW5nSW5wdXRDdXJzb3IoUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiYmLCBQYWdlJiwg
RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSogdW5jaGVja2VkTG9h
ZElucHV0KElucHV0UXVldWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcmVJbnB1dChzdGQ6OnVu
aXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pIG92ZXJyaWRlOworICAgIE5vbmRl
dGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSBvdmVy
cmlkZTsKIAogICAgIFJlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gbV9zZWdtZW50OwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxFdmVudExvb3BJbnB1dERpc3BhdGNoZXI+IG1fZGlzcGF0Y2hlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKaW5kZXggYTEyYTlkZjk4NjY1MzQ5NzEyYTA4YzEyYjYz
NTE4Zjk0YmJiNTc2Yi4uYjEyMmNmMDk2ODc5MTA2Zjg3OGMwN2VkYzk0M2Y0NDQ3MDgwOWIxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgKQEAgLTM4LDI4ICszOCwyOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFNWR0FFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBT
VkdUZXN0czo6aXNWYWxpZCgpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogICAgIAotICAgIHZpcnR1YWwgU3RyaW5n
IHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdGFyZ2V0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3ZnVGFyZ2V0KCk7IH0KKyAgICBTdHJpbmcgdGl0bGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdGFyZ2V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gc3ZnVGFyZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50KikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHN1cHBv
cnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzS2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVu
dCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNGb2N1c2FibGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJy
aWRlOworICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBz
aG9ydCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHdpbGxS
ZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCB3aWxsUmVzcG9u
ZFRvTW91c2VDbGlja0V2ZW50cygpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR0FFbGVtZW50KQogICAgICAgICAvLyBUaGlzIGRlY2xhcmF0aW9u
IHVzZWQgdG8gZGVmaW5lIGEgbm9uLXZpcnR1YWwgIlN0cmluZyYgdGFyZ2V0KCkgY29uc3QiIG1l
dGhvZCwgdGhhdCBjbGFzaGVzIHdpdGggInZpcnR1YWwgU3RyaW5nIEVsZW1lbnQ6OnRhcmdldCgp
IGNvbnN0Ii4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaERlZkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuaAppbmRl
eCAyNDhhZTljMGJjMTIwNjM3NzVmZGMzODkwMzQzMjZhODIwZjkwZDU1Li40Y2Q3MTc3NDIwMDYz
MmE0YzRlMTc0MDUyYjkzOWEzODkyZTM1ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
dEdseXBoRGVmRWxlbWVudC5oCkBAIC0zNSw3ICszNSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU1ZHQWx0R2x5cGhEZWZFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYp
OwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUm
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChj
b25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmgKaW5kZXggMDg0NDg0ZGFmNTliYmFj
ZWU0YmNmODU4ZGE0NmNlYzlhNDhmMmNhMi4uMjYxOTQ2MzVmNGRlZjg2MTE5NWVjNDZkMmRiMGQ2
NDhiMDlhZjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlwaEVsZW1lbnQuaApAQCAt
NDcsOCArNDcsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0FsdEdseXBoRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBj
aGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdBbHRHbHlwaEVsZW1l
bnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HX09WRVJSSURFKEhyZWYsIGhyZWYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsdEdseXBoSXRlbUVsZW1lbnQuaAppbmRleCBhZTBj
ZTU1MDdhYjE2MmNlNDA4OGVmZWIwYWVhMmFhYWY4NzRjMTk5Li5iNGE0ZDc1YTIzNDE4YmFkMDk5
MDdlYmUyZDMyZjg5NDllZTBmZTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QWx0R2x5cGhJdGVtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbHRHbHlw
aEl0ZW1FbGVtZW50LmgKQEAgLTM1LDcgKzM1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBT
VkdBbHRHbHlwaEl0ZW1FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuaAppbmRleCA5NTgwMDUwOTlj
ODRiMmU3YWVhNGYyZTUzMDNiNTY0N2Q5YjU1OTA0Li42ZjM1MjUxZGI3MTI1OTEyZmZlNGQxOTgz
MTlhNDhjNjcwZjRmZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZUNvbG9yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlQ29sb3JF
bGVtZW50LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIFNWR0Fu
aW1hdGVDb2xvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIG92ZXJyaWRlOworICAgIHZvaWQgZGV0ZXJtaW5lUHJvcGVy
dHlWYWx1ZVR5cGVzKGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgb3ZlcnJp
ZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlLmgKaW5kZXggMjNiOWRjNWMxYjcxMzdjOGFiMmJhYThhZDRkMDBm
MjZjN2I1NmI3ZC4uMmVhZjA4OGFjNTU2MWI0NTI3M2MzMjIxNTdjNDk3YmI3Mzk5Y2Q4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaApAQCAtNDAsMjAgKzQw
LDIwIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBTVkdBbmltYXRlRWxlbWVudEJhc2UoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRB
bmltYXRlZFR5cGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbmltYXRlZFR5
cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldEFu
aW1hdGVkVHlwZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3Vs
YXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9u
U3RyaW5nKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFs
dWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBp
c0FkZGl0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYWxjdWxhdGVUb0F0RW5kT2ZE
dXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcpIG92ZXJy
aWRlOworICAgIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgYm9vbCBjYWxj
dWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGJ5U3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUo
ZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiBy
ZXN1bHRFbGVtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkg
b3ZlcnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKKyAgICBib29sIGlzQWRk
aXRpdmUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUYXJnZXRFbGVt
ZW50KFNWR0VsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRl
TmFtZShjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c2V0QW5pbWF0ZWRQcm9wZXJ0eVR5cGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRhcmdldEVs
ZW1lbnQoU1ZHRWxlbWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QXR0cmlidXRlTmFtZShj
b25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldEFuaW1hdGVkUHJv
cGVydHlUeXBlKCkgb3ZlcnJpZGU7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSBtX2FuaW1h
dGVkUHJvcGVydHlUeXBlOwogCkBAIC02MSw3ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IqIGVuc3VyZUFuaW1hdG9yKCk7CiAgICAgYm9vbCBhbmltYXRlZFBy
b3BlcnR5VHlwZVN1cHBvcnRzQWRkaXRpb24oKSBjb25zdDsKIAotICAgIHZpcnR1YWwgYm9vbCBo
YXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1ZhbGlkQXR0cmli
dXRlVHlwZSgpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gbV9mcm9tVHlwZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBtX3Rv
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKaW5k
ZXggODQzMDk4NGY4MWYyNDdkNDM5YzZlMDI0OGYyZTcxN2QwNjA3Mjg2ZS4uNTNlMGVhNjc0Zjcy
NDA1Zjk3ZWU3N2VkNWFkNzA2MGQxZjFkODhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmgKQEAgLTM1LDE5ICszNSwxOSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZU5hbWUoKSBvdmVycmlk
ZTsKKyAgICBib29sIGhhc1ZhbGlkQXR0cmlidXRlVHlwZSgpIG92ZXJyaWRlOworICAgIGJvb2wg
aGFzVmFsaWRBdHRyaWJ1dGVOYW1lKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJlc2V0QW5p
bWF0ZWRUeXBlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQW5pbWF0ZWRUeXBl
KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBj
YWxjdWxhdGVUb0F0RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVy
YXRpb25TdHJpbmcpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYWxjdWxhdGVGcm9tQW5k
VG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5n
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNl
dEFuaW1hdGVkVHlwZSgpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJBbmltYXRlZFR5cGUoU1ZH
RWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYWxjdWxhdGVUb0F0
RW5kT2ZEdXJhdGlvblZhbHVlKGNvbnN0IFN0cmluZyYgdG9BdEVuZE9mRHVyYXRpb25TdHJpbmcp
IG92ZXJyaWRlOworICAgIGJvb2wgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgYm9v
bCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJ5U3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVt
ZW50KiByZXN1bHRFbGVtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFy
Z2V0KCkgb3ZlcnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIAogICAgIGVu
dW0gUm90YXRlTW9kZSB7CiAgICAgICAgIFJvdGF0ZUFuZ2xlLApAQCAtNTksNyArNTksNyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCBtX2hhc1RvUG9pbnRBdEVuZE9mRHVyYXRpb247CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9uTW9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBk
YXRlQW5pbWF0aW9uTW9kZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTm90ZTogd2UgZG8gbm90IHN1
cHBvcnQgcGVyY2VudGFnZSB2YWx1ZXMgZm9yIHRvL2Zyb20gY29vcmRzIGFzIHRoZSBzcGVjIGlt
cGxpZXMgd2Ugc2hvdWxkIChvcGVyYSBkb2Vzbid0IGVpdGhlcikKICAgICBGbG9hdFBvaW50IG1f
ZnJvbVBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFu
c2Zvcm1FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVs
ZW1lbnQuaAppbmRleCAyOTMyOWY0ZmVkNjJjZTU1NTIxMDE4ZTBjMDg0NDlmZjNjZmEzZDA2Li5l
MTAxOTBmZmYwM2YxYjhjMzY1OTY0ODQ5YWE5ZDliZDAzZDk1ZWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuaApAQCAtMzksOCArMzksOCBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBoYXNW
YWxpZEF0dHJpYnV0ZVR5cGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OworICAgIGJvb2wgaGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiAKICAgICBTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybVR5cGUgbV90eXBlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCmluZGV4IDA0YWVmMTlkNjgyMDlm
ZjIwMzZkNmNlNjkzYzY4ZjVjOWVlYTMxZmQuLjE2ODAzMmI4ZGI5N2RkNWUxMDlhZTA5MGRmZjVm
YThjODNlZmI5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFu
Z2xlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaApAQCAtNDIs
MTcgKzQyLDE3IEBAIGNsYXNzIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvciBmaW5hbCA6IHB1Ymxp
YyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRBbmds
ZUFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAKLSAgICB2aXJ0
dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmco
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsRGlkQ2hhbmdl
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldEFuaW1W
YWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5p
bWF0ZWRUeXBlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1W
YWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUq
LCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZEFuaW1hdGVkVHlwZXMo
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9h
dCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdG9TdHJpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3Zl
cnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaAppbmRleCBm
MmU4NjIzM2NjZjBjMzQwMzI0NWUzYzcwYmNlNDhmNTkyMDFiODViLi5kYWMxYmZkNDNlNzNkZjM3
YjE3NDA2M2EzMjY5MDE0NjgyMjExZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRCb29sZWFuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
Qm9vbGVhbi5oCkBAIC00MywxNiArNDMsMTYgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRCb29sZWFuQW5p
bWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogcHVibGljOgog
ICAgIFNWR0FuaW1hdGVkQm9vbGVhbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdF
bGVtZW50Kik7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jh
c2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRU
eXBlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5p
bVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbi5oCmluZGV4IGE5Y2U1YmNlYmFlYmE3ZGVmMjk3ZTEyMjg4YzRl
ODQ1MDY2MzczYjAuLmZiN2Q1ZDBhOTU4Yzg0NjI2NTMxNzQwYjI4MzJiOThmYmExMjI1MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaApAQCAtMzksMTYg
KzM5LDE2IEBAIGNsYXNzIFNWR0FuaW1hdGVkRW51bWVyYXRpb25BbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbkFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFs
RGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0
ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRU
eXBlKikgb3ZlcnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZEludGVnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIu
aAppbmRleCA3MmY5ZWVmY2NkYTQ1MWU3OWJmMDhhMTIxZTM4NzQxYjEwMDE0M2UxLi4wODAzZGJk
MzA2OTU5YTY0ZmVjZTk5OTg0YTg2ZjRjMzQyNGIyMzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkSW50ZWdlci5oCkBAIC00NiwxNiArNDYsMTYgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRJbnRlZ2VyKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgaW50IGZyb21JbnRlZ2VyLCBp
bnQgdG9JbnRlZ2VyLCBpbnQgdG9BdEVuZE9mRHVyYXRpb25JbnRlZ2VyLCBpbnQmIGFuaW1hdGVk
SW50ZWdlcik7CiAKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+
IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jh
c2VWYWwoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRU
eXBlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5p
bWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltVmFs
QW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5p
bVZhbFdpbGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlk
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXJPcHRpb25hbEludGVnZXIuaAppbmRleCA0YmVkZGMx
ODFkMTc5NzdiMTM1YWNlNTUzZjlhMjEyYWY3YTRjMWVlLi4yZTkyNDQwMjMwZjNjMTE4MDY3MDk0
OTUwNTU2MzUxMGRlNGE4NDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkSW50ZWdlck9wdGlvbmFsSW50ZWdlci5oCkBAIC0zMCwxNiArMzAsMTYgQEAgY2xh
c3MgU1ZHQW5pbWF0ZWRJbnRlZ2VyT3B0aW9uYWxJbnRlZ2VyQW5pbWF0b3IgZmluYWwgOiBwdWJs
aWMgU1ZHQW5pbWF0ZWRUeXBlQW4KIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZEludGVnZXJPcHRp
b25hbEludGVnZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwog
Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
dG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZh
bERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlk
ZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSos
IFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdB
bmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmlt
YXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNl
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJp
ZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0
cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVk
UHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxXaWxsQ2hh
bmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAg
IHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1h
dGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVk
VHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5o
CmluZGV4IGMyZDE4ZmFmODY4N2NhMDVmMWEzN2IwMzBjOTE3NGFlNTI2Zjk4YjguLjlkMWI0NzA2
ZTVmZTVjYTc4MWZhN2Y3ZGQzNWU0Njk3MDMxZWY0ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZExlbmd0aC5oCkBAIC00MSwxNiArNDEsMTYgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRMZW5n
dGhBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJs
aWM6CiAgICAgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50Kiwg
U1ZHRWxlbWVudCopOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0
aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFs
VG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1h
dGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNh
bGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5p
bWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBl
cyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3Zl
cnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmgKaW5kZXggM2IxYzVjNGQyZjQx
ODBlOTkyYzAxMmUxNzc5MzdjYzk1MmI2ZjA0MS4uMjE2YTMxNzAyM2Q4OWIzYmQ2Y2YwYzgwOWUw
Y2VkZmU5Nzg0Njg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TGVuZ3RoTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuaApAQCAtNDEsMTYgKzQxLDE2IEBAIGNsYXNzIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKICAg
ICBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZH
RWxlbWVudCopOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9C
YXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVk
VHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVh
dENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29u
c3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5pbVZh
bEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFu
aW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92
ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhT
VkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSos
IFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNl
KGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCmluZGV4IDg4ZTVjMGQyNDFlY2U3YjU3YmU4M2U5
MWQzZDgwZTA2NjI1ODVhNDIuLmRjM2MwNWY5OWZhNjQ4NDMyZmQwYzM3YmFmYTJiNGNmMjFmYjI4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCkBAIC00NCwxNiArNDQs
MTYgQEAgY2xhc3MgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdB
bmltYXRlZFR5cGVBbmltYXRvciB7CiBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmlt
YXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogCi0gICAgdmlydHVhbCBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFBy
b3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1h
dGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1
YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBT
VkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFy
dEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0QW5pbVZhbFRv
QmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRl
ZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0Vs
ZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbERp
ZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsK
KworICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRl
OworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJM
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKaW5kZXgg
MzQ1ZTQwODViNmRjMWRkNDllYjI1NzU4YmExMjljOGVkNTllOTNmYy4uN2NjOTMxOWI0MTJhOTMx
YjI0OTlkNzkwOWQ3ODdjNTZhNDU4MjkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZE51bWJlckxpc3QuaApAQCAtNDEsMTYgKzQxLDE2IEBAIGNsYXNzIFNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsK
IHB1YmxpYzoKICAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcihTVkdBbmltYXRpb25F
bGVtZW50KiwgU1ZHRWxlbWVudCopOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmlt
VmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVz
ZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYs
IFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2ls
bENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0
ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRl
ZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBT
VkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1h
dGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24o
Y29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgYWRkQW5p
bWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0IGNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyT3B0aW9uYWxOdW1iZXIuaAppbmRl
eCA2YTYyMDExNzE1YTFmMDBiNjc5NWY3NTk2ZjkwZjA2ZTYzYzk4MTMxLi4yNDk1OWRmZTBmMWZj
MWFlYjNiYTQ3ZjZhMWZkNDRkNjVhZjJlZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyLmgKQEAgLTMwLDE2ICszMCwxNiBA
QCBjbGFzcyBTVkdBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyQW5pbWF0b3IgZmluYWwgOiBw
dWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbQogcHVibGljOgogICAgIFNWR0FuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCop
OwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNW
R0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxp
c3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5p
bVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3Rh
bmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3Zl
cnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJv
bVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlv
bihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxXaWxs
Q2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQYXRoLmgK
aW5kZXggNTE5NDQ3ZjNjZDgwZGM3NGY1ZmU2OTM4YzJhZjZmZGY1NTU0NmM4ZC4uNzkwY2I1NmMz
MDAyNGRkYmVjN2I1MWFhZjkxYmIzYzQwOWFhY2VlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFBhdGguaApAQCAtMzAsMTYgKzMwLDE2IEBAIGNsYXNzIFNWR0FuaW1hdGVkUGF0aEFuaW1h
dG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKICAg
ICBTVkdBbmltYXRlZFBhdGhBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVu
dCopOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0
IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0
eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFs
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdF
bGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBv
dmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVk
VHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBT
VkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURp
c3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykg
b3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFu
aW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1h
dGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxX
aWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OworICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmlt
YXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNW
R0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0Fu
aW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZHRWxlbWVu
dEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHUGF0aEJ5dGVTdHJlYW0qKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgKaW5kZXggOTQ3ZGM5ZTg4OTkwNTlhMThhYWJl
MmI4NTU2MTU4MzJiOTA4Mjk0Yy4uOWJhZDExYmViYzg0MTViY2YxNmUwNGE3Zjk3Yzk0ZmUwY2Jj
NjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmgKQEAgLTM0
LDE2ICszNCwxNiBAQCBjbGFzcyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKICAgICBTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAK
LSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3BBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3Qg
U1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRB
bmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmltVmFs
RGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRl
OwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0Fu
aW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1h
dGVkVHlwZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3Ry
aW5nKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IHN0YXJ0QW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltVmFsQW5pbWF0aW9uKGNv
bnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbFdpbGxDaGFu
Z2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBhbmltVmFsRGlkQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBhZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0
ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRU
eXBlKikgb3ZlcnJpZGU7CisgICAgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAppbmRleCBjMGY0NzcwMmQ2OThkOTYyM2Y4YWUxZmM2
NWNmZmI5YWNiNGFmNTc1Li5jMWZlMjM1ZjNjM2FjMDQxYTU5MjI0MDZiZThmMGI1NTU1ZjI3YzNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpby5oCkBAIC00MSwxNiArNDEsMTYgQEAgY2xhc3MgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWEKIHB1
YmxpYzoKICAgICBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcihTVkdBbmlt
YXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3Rh
cnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBT
VkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5
TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhbmlt
VmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVtZW50
QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRB
bmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5
cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxBbmlt
YXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRl
ZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZvaWQg
YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSos
IFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZsb2F0
IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZykgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgKaW5kZXggYmM0MGRmNWM4NGIwNjUxODA1N2IxNTk5
MWQzNjhhMzg5MDE1NGFiZi4uMGUxOTY5ZWIxYzZiYjQzYjZjODJjZGRlYjdlOGZlMTUxMzViNzE0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaApAQCAtNDIsMTYgKzQyLDE2IEBA
IGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yIHsKIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZFJlY3RBbmltYXRvcihTVkdB
bmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1
ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
c3RhcnRBbmltVmFsQW5pbWF0aW9uKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlz
dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25z
dCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzZXRBbmltVmFsVG9CYXNlVmFsKGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3Bl
cnR5TGlzdCYsIFNWR0FuaW1hdGVkVHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBh
bmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbERpZENoYW5nZShjb25zdCBTVkdFbGVt
ZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBh
ZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRl
ZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBzdGFydEFuaW1WYWxB
bmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdG9wQW5pbVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQ
cm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0QW5pbVZhbFRvQmFzZVZhbChj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmLCBTVkdBbmltYXRlZFR5cGUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxXaWxsQ2hhbmdlKGNvbnN0IFNWR0VsZW1lbnRBbmlt
YXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQgYW5pbVZhbERpZENoYW5nZShj
b25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVycmlkZTsKKworICAgIHZv
aWQgYWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlw
ZSosIFNWR0FuaW1hdGVkVHlwZSosIFNWR0FuaW1hdGVkVHlwZSopIG92ZXJyaWRlOworICAgIGZs
b2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZykgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgYm9vbCBwYXJzZVNWR1JlY3Qo
Y29uc3QgU3RyaW5nJiwgRmxvYXRSZWN0Jik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRTdHJpbmcuaAppbmRleCAyODViOWRlY2M4ZTQ2NDE0ZjdmZjJlODIwZjBlODc5N2FmMzYyMmVi
Li42MTM4YWZkZTJmZmEyODFlNzcwOWNkMTMyNjQxNmQzNjIxZDEwNWNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaApAQCAtNDQsMTYgKzQ0LDE2IEBAIGNsYXNzIFNWR0Fu
aW1hdGVkU3RyaW5nQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IgewogcHVibGljOgogICAgIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IoU1ZHQW5pbWF0aW9u
RWxlbWVudCosIFNWR0VsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
LCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdp
bGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0
ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZv
aWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGFkZEFu
aW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICBmbG9hdCBjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdC5oCmluZGV4IDBkOWU1OTAwNmEy
OWQ3NzVlMjYyM2I1OWUxZmZjZDZhNzkwNDc3ZmIuLjA4NzI4MmEwYjQ0YzM4Nzc2YmJjN2ExYzcx
NWE2NTA1ODkyOTEyNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFu
c2Zvcm1MaXN0LmgKQEAgLTQwLDE2ICs0MCwxNiBAQCBjbGFzcyBTVkdBbmltYXRlZFRyYW5zZm9y
bUxpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiBw
dWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9u
RWxlbWVudCosIFNWR0VsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFNW
R0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IHN0YXJ0QW5p
bVZhbEFuaW1hdGlvbihjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxl
bWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c2V0QW5pbVZhbFRvQmFzZVZhbChjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9wZXJ0eUxpc3Qm
LCBTVkdBbmltYXRlZFR5cGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbVZhbFdp
bGxDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZHRWxlbWVudEFuaW1h
dGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0
ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKiwg
U1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gc3RhcnRBbmltVmFsQW5pbWF0aW9u
KGNvbnN0IFNWR0VsZW1lbnRBbmltYXRlZFByb3BlcnR5TGlzdCYpIG92ZXJyaWRlOworICAgIHZv
aWQgc3RvcEFuaW1WYWxBbmltYXRpb24oY29uc3QgU1ZHRWxlbWVudEFuaW1hdGVkUHJvcGVydHlM
aXN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNldEFuaW1WYWxUb0Jhc2VWYWwoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0JiwgU1ZHQW5pbWF0ZWRUeXBlJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBhbmltVmFsV2lsbENoYW5nZShjb25zdCBTVkdFbGVtZW50QW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFuaW1WYWxEaWRDaGFuZ2UoY29uc3QgU1ZH
RWxlbWVudEFuaW1hdGVkUHJvcGVydHlMaXN0Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGFkZEFu
aW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiwgU1ZHQW5pbWF0ZWRUeXBlKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LCBTVkdBbmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqLCBTVkdB
bmltYXRlZFR5cGUqLCBTVkdBbmltYXRlZFR5cGUqKSBvdmVycmlkZTsKKyAgICBmbG9hdCBjYWxj
dWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9T
dHJpbmcpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyYgbV90cmFuc2Zv
cm1UeXBlU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKaW5k
ZXggNjk5MDY4YzQzYTllYTcwZjZkM2Y1ZTk5YzA5NDg1YjIxYWRiMzM2My4uYjZiNjYwNGFhMmQy
NDVjYTk2ZWI0Nzg0ODVjZGE5NDczY2NiM2Y2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0aW9uRWxlbWVudC5oCkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBi
b29sIGlzVGFyZ2V0QXR0cmlidXRlQ1NTUHJvcGVydHkoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0FkZGl0aXZlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc0FkZGl0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Fj
Y3VtdWxhdGVkKCkgY29uc3Q7CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9hbmltYXRpb25Nb2RlOyB9CiAgICAgQ2FsY01vZGUgY2FsY01vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NhbGNNb2RlOyB9CkBAIC0xNzEsOCArMTcxLDggQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCByZXNldEFuaW1hdGVkUHJvcGVydHlUeXBlKCk7CiAKICAgICBz
dGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25z
dCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKIAogICAgIGVudW0gQXR0cmlidXRlVHlwZSB7CiAgICAgICAgIEF0dHJpYnV0ZVR5
cGVDU1MsCkBAIC0xODgsMTQgKzE4OCwxNCBAQCBwcm90ZWN0ZWQ6CiAgICAgU3RyaW5nIHRhcmdl
dEF0dHJpYnV0ZUJhc2VWYWx1ZSgpOwogCiAgICAgLy8gZnJvbSBTVkdTTUlMRWxlbWVudAotICAg
IHZpcnR1YWwgdm9pZCBzdGFydGVkQWN0aXZlSW50ZXJ2YWwoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCwg
U1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRl
ZEFjdGl2ZUludGVydmFsKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVBbmltYXRpb24oZmxv
YXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVu
dCkgb3ZlcnJpZGU7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fZnJvbVByb3Bl
cnR5VmFsdWVUeXBlOwogICAgIEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgbV90b1Byb3BlcnR5
VmFsdWVUeXBlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFRhcmdldEVsZW1lbnQoU1ZHRWxlbWVu
dCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFRhcmdldEVsZW1lbnQoU1ZH
RWxlbWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QXR0cmlidXRlTmFtZShjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGUgeyB9CiAgICAgYm9vbCBoYXNJbnZhbGlkQ1NTQXR0cmlidXRl
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW52YWxpZENTU0F0dHJpYnV0ZVR5cGU7IH0KICAg
ICB2b2lkIGNoZWNrSW52YWxpZENTU0F0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopOwogCkBAIC0y
MDQsNyArMjA0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0Q2FsY01vZGUoQ2FsY01vZGUg
Y2FsY01vZGUpIHsgbV9jYWxjTW9kZSA9IGNhbGNNb2RlOyB9CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCB2b2lkIGFuaW1hdGlvbkF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGFuaW1hdGlvbkF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHNldEF0dHJp
YnV0ZVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3Vs
YXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9u
U3RyaW5nKSA9IDA7CkBAIC0yMjksOSArMjI5LDkgQEAgcHJpdmF0ZToKICAgICBFTkRfREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdUZXN0cwotICAgIHZpcnR1YWwgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5j
aHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6
ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKCkg
b3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9
CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlIHsgU1ZH
VGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdm9pZCBz
eW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiAgICAgdm9pZCBzZXRDYWxjTW9kZShjb25zdCBB
dG9taWNTdHJpbmcmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXgg
ZWI1OTM5NWU0Njc5MWRmNTE5M2EzNzJhMzM2ZjYxNDNmNmJjNzJlNS4uZmQzM2FhODdjYjczN2Zh
YWYxNTdiZDA0NzA4OGM1OTA0NmFlMDM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5oCkBAIC0zNiwxNCArMzYsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdDaXJj
bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxp
ZCgpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVz
dHM6OmlzVmFsaWQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdDaXJjbGVFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmgKaW5kZXggZmI4OThlYjMzNzI5NWY3OWE2NGFhM2Jl
MzU4ZTkyYzFkZmEyODNmMy4uZjliZGMyODMwN2I5NjU1MGY5ZGEzMDMzMzJkOTA0ZjAzNzlhYTNl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaApAQCAtMzksMTYgKzM5
LDE2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHQ2xpcFBhdGhFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9Ci0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CisgICAgYm9vbCBzdXBwb3J0c0ZvY3Vz
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIG5lZWRzUGVuZGlu
Z1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
OwotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHQ2xpcFBhdGhFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFU
SU9OKENsaXBQYXRoVW5pdHMsIGNsaXBQYXRoVW5pdHMsIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5oCmluZGV4IDE2OGFlYzc3NmJkMWU3YzEwNWRmMTA4YzVjYTU4OWE2
NDA3YWEzNGMuLjcxYThjY2VkMGMxM2I3OTRlMzgyYmQ4ZmFhM2Y2MDgzZThlOTllZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudC5oCkBAIC03NiwxMCArNzYsMTAgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRl
ZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaAppbmRleCBkMzc3ZGJkNmNkNDFjZDYwY2E5OTg3OTMzZDIyNGRjZmI0YTk1ZDA5
Li41OTNmNjc5OGI2OWU3NjcyMWY0YmQ0Y2MxOThkZmQ3ZDI3NjIxMjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKQEAgLTQ3LDE1ICs0NywxNSBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lk
IGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8
VVJMPiYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0N1cnNvckVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KFgsIHgpCkBAIC02NSw5ICs2NSw5IEBAIHByaXZhdGU6CiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUwogCiAgICAgLy8gU1ZHVGVzdHMKLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVS
ZXF1aXJlZEZlYXR1cmVzKHRoaXMpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVx
dWlyZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJl
ZEV4dGVuc2lvbnModGhpcyk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVTeXN0ZW1M
YW5ndWFnZSgpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
dGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpIG92ZXJyaWRl
IHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh0aGlzKTsgfQorICAgIHZv
aWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25p
emVTeXN0ZW1MYW5ndWFnZSgpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplU3lzdGVt
TGFuZ3VhZ2UodGhpcyk7IH0KIAogICAgIEhhc2hTZXQ8U1ZHRWxlbWVudCo+IG1fY2xpZW50czsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVmc0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCmluZGV4IGZjOGYxZWYyZDFmYjE2OTNl
NDY1ZThmMDI4MjVkNGY5ZjI3NThlZTEuLjc0Y2ZjYWRmMTBjMTdkZWZkM2RkMGJmMDhhNTc1MDJj
MDI2NGQ4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEZWZzRWxlbWVudC5oCkBAIC0zNSwxMCArMzUs
MTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdEZWZzRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRGVmc0VsZW1lbnQp
CiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0Rlc2NFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RGVzY0VsZW1lbnQuaAppbmRleCBkNzMwNDZlZGVmMmUzNmNlNGJmNjk0MzAyZmQ2ZDhmNzU0NWNl
MWYyLi5mYWFmNWY3Y2Y3NTAwNzVmODc2ODBmNTcwMjA0NjJjZjhiZTBkMTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRGVzY0VsZW1lbnQuaApAQCAtMzQsNyArMzQsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNWR0Rlc2NFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCmluZGV4IGU3ZTM3NGI0MzRj
Zjc5ZGU3ZTUzMmJmNTQxNGY4OTUyZTA3M2I5MGYuLjBiODkzZWM3ODE4NWI0ODdkN2E3M2UxZjJj
NzIyMjQ1NGVlZTFmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdEb2N1bWVudC5oCkBAIC00MSw3ICs0MSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBVUkwm
KTsKIAotICAgIHZpcnR1YWwgUmVmPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0aG91dENoaWxk
cmVuKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPERvY3VtZW50PiBjbG9uZURvY3VtZW50V2l0
aG91dENoaWxkcmVuKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBGbG9hdFNpemUgbV9wYW5uaW5n
T2Zmc2V0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGRlOTZhNTBiOWMwYjdkZDhl
ODQ5OGIxNTYyYmIwMGE3NTU2ZjFkYWYuLjQ1NDE2NDg4YTI2MzkxM2I0ZTIxMzI0MzAyNzRjNDU5
NTEzNDM5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJs
aWM6CiAgICAgU1ZHU1ZHRWxlbWVudCogb3duZXJTVkdFbGVtZW50KCkgY29uc3Q7CiAgICAgU1ZH
RWxlbWVudCogdmlld3BvcnRFbGVtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIFN0cmluZyB0
aXRsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHN0YXRpYyBib29sIGlzQW5pbWF0YWJsZUNTU1Byb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlV2l0aFNWR0RPTShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jaHJv
bml6ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAg
ICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUFsbEFuaW1hdGVkU1ZHQXR0cmlidXRlKFNWR0VsZW1l
bnQqKTsKICAKLSAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0
U3R5bGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZl
YXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKICAgICBzdGF0aWMgdm9pZCBzeW5j
aHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CkBA
IC0xNDAsMTYgKzE0MCwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRl
ZFJlcXVpcmVkUmVzb3VyY2VzKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRkRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYs
IGJvb2wgdXNlQ2FwdHVyZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlbW92ZUV2ZW50
TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBi
b29sIHVzZUNhcHR1cmUpIG92ZXJyaWRlOworICAgIGJvb2wgYWRkRXZlbnRMaXN0ZW5lcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVmUHRyPEV2ZW50TGlzdGVuZXI+JiYsIGJvb2wg
dXNlQ2FwdHVyZSkgb3ZlcnJpZGU7CisgICAgYm9vbCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJl
KSBvdmVycmlkZTsKICAgICBib29sIGhhc0ZvY3VzRXZlbnRMaXN0ZW5lcnMoKSBjb25zdDsKIAog
I2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTW92ZVRvRmxv
d1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2hv
dWxkTW92ZVRvRmxvd1RocmVhZChjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IG92ZXJyaWRlOwog
I2VuZGlmCiAKICAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgU1ZHUXVhbGlmaWVkTmFtZSYgbmFt
ZSkgY29uc3QgeyByZXR1cm4gaGFzTG9jYWxOYW1lKG5hbWUubG9jYWxOYW1lKCkpOyB9Ci0gICAg
dmlydHVhbCBzaG9ydCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHNob3J0IHRhYklu
ZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGNhbGxDbGVhclRhcmdldCgpIHsgY2xl
YXJUYXJnZXQoKTsgfQogCkBAIC0xNTksMjYgKzE1OSwyNiBAQCBwcm90ZWN0ZWQ6CiAgICAgU1ZH
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIH5T
VkdFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUZvY3VzYWJsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJv
b2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5ld1ZhbHVlLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gPSBNb2RpZmllZERpcmVj
dGx5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hQYXJzaW5nQ2hp
bGRyZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmV3VmFsdWUsIEF0dHJpYnV0ZU1vZGlmaWNhdGlvblJlYXNvbiA9IE1vZGlmaWVkRGlyZWN0
bHkpIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBTVkdFbGVtZW50UmFyZURhdGEmIGVuc3VyZVNW
R1JhcmVEYXRhKCk7CiAKICAgICB2b2lkIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihTVkdQ
YXJzaW5nRXJyb3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKTsK
ICAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFt
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRp
b25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVByb3BlcnRpZXMm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5z
ZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYp
IG92ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRv
KENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Ro
c0luZm9ybWF0aW9uKCkgeyB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCksIHRoaXMpOyB9CiAgICAgdm9pZCB1cGRhdGVSZWxhdGl2ZUxlbmd0
aHNJbmZvcm1hdGlvbihib29sIGhhc1JlbGF0aXZlTGVuZ3RocywgU1ZHRWxlbWVudCopOwpAQCAt
MTg2LDE1ICsxODYsMTUgQEAgcHJvdGVjdGVkOgogICAgIGNsYXNzIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQ7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBSZW5kZXJTdHlsZSogY29tcHV0ZWRT
dHlsZShQc2V1ZG9JZCA9IE5PUFNFVURPKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIGJv
b2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOworICAgIFJlbmRlclN0
eWxlKiBjb21wdXRlZFN0eWxlKFBzZXVkb0lkID0gTk9QU0VVRE8pIG92ZXJyaWRlIGZpbmFsOwor
ICAgIGJvb2wgd2lsbFJlY2FsY1N0eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogCiAgICAg
dmlydHVhbCBib29sIGlzU3VwcG9ydGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwq
IHZlcnNpb24pIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyVGFyZ2V0KCkgeyB9CiAK
ICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGFjY2Vzc0tleUFjdGlvbihib29sIHNlbmRNb3VzZUV2ZW50cykgb3ZlcnJpZGU7CisgICAg
dm9pZCBhY2Nlc3NLZXlBY3Rpb24oYm9vbCBzZW5kTW91c2VFdmVudHMpIG92ZXJyaWRlOwogCiAj
aWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJPdXRBbmltYXRhYmxlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmgKaW5kZXggOTE1ZmE5ZjE0MzQ5MThmNmUyYTc0NGM0ZTNkMjcxY2JjMDA2NGQ3
Ny4uNDk5MzZmYjM2MmQ2NTBjMjJhY2Q4NzVjNTdjNzg1NGYxMzQ4OGNjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKQEAgLTM2LDE0ICszNiwxNCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIFNWR0VsbGlwc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH07CisgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJl
bmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdFbGxpcHNlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoQ3gsIGN4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAppbmRl
eCBjN2YyYjQwMzBiYTA3NzBiMDk4MjVkOWQ4ZTFiNTY1NmI5MDZlNjMxLi5jNDMxNDg0YzFkNTVk
YTc2MzBlMzQ2NTE3YjEzODU0ZGEwMTAxYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaApAQCAtNTgsMTAgKzU4LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
RkVCbGVuZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1
aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7
CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVCbGVuZEVsZW1l
bnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAppbmRleCBkZTJlODdiYTIwZjQy
MzE5ZWNlY2U5MDQ2OTBlYjQ1NTg2ODRmMWQ3Li5iNzIzMTk5NjllNjdiNjMxNjg1N2U1OWQ1ZDg2
OTk1MzI3ZDk5OGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQuaApAQCAtNzIsMTAgKzcyLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNW
R0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpCiAgICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4xKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCA5ZTg0OWI2NWFl
MWJkM2I2M2U3MTAyZjcyYmUzM2U4ODc0ZWQ0MDVkLi40ZmRjNzRlZjdhYzQ3YjE1NTNlOGViMzA2
NTk3ZWVkZmQ3MmVjODdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtMzQsOCArMzQsOCBAQCBwcml2YXRlOgogICAgIFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4g
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSW4xLCBpbjEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmgKaW5kZXggMjg4YjA2NjI0MDkxNmU4ZmU4MTM1YzI1MjIzODk2YTU1ZTAwMjk1Ni4u
ZGY1OGJhNTg4OTJiYjVjOGM4NzcyZjQyMDgzODQ3NTAwMTMzZGYwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaApAQCAtODcsMTAgKzg3LDEwIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU1ZHRkVDb21wb3NpdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92
ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0ZFQ29t
cG9zaXRlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkcoSW4xLCBpbjEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCmlu
ZGV4IGE2ZGUzNGQ0YmVlNzM3Yzk0NjQxZjVlOTRjZDlkNDlkMWI3YmM2YTYuLjY2YTEwNDZhOWJl
ODQ5OTlmZDBjMmY1YWE2N2Y1ZWIzYmRmOTM4ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5oCkBAIC03MywxMCArNzMsMTAgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJy
aWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwor
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIm
KSBvdmVycmlkZTsKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9yZGVyWElkZW50
aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBvcmRlcllJZGVudGlmaWVy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmgKaW5kZXggNzkxZmI5NTAzMmVlMmJiYmYyMGY1NDc2NTc4ZWIwODQ3Mzc3NzkwOC4uZThmM2Uy
ZmEyZDlkNTg0NTY1OGUxMTRkZDNkODRiNjcwMzI1ODE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaApAQCAtMzgsMTAgKzM4LDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVj
dCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlcios
IEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYga2Vy
bmVsVW5pdExlbmd0aFhJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYga2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKaW5kZXggNDFmY2I3OWMxZDU5NWJhMTM5
MWFmOGZmNzU1OTEyZTBjYmFlZWY4Mi4uOTIxOTUzMzJkMjYyY2Q4ZTA4ODdjYmJlNzI3ZTkzZDE5
MmM1YTcxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuaApAQCAtNzMsMTAgKzczLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50Jik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpIG92ZXJy
aWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRl
ciosIEZpbHRlciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUSUVTKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9TVFJJTkcoSW4xLCBpbjEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaXN0YW50TGlnaHRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50LmgKaW5kZXggMzVkYWZhNmIwZTQ5MzEzYzI5YWJjZWY5ODk5ZDNjNmQ0MWI4
MzEzYS4uZTZmMzIzYWVhMTVmNjJmNDBmYjAyZGU2MDE2NzljZGNlMjdkMGFhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaApAQCAtMzEsNyArMzEs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVmPExpZ2h0U291
cmNlPiBsaWdodFNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxMaWdodFNvdXJjZT4g
bGlnaHRTb3VyY2UoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oCmluZGV4IDgw
ZmUxOTQ0OWFiMTkyMDFiNWY0Mzk2NjEzNGRkMDg0OWM1MTI5NWQuLjgwM2FkNWU3YmFkYTJkMTQ3
NWQyNWQ1YzNjZWU4NjdiOGUxZTgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuaApAQCAtMzUsOSArMzUsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CiAgICAg
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgc3RkRGV2aWF0aW9uWElkZW50aWZpZXIo
KTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25ZSWRlbnRpZmll
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAppbmRleCAzOTljOGNkY2Ew
MTM2NDhhZjgyMjNjYjc3OTA2MDIzYzlkOTY4NDM3Li4zNjU0MzY0MjQ4YjhmOTM1ZDM0NGY2OTI1
ZGU4N2RiZDdmZWIxMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaApA
QCAtMzMsOCArMzMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZFRmxvb2RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIHNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBi
dWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpIG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaApp
bmRleCAxNDgzOWZkYzE0NTdjYTA0OTYwYWU2ZTcwZjM0MGU5ZTg5ZTNkZGQwLi5hMjRjMWQ1Nzhl
ZmU0N2E0NjEyZjgyOWFhN2ZmNmFiMGEyOWUwNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCkBAIC0zOCw5ICszOCw5IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3ZlcnJp
ZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBzdGREZXZpYXRpb25YSWRlbnRp
ZmllcigpOwogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHN0ZERldmlhdGlvbllJZGVu
dGlmaWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCmluZGV4IDFmOWNj
MDM3NzMwN2I5MjA5Nzk2MWNjYTc2ODcwNGQxMDAxZGY3NmIuLmE1ODVmM2JhYzgxNDg0N2I2YjEy
MDdiY2Q1ZmU5YzZjMTc2NjRlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5oCkBAIC00NywyMSArNDcsMjEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRUltYWdl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogICAgIHZvaWQgcmVx
dWVzdEltYWdlUmVzb3VyY2UoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVz
dCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBidWlsZFBl
bmRpbmdSZXNvdXJjZSgpIG92ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVl
c3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92
ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGRUltYWdlRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklN
QVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNw
ZWN0UmF0aW8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCmluZGV4IDhiOTQ2
NjMxYzEzNTgxNDU4ZGZiN2U0NDc0OTlmODUzODMwMmE2NmIuLjc1OWIyNGZiMTA1MjlkYjBkMDZl
ZDM4OTQ4Y2M5MzllMmM5ODE5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVu
dC5oCkBAIC0zNywxMiArMzcsMTIgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNWR0ZFTGln
aHRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hh
bmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlk
ZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdGRUxpZ2h0RWxl
bWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoQXppbXV0aCwgYXppbXV0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKaW5kZXggYzJmNDlmYTZiZTBlNDIz
NTNiOTM3YjE1YTczYTYwMDJlZWZiNGUyOS4uNzYyZTg2ZTE4MjNlNjU3MmY4MWRhMTQ5MjU2ODkw
ODBmNTYzMmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKQEAgLTMz
LDcgKzMzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBv
dmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaAppbmRleCAyZGE0ZTgxZjM4ZWNlYWQ4YjdhOWFhOWZk
ZTQ3MTBjZmYyMDU0MmJjLi4yYjc5MTdkMjZkOGIwMTg3MjJhZjk1MTUxMGI0NGQ5NzI4NTFhNzAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oCkBAIC0zMyw5
ICszMyw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVNZXJnZU5vZGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFU
RURfUFJPUEVSVElFUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xv
Z3lFbGVtZW50LmgKaW5kZXggZWMzNzdlZDQxYzY0Mjk5OTBlMDE2YmRmMzdhOTdiZmI3ZWM5MWIz
Mi4uOTkzZTdlNDliOTQ4Y2UyN2M3OTBjOWIzNDRkYjZlMzA4ZGJmMDI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5oCkBAIC02NSwxMCArNjUsMTAgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU1vcnBob2xvZ3lFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRy
aWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcmFkaXVzWElk
ZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiByYWRpdXNZSWRlbnRp
ZmllcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCmluZGV4IDJkZWZi
NTk2MjNlZmIzZGQxMmVmMGY0MzFiOWE0NjJmNGMwNTRmN2MuLjdmY2MyOWYyOTg0NGI4YjhhZjM0
MWY1M2I4MWMxNzYzMjhmZTZkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmgKQEAgLTM0LDkgKzM0LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGRU9mZnNl
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0Zp
bHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5J
TUFURURfUFJPUEVSVElFUyhTVkdGRU9mZnNldEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfU1RSSU5HKEluMSwgaW4xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFUG9pbnRMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGln
aHRFbGVtZW50LmgKaW5kZXggNmY5NTM3NDY4YzI0YjIxYWIzNDE4MmFjNGM1N2NjOTlkYmZkOGRk
Yy4uZWExODEyZGJjNGEzNGViNDNhZTRiYmM2Mzc1NmJkZDk2NDI3NWZiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5oCkBAIC0zMSw3ICszMSw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVQb2ludExpZ2h0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVmPExpZ2h0U291cmNlPiBsaWdo
dFNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZjxMaWdodFNvdXJjZT4gbGlnaHRTb3Vy
Y2UoKSBjb25zdCBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCmluZGV4
IDc5OTNiYmVmN2NmNjUzNWIzODk3OGVkMjA4ODRmNjk0NjRkNzRhY2QuLjJmODliOTMwZWJhNTIz
OTkxZDVhZGZmODFkZDQwYjgwNjJlNzE1MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaApAQCAtMzcsMTAgKzM3LDEwIEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0
KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHNldEZpbHRlckVmZmVj
dEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwg
RmlsdGVyJikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBrZXJu
ZWxVbml0TGVuZ3RoWElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBrZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RVNwb3RMaWdodEVsZW1lbnQuaAppbmRleCBhNmYxMjg0ZDBiMWRkMjVhZWFiZjg2Y2IxNmM4MDE2
NzFmNmI0YTU4Li5iMWYwOGVjM2U3NmFmYTZmMTJjOWZiN2U5MzBmNTBmZTAxNmIzZmM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5oCkBAIC0zMSw3ICszMSw3
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVTcG90TGlnaHRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBSZWY8TGlnaHRTb3VyY2U+
IGxpZ2h0U291cmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmPExpZ2h0U291cmNlPiBsaWdo
dFNvdXJjZSgpIGNvbnN0IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKaW5kZXggNmZjNjhhM2EyMmUxY2M3NDQ0
OWMxMjdjNzFmMDEyZTRmZmZmNWU5ZS4uMjQxZjBkNTZmZGQ2YTg2Zjc4ZDVjODgzYTk2YjBmODYw
MzQ1MWJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCkBAIC0zMyw5ICsz
Myw5IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRkVUaWxlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmls
dGVyQnVpbGRlciosIEZpbHRlciYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRl
ciYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0ZFVGlsZUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RSSU5HKEluMSwgaW4x
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgKaW5kZXggODU3
NmI2N2ZjNTc2NjlhNDQ5NzMzMWZiMGE1ZGUyN2JmZTgzMzkyYS4uODFlMmVmOTM4Njk4YTIyY2Yy
MGU2ODc5ZDQzZTEwZTY3MzI5MWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUdXJi
dWxlbmNlRWxlbWVudC5oCkBAIC0xMDAsMTAgKzEwMCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVy
Jikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBiYXNlRnJlcXVl
bmN5WElkZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBiYXNlRnJl
cXVlbmN5WUlkZW50aWZpZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCmlu
ZGV4IDI1YTcwNDhlMjEyNmMyYzdjYzEzMjU1YmIyZDdhZmRmYzU2ZDFkZTYuLjM0Y2YyYzhhYjM2
N2M1ZmVkYmZmYjM2NDM0Yjk5YTNhZTM5MjYwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuaApAQCAtNDYsMTcgKzQ2LDE3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZH
RmlsdGVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZp
cnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIG5lZWRzUGVuZGluZ1Jlc291cmNlSGFuZGxpbmco
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgc3RhdGljIGJvb2wgaXNT
dXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVu
ZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBO
b2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25z
dCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBmaWx0ZXJSZXNYSWRlbnRpZmllcigpOwog
ICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGZpbHRlclJlc1lJZGVudGlmaWVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKaW5kZXggZjdhMzQ2MDdlZmJhMzI0YjA0NmQwNTc0ZDNjNTlkNjUyNTBk
ZGZiZS4uYzI1MDA4ZmM1MjhlNThiZWY4ZjY0NTMxYWU2MjU2OTZmNzZkYjhlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaApAQCAtNDYsMTkgKzQ2LDE5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7
CiAgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlckVm
ZmVjdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzRmlsdGVy
RWZmZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
c3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCmluZGV4IDE5NTUzOGQxOGQ3MTYzMzE1YWQzOWQ0NzE0
Mzk0NWU1ZDI3NGUwYzEuLmFlOTJiZDhkMzgzZGE0YTJmZTUxZGMyNGI3ZTRmZjA4OWRmMDU1OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5oCkBAIC0zMyw5ICszMyw5IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTVkdGb250RGF0YShTVkdGb250RmFjZUVsZW1lbnQqKTsKICAgICB2aXJ0dWFs
IH5TVkdGb250RGF0YSgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVGb250KEZv
bnQqLCBmbG9hdCBmb250U2l6ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCB3aWR0aEZv
clNWR0dseXBoKEdseXBoLCBmbG9hdCBmb250U2l6ZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGZpbGxTVkdHbHlwaFBhZ2UoR2x5cGhQYWdlKiwgVUNoYXIqIGJ1ZmZlciwgdW5z
aWduZWQgYnVmZmVyTGVuZ3RoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVG
b250KEZvbnQqLCBmbG9hdCBmb250U2l6ZSkgb3ZlcnJpZGU7CisgICAgZmxvYXQgd2lkdGhGb3JT
VkdHbHlwaChHbHlwaCwgZmxvYXQgZm9udFNpemUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
ZmlsbFNWR0dseXBoUGFnZShHbHlwaFBhZ2UqLCBVQ2hhciogYnVmZmVyLCB1bnNpZ25lZCBidWZm
ZXJMZW5ndGgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBhcHBseVNWR0dseXBoU2VsZWN0
aW9uKFdpZHRoSXRlcmF0b3ImLCBHbHlwaERhdGEmLCBib29sIG1pcnJvciwgaW50IGN1cnJlbnRD
aGFyYWN0ZXIsIHVuc2lnbmVkJiBhZHZhbmNlTGVuZ3RoLCBTdHJpbmcmIG5vcm1hbGl6ZWRTcGFj
ZXNTdHJpbmdDYWNoZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKaW5k
ZXggMGU5MzQ1ZDhhNmE0MmRlODY4ZTljNzY1ZjQ0MzljMzIxNzdmYTBiOS4uYjcwZGU3OGM3NGFh
MDUyNGM5MzY1NzBkY2Y5NzNiNGMxYzdjODcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVt
ZW50LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGb250RWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdm9pZCBlbnN1cmVHbHlwaENhY2hlKCk7
CiAgICAgdm9pZCByZWdpc3RlckxpZ2F0dXJlc0luR2x5cGhDYWNoZShWZWN0b3I8U3RyaW5nPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oCmluZGV4IDVlNGM1MDA5ZmUy
OWU1MzA0MDEzZDI5MWJjYzZkMGI5YTA4NDQ2YTQuLjk1YWIwMTIzNjE1OGRjOTE4YWRhNWRkMWJh
ODg5NjVhMmU3YjQwNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmgK
QEAgLTU1LDEzICs1NSwxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvbnRGYWNlRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92
ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlbmRl
cmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgUmVmPFN0eWxlUnVsZUZvbnRGYWNlPiBtX2ZvbnRGYWNlUnVsZTsKICAgICBTVkdG
b250RWxlbWVudCogbV9mb250RWxlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZUZvcm1hdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250
RmFjZUZvcm1hdEVsZW1lbnQuaAppbmRleCBiMWU5MDYyZmJmY2RlZjA1YWY3NmZlZGI5YmRjOWRk
ZWQ5NjVkODkyLi41MzRiODg3N2QwYzg1MTI0ZDY0MmZlNjhiNWUzMmYxM2Q0ZmZlNmQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudC5oCkBAIC0zMiw4
ICszMiw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHRm9udEZhY2VGb3JtYXRFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IG92ZXJyaWRlOworICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYp
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VOYW1lRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlTmFtZUVsZW1lbnQuaAppbmRleCBhMWEy
YTU1YmNlZDRiMDEwMmUwNTc2YzM3Zjg4YTMwMWZhYzc2MDYyLi40ZjdlOWFlNjMzNmQxZGY5Y2E4
NjdjOGY2NjA4OTM1ZjEwNDljNGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VOYW1lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFj
ZU5hbWVFbGVtZW50LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBT
VkdGb250RmFjZU5hbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VTcmNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VTcmNFbGVtZW50
LmgKaW5kZXggZTMxMTFlYWNhNTQxOGVhYTRjYmM3YzUwY2RjZWE2ZWJlNDdlZTIzNi4uNDMyNTU1
ZTAzNmU4ZDM5MjJlMDY2ZGMxZWJmMDFiNjJmNzFjNzVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvbnRGYWNlU3JjRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb250RmFjZVNyY0VsZW1lbnQuaApAQCAtMzYsOCArMzYsOCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIFNWR0ZvbnRGYWNlU3JjRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQmKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQg
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFs
c2U7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGb250RmFjZVVyaUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RmFjZVVyaUVsZW1lbnQuaAppbmRleCBkOGZiYjIyMjNjYmM2MDVmZDZmZWEzYThiYTcw
ZTdmZWM4OTk4ODBhLi5jMmRhYTg2NTZjZWU0MjdmM2M4YjNiNTk0YzljMmRjNThjZDFjNzk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VVcmlFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlVXJpRWxlbWVudC5oCkBAIC00MCwxMCAr
NDAsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdGb250RmFjZVVyaUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVx
dWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKICAgICB2b2lkIGxvYWRGb250KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LmgKaW5kZXggOWNhMzQ2NmE0Mzg1MzU3OGUwMGE5MjQ4OGM0MWRl
Yjg3N2I4MjkyMy4uOGQwNTljMTY5NTFlMGQxYTM4NDhiOTkzYzhjMzEwMTliOGNiZWRhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTM3LDE2
ICszNywxNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGlz
VmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9Cisg
ICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFs
aWQoKTsgfQogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJl
ZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFgsIHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCmluZGV4IDAyMzI0Zjk4
MTQ1MmVhMWM5MDVkYjRhZmQwZjEzNWNkODUwZDMwYzUuLmY4MzEyNzk0ZTZmYTk3YTk4NjE2ZjIy
M2FiNjkyMDRiMmJkNTU2MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCkBAIC0zNiwxNSAr
MzYsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAogICAg
IHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNv
bnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVS
VElFUyhTVkdHRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOX09WRVJS
SURFKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhFbGVtZW50LmgKaW5kZXggN2EwZTIxYTkyYzM2N2M1ZjY0
MGRiMDczY2M0ZGMyYTRiNjk0MjJkNC4uMGVhYmM0YjgyNGM0ZDdhMTY5ZGQyODM5N2VhMDZkMzdh
ZjIxZGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaEVsZW1lbnQuaApAQCAtNDcsMTIgKzQ3
LDEyIEBAIHByaXZhdGU6CiAgICAgU1ZHR2x5cGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2lu
Zy4KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250
YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRh
aW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJv
bShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZUdseXBoQ2FjaGUoKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2x5cGhSZWZFbGVtZW50LmgKaW5kZXggMmFjMjc5ZDNiNDZjZDA1
MWY1NjcyYTFhYzUxODM3ZWMxY2M3NzVlNS4uYTc5YzZmMWIwNjVkODliYjUwMjgzNzhmMDI0NzI1
ZmZhZTY0MjY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoUmVmRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHbHlwaFJlZkVsZW1lbnQuaApAQCAt
MzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdHbHlwaFJlZkVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIGJvb2wgaGFz
VmFsaWRHbHlwaEVsZW1lbnQoU3RyaW5nJiBnbHlwaE5hbWUpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiAKICAgICAvLyBET00gaW50ZXJm
YWNlCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnbHlwaFJlZigpIGNvbnN0OwpAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR0dseXBoUmVmRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNW
R0dseXBoUmVmRWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVFJJTkdfT1ZFUlJJ
REUoSHJlZiwgaHJlZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVu
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuaAppbmRl
eCAwYzVmY2QwNmZhOTRkZmNlZjk5ZTVmYzcyNDFmNTE1Yzk1ZDA0ZGM0Li42MDk1YTliZmMzNzEw
NDJmNTE0MTI2YWQ1N2UyMDQ0ZmMyOTcyYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5oCkBAIC05MCwxMyArOTAsMTMgQEAgcHJvdGVjdGVkOgogICAgIFNWR0dyYWRp
ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHN0YXRp
YyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhh
bmRsaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIG5lZWRz
UGVuZGluZ1Jlc291cmNlSGFuZGxpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikg
b3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHR3Jh
ZGllbnRFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0VOVU1FUkFUSU9OKFNwcmVh
ZE1ldGhvZCwgc3ByZWFkTWV0aG9kLCBTVkdTcHJlYWRNZXRob2RUeXBlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCmluZGV4IDc0ZDRiNDJhNzEwNThmZWJhMjc3NjE4ODJl
ODU3NDg0Yjc0ZmFlOWQuLmZiNjIwNzAzMWQwNzJmYTQ3MmIzN2E0YWJlNjQwNWFiNDU0MzYyOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgKQEAgLTM1LDQ1ICszNSw0
NSBAQCBjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCwgcHVibGlj
IFNWR1RyYW5zZm9ybWFibGUsIHB1YmxpYyBTVgogcHVibGljOgogICAgIHZpcnR1YWwgflNWR0dy
YXBoaWNzRWxlbWVudCgpOwogCi0gICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKFN0
eWxlVXBkYXRlU3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBnZXRTY3JlZW5DVE0oU3R5bGVVcGRhdGVTdHJhdGVneSA9IEFs
bG93U3R5bGVVcGRhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU1ZHRWxlbWVudCogbmVhcmVz
dFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU1ZHRWxlbWVu
dCogZmFydGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gZ2V0Q1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKSBv
dmVycmlkZTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0U2NyZWVuQ1RNKFN0eWxlVXBkYXRlU3Ry
YXRlZ3kgPSBBbGxvd1N0eWxlVXBkYXRlKSBvdmVycmlkZTsKKyAgICBTVkdFbGVtZW50KiBuZWFy
ZXN0Vmlld3BvcnRFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU1ZHRWxlbWVudCogZmFy
dGhlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQWZm
aW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6
Q1RNU2NvcGUgbW9kZSkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6
bG9jYWxDb29yZGluYXRlU3BhY2VUcmFuc2Zvcm0obW9kZSk7IH0KLSAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIG92ZXJyaWRl
OworICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdM
b2NhdGFibGU6OkNUTVNjb3BlIG1vZGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1RyYW5z
Zm9ybWFibGU6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKG1vZGUpOyB9CisgICAgQWZm
aW5lVHJhbnNmb3JtIGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dT
dHlsZVVwZGF0ZSkgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGdldEJCb3goU3R5bGVVcGRhdGVT
dHJhdGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRJ
c29sYXRlQmxlbmRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZElzb2xhdGVCbGVuZGluZzsg
fQogICAgIHZvaWQgc2V0U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGJvb2wgaXNvbGF0ZSkgeyBtX3No
b3VsZElzb2xhdGVCbGVuZGluZyA9IGlzb2xhdGU7IH0KIAogICAgIC8vICJiYXNlIGNsYXNzIiBt
ZXRob2RzIGZvciBhbGwgdGhlIGVsZW1lbnRzIHdoaWNoIHJlbmRlciBhcyBwYXRocwogICAgIHZp
cnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGlj
c0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEVsZW1lbnQ6OnN1
cHBvcnRzRm9jdXMoKSB8fCBoYXNGb2N1c0V2ZW50TGlzdGVuZXJzKCk7IH0KKyAgICBib29sIHN1
cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBFbGVtZW50OjpzdXBwb3J0c0Zv
Y3VzKCkgfHwgaGFzRm9jdXNFdmVudExpc3RlbmVycygpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCiAgICAg
QkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0dyYXBoaWNzRWxlbWVudCkKICAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9UUkFOU0ZPUk1fTElTVChUcmFuc2Zvcm0sIHRyYW5zZm9y
bSkKICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBib29sIGlzU1ZHR3JhcGhpY3NFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNTVkdHcmFwaGljc0VsZW1lbnQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICAvLyBTVkdUZXN0cwotICAgIHZpcnR1YWwg
dm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpz
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0
ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVz
KCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHRoaXMp
OyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlIHsg
U1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKHRoaXMpOyB9CisgICAgdm9p
ZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogCiAgICAgLy8gVXNlZCBieSA8YW5pbWF0ZU1v
dGlvbj4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWZmaW5lVHJhbnNmb3JtPiBtX3N1cHBsZW1lbnRh
bFRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdIS2VybkVsZW1lbnQuaAppbmRleCBjMmU5M2Nk
ZDkzNTk3NWQ2NTkxMTMwMWE3YzJlZmU2N2U0OGQ0NDExLi4wZDk4ZTYwMzRiNDljOWM2YjhhNDM3
MzE3NjRmNDEzZGJmZTE2NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSEtl
cm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0hLZXJuRWxlbWVudC5oCkBA
IC0zNiwxMCArMzYsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdIS2VybkVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRl
OworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5l
ck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5o
CmluZGV4IDFhN2ZkOGRmM2QyOGU3MDY5OGNlMTY4OGNlZWQzMDE5NTIyMThiNmMuLjJlNTBmZTk3
OTdmYjhhOTg0MDYxNDYzNjNmMzBmMzllMGZhYzNmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmgKQEAgLTQyLDI0ICs0MiwyNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNW
R0ltYWdlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICAKLSAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3Rz
Ojppc1ZhbGlkKCk7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOworICAgIEluc2VydGlv
bk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbWFnZVNvdXJjZVVSTCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgaW1hZ2VTb3VyY2VVUkwoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOworICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CiAKICAgICBCRUdJ
Tl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHSW1hZ2VFbGVtZW50KQogICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIu
aAppbmRleCAzMGEwOWZjYmM1ZDIzZjAxZDcyZTVhNGM0ZDFkNzA2MzBkNzE1Zjk4Li44ZWE3Njdl
NTQzMzEzN2IwZmUwZTkzNWE5NjRkNTFkMjRhNDMyNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VMb2FkZXIuaApAQCAtMzIsOCArMzIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+U1ZHSW1h
Z2VMb2FkZXIoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZl
bnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VVUkkoY29uc3QgQXRvbWlj
U3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpIG92
ZXJyaWRlOworICAgIFN0cmluZyBzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Qg
b3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5oCmluZGV4IGIwYWNhODZiMWQxNzJkY2VlMGU2MjIxMWE0NTFkYzYwNTQ2MTE3
ZWUuLmYzZGRiM2NkNDAzNWZmZWE4NTU3M2RiNmUxODU0ODg3NTVlYWRiYWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5oCkBAIC0zNiwxNSArMzYsMTUgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1
cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0xpbmVF
bGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKaW5kZXggZGNmYWJhMzFm
ZjRjZmM3MjI1MTI1YjI2Yzg3MTRlMzY0YjQ5MDYxMC4uMDY5MjM4ZjkxNDY1NDQ0NTVkYjdjODE2
MGRlOTI5MTcwZTZiMmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQuaApAQCAtMzksMTIgKzM5LDEyIEBAIHByaXZhdGU6CiAgICAgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAg
c3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92
ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDEsIHgx
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01QYXRoRWxlbWVudC5oCmluZGV4IGNlZjU5N2ZkNTNlYjEzYTI3
NmQ4OGQ2MGQ3ZTAxNjc1ZThhYmZiNmMuLjQxYjZmZWE4NmNkNDRiNDJmZGE5MDcxZTIwYzFlM2Ex
ZDMxMGVkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNUGF0aEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTVBhdGhFbGVtZW50LmgKQEAgLTQ2LDE0ICs0
NiwxNCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKLSAgICB2aXJ0dWFsIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOworICAgIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENv
bnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5v
ZGUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRlOworICAg
IGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgbm90aWZ5UGFyZW50T2ZQYXRoQ2hhbmdlKENvbnRhaW5lck5vZGUqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggOGNmZWRhOTY0YWQxYTk0
NDg5ZDVjNDlhYjcyZjAyYzFhNjIxNzY3Zi4uYzFkMzdmNmQzZjBlMmI2NjFkYTMyNDE4N2FlNGZk
ODkyODI3ZDUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC0xMjUs
MTcgKzEyNSwxNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR01hcmtlckVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQ
ZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hh
bmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoaWxk
cmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJT
dHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRp
dmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCmluZGV4IDA4YmZmODE2YmQyMTA5M2M2
OTg1NGMzZWFmYmQyY2Y2MzdiMzEyNDYuLjMxZDRiMTRiYjRhMWJlZTk3MWIxMDMxNzIwY2UwZGVh
YmM1YjMwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCkBAIC00MCwxNyArNDAs
MTcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotICAgIHZpcnR1YWwgYm9v
bCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdU
ZXN0czo6aXNWYWxpZCgpOyB9CisgICAgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRsaW5n
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHN0YXRpYyBib29sIGlz
U3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3Zl
cnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgQkVHSU5fREVDTEFSRV9BTklN
QVRFRF9QUk9QRVJUSUVTKFNWR01hc2tFbGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X0VOVU1FUkFUSU9OKE1hc2tVbml0cywgbWFza1VuaXRzLCBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlKQpAQCAtNjMsOSArNjMsOSBAQCBwcml2YXRlOgogICAgIEVORF9ERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRJRVMKIAogICAgIC8vIFNWR1Rlc3RzCi0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUmVxdWlyZWRGZWF0dXJlcygpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyh0aGlzKTsgfQotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVp
cmVkRXh0ZW5zaW9ucygpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRF
eHRlbnNpb25zKHRoaXMpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFu
Z3VhZ2UoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRo
aXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVycmlkZSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KKyAgICB2b2lk
IHN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3lu
Y2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModGhpcyk7IH0KKyAgICB2b2lkIHN5bmNocm9uaXpl
U3lzdGVtTGFuZ3VhZ2UoKSBvdmVycmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxh
bmd1YWdlKHRoaXMpOyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWV0YWRhdGFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWV0YWRhdGFFbGVt
ZW50LmgKaW5kZXggZjgxNTMwYzMyNWQzZGRhYTRiZjBhMDI1NjIxOTIyYzliNTBkODkyMS4uY2Fi
YmVhOTExOGQ5Yzc4OTg4MzhmZThmZjFkNGY1MjVmZTBkNjM3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01ldGFkYXRhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNZXRhZGF0YUVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNWR01ldGFkYXRhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxl
Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQo
Y29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01p
c3NpbmdHbHlwaEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNaXNzaW5nR2x5cGhF
bGVtZW50LmgKaW5kZXggYmNlNmMyNTJiYzQ5NmZiZDVkOTFkMzNhMzRhZmE1NDgwY2Y4NTdjNi4u
ZDlhMzY1YmVhYjBlODJhODBlYzdhMzU5ODg2MjFkNDFhOTU2OTQxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01pc3NpbmdHbHlwaEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU1ZHTWlzc2luZ0dseXBoRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNv
bnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJl
bmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxz
ZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1
aWxkZXIuaAppbmRleCA5NGYzMzJkZmRhODc0YmYxMzg3MTg2NjBkMzg3Mzk3YjBhODdiOTYxLi5m
NWE3ZWI5OWNjOTMzN2YzZTIwODgwOWFhNjBiYjY1NGM1OWIxYTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJ1aWxkZXIuaApAQCAtMzYsMjIgKzM2LDIyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRo
QnVpbGRlcihQYXRoJik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBh
dGhTZWdtZW50Q291bnQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVD
b25zdW1pbmcoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBpbmNyZW1lbnRQ
YXRoU2VnbWVudENvdW50KCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBjb250aW51ZUNvbnN1bWlu
ZygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIFVzZWQgaW4gVW5hbHRlcmVk
UGFyc2luZy9Ob3JtYWxpemVkUGFyc2luZyBtb2Rlcy4KLSAgICB2aXJ0dWFsIHZvaWQgbW92ZVRv
KGNvbnN0IEZsb2F0UG9pbnQmLCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGluZVRvKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29v
cmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWMoY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0
aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQYXRoKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgY2xvc2Vk
LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgbGluZVRvKGNvbnN0IEZs
b2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY3VydmVU
b0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQ
b2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZVBhdGgo
KSBvdmVycmlkZTsKIAogICAgIC8vIE9ubHkgdXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nIG1vZGUu
Ci0gICAgdmlydHVhbCB2b2lkIGxpbmVUb0hvcml6b250YWwoZmxvYXQsIFBhdGhDb29yZGluYXRl
TW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCBsaW5lVG9WZXJ0aWNhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Ntb290
aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9k
ZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBj
dXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0
aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIFBh
dGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sLCBib29sLCBjb25z
dCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9CisgICAgdm9pZCBsaW5lVG9Ib3Jpem9udGFsKGZsb2F0LCBQYXRoQ29vcmRp
bmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGxp
bmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpYyhjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3Zl
cnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgY3VydmVUb1F1YWRyYXRp
Y1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZs
b2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBv
dmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICBQYXRoJiBtX3BhdGg7CiAg
ICAgRmxvYXRQb2ludCBtX2N1cnJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEJ5dGVTdHJlYW1CdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEJ5
dGVTdHJlYW1CdWlsZGVyLmgKaW5kZXggYzI5NmI0N2I4MGQ0YTMyNTdkZmU2ZTdlN2IzYjlhMzI4
ZGY3MDNmNy4uZmE1ODdjYTBjYmY3ZGI2YTAyODc0Zjc1NDQ2NTdlNTJkOGIyMTdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIuaApAQCAtMzMsMjIg
KzMzLDIyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRoQnl0ZVN0cmVhbUJ1aWxkZXIoU1ZHUGF0aEJ5
dGVTdHJlYW0mKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNl
Z21lbnRDb3VudCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1
bWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGluY3JlbWVudFBhdGhT
ZWdtZW50Q291bnQoKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJz
aW5nL05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgotICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29u
c3QgRmxvYXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGlu
YXRlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpYyhjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29v
cmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhdGgoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBh
dGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQ
b2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJ2ZVRvQ3Vi
aWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlUGF0aCgpIG92
ZXJyaWRlOwogCiAgICAgLy8gT25seSB1c2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcgbW9kZS4KLSAg
ICB2aXJ0dWFsIHZvaWQgbGluZVRvSG9yaXpvbnRhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2Rl
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbGluZVRvVmVydGljYWwoZmxvYXQsIFBhdGhD
b29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Nt
b290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRl
TW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3Qg
RmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0
UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBh
cmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZs
YWcsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAg
IHZvaWQgbGluZVRvSG9yaXpvbnRhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92
ZXJyaWRlOworICAgIHZvaWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lk
IGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQ
YXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Nt
b290aChjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29s
IHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJp
ZGU7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCeXRlVHlwZT4KICAgICB2b2lkIHdyaXRlVHlw
ZShjb25zdCBCeXRlVHlwZSYgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoQnl0ZVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRl
U3RyZWFtU291cmNlLmgKaW5kZXggYjdhNjY0MDYwOWVlOTU0NTE1YzRiNzk5ZjJjYTc4NGFhZjY0
MThjMS4uMDMzZjFkMGQ5OTQ4MGE1NDY1M2NjMzY2ODAxODRhNmIwMzU0NTMzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhCeXRlU3RyZWFtU291cmNlLmgKQEAgLTMxLDIwICszMSwy
MCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHUGF0aEJ5dGVTdHJlYW1Tb3VyY2UoY29uc3Qg
U1ZHUGF0aEJ5dGVTdHJlYW0mKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaGFzTW9y
ZURhdGEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgbW92ZVRvTmV4dFRva2Vu
KCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBwYXJzZVNWR1Nl
Z21lbnRUeXBlKFNWR1BhdGhTZWdUeXBlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTVkdQYXRo
U2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgcGFyc2VNb3ZlVG9TZWdtZW50KEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgcGFyc2VMaW5lVG9TZWdtZW50KEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFyc2VMaW5lVG9Ib3Jpem9udGFsU2VnbWVudChmbG9hdCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUxpbmVUb1ZlcnRpY2FsU2VnbWVudChmbG9hdCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoRmxv
YXRQb2ludCYsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVudChGbG9hdFBvaW50JiwgRmxvYXRQ
b2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUN1cnZlVG9RdWFkcmF0aWNT
ZWdtZW50KEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUFyY1RvU2VnbWVudChmbG9hdCYsIGZsb2F0Jiwg
ZmxvYXQmLCBib29sJiwgYm9vbCYsIEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGhh
c01vcmVEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBtb3ZlVG9OZXh0VG9rZW4oKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBwYXJzZVNWR1NlZ21lbnRUeXBlKFNW
R1BhdGhTZWdUeXBlJikgb3ZlcnJpZGU7CisgICAgU1ZHUGF0aFNlZ1R5cGUgbmV4dENvbW1hbmQo
U1ZHUGF0aFNlZ1R5cGUpIG92ZXJyaWRlOworCisgICAgYm9vbCBwYXJzZU1vdmVUb1NlZ21lbnQo
RmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2VMaW5lVG9TZWdtZW50KEZsb2F0
UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQo
ZmxvYXQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlTGluZVRvVmVydGljYWxTZWdtZW50KGZs
b2F0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZUN1cnZlVG9DdWJpY1NlZ21lbnQoRmxvYXRQ
b2ludCYsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJz
ZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmKSBvdmVy
cmlkZTsKKyAgICBib29sIHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQoRmxvYXRQb2ludCYs
IEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Nt
b290aFNlZ21lbnQoRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2VBcmNUb1Nl
Z21lbnQoZmxvYXQmLCBmbG9hdCYsIGZsb2F0JiwgYm9vbCYsIGJvb2wmLCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGU7CiAKICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ3MDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCmluZGV4IDg5Y2MzZDI0YTVmNGJl
MDgxYWZhMDc3NmM1YmNlNTA4NmIyMjBhYTcuLjRhNWMzMWRlOTQ4NGQ0NDQzYzkxMDU1MjI1ZTMz
MTQ0NjY4Y2MzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCkBAIC05MSw3ICs5
MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGF0aFNlZ0xpc3RDaGFuZ2VkKFNWR1BhdGhTZWdS
b2xlLCBMaXN0TW9kaWZpY2F0aW9uID0gTGlzdE1vZGlmaWNhdGlvblVua25vd24pOwogCi0gICAg
dmlydHVhbCBGbG9hdFJlY3QgZ2V0QkJveChTdHlsZVVwZGF0ZVN0cmF0ZWd5ID0gQWxsb3dTdHls
ZVVwZGF0ZSkgb3ZlcnJpZGU7CisgICAgRmxvYXRSZWN0IGdldEJCb3goU3R5bGVVcGRhdGVTdHJh
dGVneSA9IEFsbG93U3R5bGVVcGRhdGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIGNvbnN0IFNW
R1Byb3BlcnR5SW5mbyogZFByb3BlcnR5SW5mbygpOwogCkBAIC0xMDQsMTIgKzEwNCwxMiBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1BhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCiAgICAgc3RhdGlj
IGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgIHZp
cnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c01hcmtlcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIC8vIEN1c3RvbSAnZCcgcHJvcGVydHkKICAgICBzdGF0
aWMgdm9pZCBzeW5jaHJvbml6ZUQoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwpAQCAtMTIw
LDEwICsxMjAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFO
X09WRVJSSURFKEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQpCiAgICAgRU5EX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUwogCi0gICAgdmlydHVh
bCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgUmVu
ZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5
bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmKSBvdmVycmlkZTsKKyAgICBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0
IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVk
RnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGludmFsaWRhdGVNUGF0
aERlcGVuZGVuY2llcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0FyY0Ficy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdBcmNBYnMuaAppbmRl
eCAwZmExNDE1Y2MzYzU1YmFjMzVkZDdhYjdlOTZjNTE2MTM5MDMxYjg2Li45OTk1YmQzZGIwNzZh
YTE4NjY2YjY3ZTQ0ZGIwNzgzY2E5YjlhOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0FyY0Ficy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
QXJjQWJzLmgKQEAgLTM5LDggKzM5LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBBVEhTRUdfQVJDX0FCUzsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNM
ZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiQSI7IH0KKyAgICB1bnNpZ25lZCBzaG9y
dCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdfQVJDX0FCUzsg
fQorICAgIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIkEiOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyY1JlbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdBcmNSZWwuaAppbmRleCBmZTUwMjkyY2QzYmQ5MTA0N2Q3ZTU3YzFhOGNmN2UwMDQ1
YTk4YzA5Li4wNWU4ZmQzMGE3ZmE3NDZiZWJkYjE1NDQ0MmY4MmI5OTQ3OTZjZmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0FyY1JlbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQXJjUmVsLmgKQEAgLTM5LDggKzM5LDggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdfQVJDX1JFTDsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiYSI7
IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBBVEhTRUdfQVJDX1JFTDsgfQorICAgIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gImEiOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0Nsb3NlUGF0aC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDbG9zZVBhdGguaAppbmRleCAzYjdhZTVh
NjVhYTMzM2M3NmFmY2M5NTJlNmUyOWVmNWM3MjllMDAxLi41NzAxMjc5YWZjYTY4NDRjMWVmMTBh
OGU3YWViNzRhMjgzM2M5MjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0Nsb3NlUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ2xvc2VQ
YXRoLmgKQEAgLTM4LDggKzM4LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmly
dHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFBBVEhTRUdfQ0xPU0VQQVRIOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xl
dHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJaIjsgfQorICAgIHVuc2lnbmVkIHNob3J0
IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUEFUSFNFR19DTE9TRVBBVEg7
IH0KKyAgICBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJaIjsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljQWJzLmgKaW5kZXggMWI0NWI2ZWQ2YzYzZTdh
NTlmYWUyNDE5OGIxZmE0ODYzOWZhYmRkYy4uMTFmZmM2MDU3OTgxZDc0YjI4MTI4OWE5NTZiYTkw
NzQxY2E4YzNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2
ZXRvQ3ViaWNBYnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY0Ficy5oCkBAIC0zOSw4ICszOSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAg
IHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgcGF0
aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJDIjsgfQorICAgIHVu
c2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUEFUSFNF
R19DVVJWRVRPX0NVQklDX0FCUzsgfQorICAgIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkMiOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJp
Y1JlbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwuaApp
bmRleCAzNWRkNzEzMGRkOTU4Mzc1OTg3NjIwYTAzOTM5NDc1ZTU3ODkxZDNlLi41ZDRlZDFkN2Qx
OGMxMDAyZDM2ZmU2YTA5MzA3ODczODhiZDA3Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1JlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsLmgKQEAgLTM5LDggKzM5LDggQEAgcHJpdmF0ZToK
ICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19SRUw7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gImMiOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMOyB9CisgICAgU3RyaW5nIHBh
dGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiYyI7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnQ3VydmV0b0N1YmljU21vb3RoQWJzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicy5oCmluZGV4IGZiNDQ0ZjE4ODI4ZjdlMTJlNDc1
NjMyYzE5N2FkOTUwNzllYjNhMDMuLmE2M2JiOWZkN2QxMWIzMjhjYTk2YzlhMTZlMTJmNWJlMjIz
Njk3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b0N1
YmljU21vb3RoQWJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRv
Q3ViaWNTbW9vdGhBYnMuaApAQCAtMzksOCArMzksOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9BQlM7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlMiOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCUzsgfQorICAgIFN0cmluZyBw
YXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlMiOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwuaAppbmRleCA5MTQ0ZDRmY2VkYTQ1YjY3ODc1
ZjcxOTk3ZmJlODhjYzU0N2I4YjQ1Li4xMWQ3NDI5OTJmNmY5YjZmZTZlNDNkNWE0M2ZjOTgxMGRh
YjcxNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9D
dWJpY1Ntb290aFJlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0
b0N1YmljU21vb3RoUmVsLmgKQEAgLTM5LDggKzM5LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
fQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMOyB9Ci0gICAgdmly
dHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJzIjsgfQorICAgIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gUEFUSFNFR19DVVJWRVRPX0NVQklDX1NNT09USF9SRUw7IH0KKyAgICBTdHJpbmcg
cGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJzIjsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMuaAppbmRleCAyY2I4ZmU1Mjk4YzNkNzM3MWFkMDc5
MjFhMTlhNmMwYjRjYmRkOGQ1Li5kNWE2OGRkYWQ5ZDg5MWIzMDE2MDk1NjhiZWViYTg4ZjQ1MjM0
OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNBYnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1cnZldG9RdWFk
cmF0aWNBYnMuaApAQCAtMzksOCArMzksOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlM7IH0KLSAgICB2aXJ0dWFsIFN0cmlu
ZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlEiOyB9Cisg
ICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
QVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX0FCUzsgfQorICAgIFN0cmluZyBwYXRoU2VnVHlwZUFz
TGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlEiOyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0N1
cnZldG9RdWFkcmF0aWNSZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0
b1F1YWRyYXRpY1JlbC5oCmluZGV4IGU3NmY2ZDcyMzhhOGUwMzk0MmVmNGM5MjFkNWYzOTcwMjk3
MGUwOTguLmZkY2U2ZDljNDA3MjAyYWZiZjMxMzJlZjliNjYyYTU0OTljYWY4ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1JlbC5oCkBA
IC0zOSw4ICszOSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdW5z
aWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VH
X0NVUlZFVE9fUVVBRFJBVElDX1JFTDsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBl
QXNMZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAicSI7IH0KKyAgICB1bnNpZ25lZCBz
aG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdfQ1VSVkVU
T19RVUFEUkFUSUNfUkVMOyB9CisgICAgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAicSI7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRp
Y1Ntb290aEFicy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJh
dGljU21vb3RoQWJzLmgKaW5kZXggYTRjYzQ5ODg1MDRkNGVhNDU5ZDAyYjAyMWRjZGQ0NjJiNmE3
YjQ5MC4uZThiY2ZlZjY4M2JiZjJiZDBmNWQ2ZmI2MzJmMmE3OGNiMGU4ODA3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoQWJz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21v
b3RoQWJzLmgKQEAgLTM5LDggKzM5LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUzsgfQotICAgIHZpcnR1YWwg
U3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiVCI7
IH0KKyAgICB1bnNpZ25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNfU01PT1RIX0FCUzsgfQorICAgIFN0cmluZyBw
YXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIlQiOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbC5oCmluZGV4IGUzYzM1OGEwNjE1
NzI3ODcwZmU2YmNlZjFiMjdiM2ZiYzYwNTFlZDkuLjIxNjFjOTQyMWJmMmQ3NDA1ZDljM2ExMWUy
NWM5NmIzMzU4NDgyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
Q3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbC5oCkBAIC0zOSw4ICszOSw4IEBAIHByaXZh
dGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NN
T09USF9SRUw7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gInQiOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1NN
T09USF9SRUw7IH0KKyAgICBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICJ0IjsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9BYnMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvQWJzLmgKaW5kZXggNDk5YzcwNjFhYTEyOTRhOTll
ZGFjYjZlNzRjMTcyNTg5ODNlY2U4Mi4uYjVjYzRlNDVjZjI2NzE4NDdmN2Q4NzBhMWJmMmRiODY5
NzM2ODFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9B
YnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b0Ficy5oCkBAIC0z
OSw4ICszOSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdW5zaWdu
ZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VHX0xJ
TkVUT19BQlM7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkwiOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5
cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19BQlM7IH0KKyAgICBT
dHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJMIjsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMuaAppbmRleCAyY2RiYmIwNjEyZTY4NDUy
NmM3MzQxMGYwMTdmMDNkMWVhYWFlNDg4Li4wOGM4NTY5ZDhmMGUyZWI3NzMxMzg5NzY2ZjU2OTNj
OTQ0YzJlZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxBYnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0
b0hvcml6b250YWxBYnMuaApAQCAtMzksOCArMzksOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9BQlM7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkgi
OyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBQQVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX0FCUzsgfQorICAgIFN0cmluZyBwYXRoU2Vn
VHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkgiOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpbmV0b0hvcml6b250YWxSZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGluZXRvSG9yaXpvbnRhbFJlbC5oCmluZGV4IDEyZjNlMGJjN2ZjZjExMzkzZWI3Nzc4YTY5N2Zj
OGMxYWUxZTRlYzcuLmMyYzFmNjU1MTk1NDA5NjczNmY1MTVkNDBjNjNmY2I3NjMxNzllMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJl
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJl
bC5oCkBAIC0zOSw4ICszOSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQ
QVRIU0VHX0xJTkVUT19IT1JJWk9OVEFMX1JFTDsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhT
ZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiaCI7IH0KKyAgICB1bnNp
Z25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdf
TElORVRPX0hPUklaT05UQUxfUkVMOyB9CisgICAgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiaCI7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvUmVs
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1JlbC5oCmluZGV4IGU1ODk4
N2JiNzA2OTU0ODI1YmQ2YmE1ODNlZDdmMzg3NGY5YTg3Y2YuLjE2YmE1NjI3MGNkYzU1MDQ3YzYy
ZDQ3ODZlYmQ4YWMwOTM2YmEwYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnTGluZXRvUmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaW5l
dG9SZWwuaApAQCAtMzksOCArMzksOCBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIHNob3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gUEFUSFNFR19MSU5FVE9fUkVMOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVB
c0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJsIjsgfQorICAgIHVuc2lnbmVkIHNo
b3J0IHBhdGhTZWdUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUEFUSFNFR19MSU5FVE9f
UkVMOyB9CisgICAgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAibCI7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVydGljYWxBYnMuaAppbmRleCA5YWJjOTk0
ZjI3M2Q2ZThhODY3ODU1YzFkZDI3YjIzNTRlMDNmMTQxLi4wMDBjZmQyM2M4YjA2OWRjYTZhYjc3
MDNiNThjYWUyNmQ2ZjAzYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaW5ldG9WZXJ0aWNhbEFicy5oCkBAIC0zOSw4ICszOSw4IEBAIHByaXZhdGU6CiAgICAgewog
ICAgIH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlM7IH0KLSAgICB2aXJ0
dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
IlYiOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlM7IH0KKyAgICBTdHJpbmcgcGF0aFNl
Z1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJWIjsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhTZWdMaW5ldG9WZXJ0aWNhbFJlbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aW5ldG9WZXJ0aWNhbFJlbC5oCmluZGV4IDE2YTk5MzE5NzVjYzVmM2RiYzIzYTJlYmQ2MmY0OTll
Njg1ZGY1YWMuLjNjYjExYjRjMDY4ZjM5MmFkYzU0MDE3ZTdjNTA2YTNiOWE1MWJmZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGluZXRvVmVydGljYWxSZWwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLmgKQEAg
LTM5LDggKzM5LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB1bnNp
Z25lZCBzaG9ydCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdf
TElORVRPX1ZFUlRJQ0FMX1JFTDsgfQotICAgIHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNM
ZXR0ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAidiI7IH0KKyAgICB1bnNpZ25lZCBzaG9y
dCBwYXRoU2VnVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFBBVEhTRUdfTElORVRPX1ZF
UlRJQ0FMX1JFTDsgfQorICAgIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gInYiOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmgKaW5kZXggZjgzOTg2Zjk2ZWEw
MWRjNzZjNmU3MGU4NzgyYWI4NDJjOGQyNzZlNC4uNDE0M2EyOTQ4YmRlMzk0MjBjMzc3YmQ3NTFi
YmJkYzdmM2UxY2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0QnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIuaApAQCAtMzcsMjIgKzM3LDIyIEBAIHB1YmxpYzoKICAgICBTVkdQYXRoU2VnTGlzdEJ1aWxk
ZXIoU1ZHUGF0aEVsZW1lbnQmLCBTVkdQYXRoU2VnTGlzdCYsIFNWR1BhdGhTZWdSb2xlKTsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50UGF0aFNlZ21lbnRDb3VudCgpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBjb250aW51ZUNvbnN1bWluZygpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSBv
dmVycmlkZSB7IH0KKyAgICBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nL05vcm1hbGl6ZWRQ
YXJzaW5nIG1vZGVzLgotICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYs
IGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhdGgoKSBvdmVycmlkZTsKKyAgICB2b2lk
IG1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9k
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29y
ZGluYXRlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5h
dGVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlUGF0aCgpIG92ZXJyaWRlOwogCiAgICAg
Ly8gT25seSB1c2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcgbW9kZS4KLSAgICB2aXJ0dWFsIHZvaWQg
bGluZVRvSG9yaXpvbnRhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGluZVRvVmVydGljYWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0aWMoY29uc3QgRmxvYXRQb2ludCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29v
cmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwgZmxv
YXQsIGZsb2F0LCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcsIGNvbnN0IEZsb2F0
UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgbGluZVRvSG9y
aXpvbnRhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGxp
bmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZv
aWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGN1cnZlVG9RdWFkcmF0
aWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9h
dFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGFyY1RvKGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CiAKICAgICBTVkdQ
YXRoRWxlbWVudCYgbV9wYXRoRWxlbWVudDsKICAgICBTVkdQYXRoU2VnTGlzdCYgbV9wYXRoU2Vn
TGlzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdFNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0U291cmNlLmgKaW5kZXggMzI4
ZTZlNmZmMjJkMDU5NThjMmIzYzk0ZjM1ZDBlOTk1ZmIwNzk3OC4uODkwYmI2MjQ3NDQ2NDBlM2Nh
YTA0ZDNmZmE2ZjFkMzEwODQ0NTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhTZWdMaXN0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdM
aXN0U291cmNlLmgKQEAgLTMzLDIwICszMywyMCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZH
UGF0aFNlZ0xpc3RTb3VyY2UoY29uc3QgU1ZHUGF0aFNlZ0xpc3QmKTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzTW9yZURhdGEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgbW92ZVRvTmV4dFRva2VuKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgYm9vbCBwYXJzZVNWR1NlZ21lbnRUeXBlKFNWR1BhdGhTZWdUeXBlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBTVkdQYXRoU2VnVHlwZSBuZXh0Q29tbWFuZChTVkdQYXRoU2VnVHlwZSkg
b3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VNb3ZlVG9TZWdtZW50KEZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VMaW5lVG9TZWdtZW50KEZsb2F0
UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VMaW5lVG9Ib3Jpem9udGFs
U2VnbWVudChmbG9hdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUxpbmVUb1Zl
cnRpY2FsU2VnbWVudChmbG9hdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUN1
cnZlVG9DdWJpY1NlZ21lbnQoRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhcnNlQ3VydmVUb0N1YmljU21vb3RoU2VnbWVu
dChGbG9hdFBvaW50JiwgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBw
YXJzZUN1cnZlVG9RdWFkcmF0aWNTZWdtZW50KEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHBhcnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21l
bnQoRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwYXJzZUFyY1RvU2Vn
bWVudChmbG9hdCYsIGZsb2F0JiwgZmxvYXQmLCBib29sJiwgYm9vbCYsIEZsb2F0UG9pbnQmKSBv
dmVycmlkZTsKKyAgICBib29sIGhhc01vcmVEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9v
bCBtb3ZlVG9OZXh0VG9rZW4oKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBw
YXJzZVNWR1NlZ21lbnRUeXBlKFNWR1BhdGhTZWdUeXBlJikgb3ZlcnJpZGU7CisgICAgU1ZHUGF0
aFNlZ1R5cGUgbmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUpIG92ZXJyaWRlOworCisgICAgYm9v
bCBwYXJzZU1vdmVUb1NlZ21lbnQoRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFy
c2VMaW5lVG9TZWdtZW50KEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlTGlu
ZVRvSG9yaXpvbnRhbFNlZ21lbnQoZmxvYXQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlTGlu
ZVRvVmVydGljYWxTZWdtZW50KGZsb2F0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZUN1cnZl
VG9DdWJpY1NlZ21lbnQoRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CisgICAgYm9vbCBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2lu
dCYsIEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlQ3VydmVUb1F1YWRyYXRp
Y1NlZ21lbnQoRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBh
cnNlQ3VydmVUb1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgcGFyc2VBcmNUb1NlZ21lbnQoZmxvYXQmLCBmbG9hdCYsIGZsb2F0JiwgYm9vbCYs
IGJvb2wmLCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBjb25zdCBTVkdQYXRoU2VnTGlz
dCYgbV9wYXRoU2VnTGlzdDsKICAgICBSZWZQdHI8U1ZHUGF0aFNlZz4gbV9zZWdtZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3ZldG9BYnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTW92ZXRvQWJzLmgKaW5kZXggZjg1NWJjZDg1NDVmNzE1
MzU1M2U1NGNhZDc3ZWRiMjFkNjJhMDg3MS4uZTg3ZDM5NGVhZGViNmEwZjIyMjliZjAyN2JiYTY4
NmJiYWJiMDY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3Zl
dG9BYnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01vdmV0b0Ficy5oCkBA
IC0zOSw4ICszOSw4IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdW5z
aWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VH
X01PVkVUT19BQlM7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk0iOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNl
Z1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VHX01PVkVUT19BQlM7IH0KKyAg
ICBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJN
IjsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3ZldG9SZWwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoU2VnTW92ZXRvUmVsLmgKaW5kZXggNzQxYjk4Njk0MWEwYmQ2ODRhYTVlNGZkNzk3MWNhMzFi
OTU0N2I5MC4uM2JjYWJhNWRlNWVmNTMyYjY4MGJmZGI0ZDNjMDUzMDczM2I3ODI2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdNb3ZldG9SZWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ01vdmV0b1JlbC5oCkBAIC0zOSw4ICszOSw4IEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNl
Z1R5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBQQVRIU0VHX01PVkVUT19SRUw7IH0KLSAg
ICB2aXJ0dWFsIFN0cmluZyBwYXRoU2VnVHlwZUFzTGV0dGVyKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gIm0iOyB9CisgICAgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBQQVRIU0VHX01PVkVUT19SRUw7IH0KKyAgICBTdHJpbmcgcGF0aFNlZ1R5
cGVBc0xldHRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJtIjsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
dHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIu
aAppbmRleCA5MjMwYWNjNzA3NGE4ZmMzMWJhYjkwOWJjNWY1MmZjMTdlNzE4MjdjLi5kNjNiY2Rm
MDBlOTRlMzA2NDRlZWFkOTg1N2IxMzJiMzM4ODE3NjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aFN0cmluZ0J1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aFN0cmluZ0J1aWxkZXIuaApAQCAtMzQsMjIgKzM0LDIyIEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgcmVzdWx0KCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGluY3JlbWVudFBh
dGhTZWdtZW50Q291bnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25z
dW1pbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSBv
dmVycmlkZTsKKyAgICBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgb3ZlcnJpZGU7CiAKICAgICAv
LyBVc2VkIGluIFVuYWx0ZXJlZFBhcnNpbmcvTm9ybWFsaXplZFBhcnNpbmcgbW9kZXMuCi0gICAg
dmlydHVhbCB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhD
b29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxpbmVUbyhjb25zdCBG
bG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgY3VydmVUb0N1YmljKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNsb3NlUGF0aCgpIG92ZXJyaWRlOworICAgIHZvaWQgbW92ZVRvKGNvbnN0IEZsb2F0
UG9pbnQmLCBib29sIGNsb3NlZCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKKyAgICB2
b2lkIGxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQ
b2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2xvc2VQYXRoKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBPbmx5IHVzZWQgaW4gVW5h
bHRlcmVkUGFyc2luZyBtb2RlLgotICAgIHZpcnR1YWwgdm9pZCBsaW5lVG9Ib3Jpem9udGFsKGZs
b2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsaW5l
VG9WZXJ0aWNhbChmbG9hdCwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgY3VydmVUb0N1YmljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9h
dFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYsIFBh
dGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFk
cmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFyY1RvKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGJvb2wgbGFy
Z2VBcmNGbGFnLCBib29sIHN3ZWVwRmxhZywgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGlu
YXRlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBsaW5lVG9Ib3Jpem9udGFsKGZsb2F0LCBQYXRo
Q29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgbGluZVRvVmVydGljYWwoZmxvYXQs
IFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXJ2ZVRvQ3ViaWNTbW9v
dGgoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1v
ZGUpIG92ZXJyaWRlOworICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBjdXJ2ZVRvUXVhZHJhdGljU21vb3RoKGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRp
bmF0ZU1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgYXJjVG8oZmxvYXQsIGZsb2F0LCBmbG9hdCwg
Ym9vbCBsYXJnZUFyY0ZsYWcsIGJvb2wgc3dlZXBGbGFnLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0
aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZTsKIAogICAgIFN0cmluZ0J1aWxkZXIgbV9zdHJpbmdC
dWlsZGVyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU3RyaW5n
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFN0cmluZ1NvdXJjZS5oCmluZGV4
IDJiOThkMWM4Njg1YTQzYWRiMmFjYzUwYzBkYjJjZGMyOTMyNjZhMmEuLjUzZDhhMTJiY2Q4ZmJl
NDFlZGQyYTY0MTc4NzMxNmI5N2U1OTQ4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoU3RyaW5nU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhT
dHJpbmdTb3VyY2UuaApAQCAtMzEsMjAgKzMxLDIwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBT
VkdQYXRoU3RyaW5nU291cmNlKGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIHZpcnR1
YWwgYm9vbCBoYXNNb3JlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBt
b3ZlVG9OZXh0VG9rZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTVkdTZWdt
ZW50VHlwZShTVkdQYXRoU2VnVHlwZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU1ZHUGF0aFNl
Z1R5cGUgbmV4dENvbW1hbmQoU1ZHUGF0aFNlZ1R5cGUgcHJldmlvdXNDb21tYW5kKSBvdmVycmlk
ZTsKKyAgICBib29sIGhhc01vcmVEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBtb3Zl
VG9OZXh0VG9rZW4oKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlU1ZHU2VnbWVudFR5cGUoU1ZH
UGF0aFNlZ1R5cGUmKSBvdmVycmlkZTsKKyAgICBTVkdQYXRoU2VnVHlwZSBuZXh0Q29tbWFuZChT
VkdQYXRoU2VnVHlwZSBwcmV2aW91c0NvbW1hbmQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIHBhcnNlTW92ZVRvU2VnbWVudChGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHBhcnNlTGluZVRvU2VnbWVudChGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHBhcnNlTGluZVRvSG9yaXpvbnRhbFNlZ21lbnQoZmxvYXQmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VMaW5lVG9WZXJ0aWNhbFNlZ21lbnQoZmxvYXQmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VDdXJ2ZVRvQ3ViaWNTZWdtZW50KEZsb2F0UG9p
bnQmLCBGbG9hdFBvaW50JiwgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VDdXJ2ZVRvUXVhZHJhdGljU2VnbWVu
dChGbG9hdFBvaW50JiwgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBw
YXJzZUN1cnZlVG9RdWFkcmF0aWNTbW9vdGhTZWdtZW50KEZsb2F0UG9pbnQmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcGFyc2VBcmNUb1NlZ21lbnQoZmxvYXQmLCBmbG9hdCYsIGZsb2F0
JiwgYm9vbCYsIGJvb2wmLCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZU1v
dmVUb1NlZ21lbnQoRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgcGFyc2VMaW5lVG9T
ZWdtZW50KEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlTGluZVRvSG9yaXpv
bnRhbFNlZ21lbnQoZmxvYXQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlTGluZVRvVmVydGlj
YWxTZWdtZW50KGZsb2F0Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBwYXJzZUN1cnZlVG9DdWJpY1Nl
Z21lbnQoRmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmLCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBwYXJzZUN1cnZlVG9DdWJpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYsIEZsb2F0
UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlQ3VydmVUb1F1YWRyYXRpY1NlZ21lbnQo
RmxvYXRQb2ludCYsIEZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHBhcnNlQ3VydmVU
b1F1YWRyYXRpY1Ntb290aFNlZ21lbnQoRmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wg
cGFyc2VBcmNUb1NlZ21lbnQoZmxvYXQmLCBmbG9hdCYsIGZsb2F0JiwgYm9vbCYsIGJvb2wmLCBG
bG9hdFBvaW50Jikgb3ZlcnJpZGU7CiAKICAgICBTdHJpbmcgbV9zdHJpbmc7CiAgICAgYm9vbCBt
X2lzOEJpdFNvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJh
dmVyc2FsU3RhdGVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFRyYXZlcnNh
bFN0YXRlQnVpbGRlci5oCmluZGV4IGVhOTMwZjhhZmE2NzIzNTgzZGU2ZDVkNzg2YzA0N2YzYzA4
NDVjM2EuLjk3YzIzNjk1MzRjMTRjNmUxZTc2YjkzYjQ3MWUyNjhmNzcxN2U3MzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoVHJhdmVyc2FsU3RhdGVCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhUcmF2ZXJzYWxTdGF0ZUJ1aWxkZXIuaApAQCAt
MzcsMjQgKzM3LDI0IEBAIHB1YmxpYzoKICAgICBmbG9hdCB0b3RhbExlbmd0aCgpIGNvbnN0Owog
ICAgIFNWR1BvaW50IGN1cnJlbnRQb2ludCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGlu
Y3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSBvdmVycmlkZSB7ICsrbV9zZWdtZW50SW5kZXg7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgY29udGludWVDb25zdW1pbmcoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGluY3JlbWVudFBhdGhTZWdtZW50Q291bnQoKSBvdmVycmlkZSB7ICsrbV9zZWdtZW50SW5kZXg7
IH0KKyAgICBib29sIGNvbnRpbnVlQ29uc3VtaW5nKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAg
ICAgLy8gVXNlZCBpbiBVbmFsdGVyZWRQYXJzaW5nL05vcm1hbGl6ZWRQYXJzaW5nIG1vZGVzLgot
ICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYsIGJvb2wgY2xvc2VkLCBQ
YXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsaW5lVG8oY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGN1cnZlVG9DdWJpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYs
IGNvbnN0IEZsb2F0UG9pbnQmLCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBjbG9zZVBhdGgoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1vdmVUbyhjb25zdCBG
bG9hdFBvaW50JiwgYm9vbCBjbG9zZWQsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBsaW5lVG8oY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNsb3NlUGF0aCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIC8vIE5v
dCB1c2VkIGZvciBQYXRoVHJhdmVyc2FsU3RhdGUuCi0gICAgdmlydHVhbCB2b2lkIGxpbmVUb0hv
cml6b250YWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBsaW5lVG9WZXJ0aWNhbChmbG9hdCwgUGF0
aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3Qg
RmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZsb2F0
UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFkcmF0
aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5h
dGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBsaW5l
VG9Ib3Jpem9udGFsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRoQ29v
cmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lk
IGN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYs
IFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQor
ICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQ
b2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQorICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50Jiwg
UGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sLCBib29sLCBjb25zdCBGbG9h
dFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CiAKICAgICBQYXRoVHJhdmVyc2FsU3RhdGUmIG1fdHJhdmVyc2FsU3RhdGU7CiAgICAg
dW5zaWduZWQgbV9zZWdtZW50SW5kZXggeyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5oCmluZGV4IGRlOWQzNDUyMTI1MTg0ODM4MDViNzNiYmMxZjFiOGRkZjc5NjEzOGIu
LjE1NTdmZTVjYWFlZTdjMDM1OTgzN2QyMWFkMWM1YTk2NDlmODgxZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCkBAIC00OSwyMiArNDksMjIgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBjb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMoUGF0dGVybkF0dHJpYnV0ZXMmKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJh
bnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0IG92ZXJyaWRlOworICAgIEFmZmlu
ZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNU
TVNjb3BlKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTVkdQYXR0ZXJuRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKICAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorICAgIGJvb2wgbmVlZHNQZW5k
aW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAK
ICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0
cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVl
UG9zaXRpb24mKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc2VsZkhh
c1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXR0ZXJuRWxlbWVudCkKICAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKQEAgLTgxLDkgKzgxLDkgQEAgcHJp
dmF0ZToKICAgICBFTkRfREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTCiAKICAgICAvLyBTVkdU
ZXN0cwotICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKSBvdmVy
cmlkZSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXModGhpcyk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKSBvdmVycmlkZSB7
IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh0aGlzKTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQorICAgIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEZlYXR1cmVzKCkgb3ZlcnJpZGUgeyBTVkdUZXN0czo6c3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKHRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5z
aW9ucygpIG92ZXJyaWRlIHsgU1ZHVGVzdHM6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25z
KHRoaXMpOyB9CisgICAgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgb3ZlcnJpZGUg
eyBTVkdUZXN0czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
bHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAppbmRleCA2
OTRlZmVkMzY3YTkzZTJjMmUyNzU1OWUwZmZkMzJkNmFhNzM1ZjhhLi5kMTljYWI5MmE2ZGI2MTMy
YzUxY2UyMzlmYmE3YzczMDg1MGNjY2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
aApAQCAtNDIsMTIgKzQyLDEyIEBAIHByb3RlY3RlZDoKICAgICBTVkdQb2x5RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7
IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6
aXNWYWxpZCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOyAKLSAgICB2aXJ0dWFs
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRv
bWljU3RyaW5nJikgb3ZlcnJpZGU7IAorICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNN
YXJrZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc3VwcG9y
dHNNYXJrZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gQ3Vz
dG9tICdwb2ludHMnIHByb3BlcnR5CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVQb2ludHMo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCmluZGV4IGMwYzM5ZWI0NGNhODdhYjViYzBlNTc0MDUxNmQx
NzQ5MDkxNTUyYmQuLmIyYmM2MmM5OTc1NzNiNTc2YmRjYjZhYzNiYjAzM2M1OTMyOWUzMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKQEAgLTM5
LDEyICszOSwxMiBAQCBwcml2YXRlOgogICAgIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHN0YXRpYyBib29sIGlzU3VwcG9y
dGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxS
ZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVy
U3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEJFR0lO
X0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQpCiAg
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmgKaW5kZXggODIzZGRkZjcwMjUxZjZhYzBmYWFkZjU2ZTFmNmMxMTUxMDZjMDk4
Yi4uNWFmNTVlNmUwYWZkNTNhZWY1OTU1MDIxMjJlZTQ5YzNhZDAxYTNmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmgKQEAgLTM3LDE0ICszNywxNCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFNWR1JlY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
U1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KKyAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHUmVjdEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgsIHgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCAyOGY3N2FjYjMyNjVlNTc3NGQxYzM5
NDAxOGU1ZTVmMzM0Y2FlMzk5Li4wOTNlYjliMjMxMDQwN2FkMjQyNGJkYzY4ZmJjYzExNjM4NjMy
MTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTEzMCwxOCArMTMwLDE4IEBA
IHByaXZhdGU6CiAgICAgU1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKICAgICB2aXJ0dWFsIH5TVkdTVkdFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb3ZlVG9OZXdE
b2N1bWVudChEb2N1bWVudCogb2xkRG9jdW1lbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJU
cmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlv
blJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZUZyb21Eb2N1bWVudFN1c3BlbnNpb24oKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFj
ZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBvdmVycmlkZTsKKyAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3Vt
ZW50KERvY3VtZW50KiBvbGREb2N1bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7
CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8
UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAg
IEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOworICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRl
OworICAgIHZvaWQgcHJlcGFyZUZvckRvY3VtZW50U3VzcGVuc2lvbigpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVzdW1lRnJvbURvY3VtZW50U3VzcGVuc2lvbigpIG92ZXJyaWRlOworICAgIEFmZmlu
ZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNU
TVNjb3BlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIEZyYW1lKiBmcmFtZUZvckN1cnJlbnRTY2Fs
ZSgpIGNvbnN0OwogICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKGNvbnN0IFNWR1ZpZXdF
bGVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2NyaXB0RWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NjcmlwdEVsZW1lbnQuaAppbmRleCA1MzVlNDJl
NmYwNjQ2ZDgwMTA0MTkwOTNjNjIyOTI0YjM4M2Q3MTAxLi4xYzIxOGEwMTY2Yjg4NDc3Njc0YzMy
YzkzNzA4M2M2ZWQxMzUxNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU2Ny
aXB0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTY3JpcHRFbGVtZW50LmgK
QEAgLTQwLDQyICs0MCw0MiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1NjcmlwdEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgYm9vbCB3YXNJbnNlcnRlZEJ5UGFy
c2VyLCBib29sIGFscmVhZHlTdGFydGVkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkSW5zZXJ0
aW5nU3VidHJlZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBJ
bnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShjb25zdCBBdHRy
aWJ1dGUmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0No
aWxkcmVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0IEF0
dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVu
KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVV
UkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFkZFN1YnJl
c291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JikgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgb3ZlcnJpZGUg
eyByZXR1cm4gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aGF2ZUxvYWRlZFJlcXVpcmVk
UmVzb3VyY2VzKCk7IH0KKyAgICBib29sIGhhdmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpIG92
ZXJyaWRlIHsgcmV0dXJuIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmhhdmVMb2FkZWRS
ZXF1aXJlZFJlc291cmNlcygpOyB9CiAKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBdHRyaWJ1
dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGNoYXJzZXRBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHR5cGVBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdl
QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBmb3JB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGV2ZW50
QXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXN5bmNB
dHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkZWZlckF0
dHJpYnV0ZVZhbHVlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc1NvdXJj
ZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBzb3VyY2VBdHRyaWJ1dGVW
YWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBjaGFyc2V0QXR0cmlidXRlVmFsdWUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgdHlwZUF0dHJpYnV0ZVZhbHVlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIGxhbmd1YWdlQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgZm9yQXR0cmlidXRlVmFsdWUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBTdHJpbmcgZXZlbnRBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
YXN5bmNBdHRyaWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgZGVmZXJBdHRy
aWJ1dGVWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzU291cmNlQXR0cmlidXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hMb2FkRXZlbnQo
KSBvdmVycmlkZSB7IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmRpc3BhdGNoTG9hZEV2
ZW50KHRoaXMpOyB9CisgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpIG92ZXJyaWRlIHsgU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6ZGlzcGF0Y2hMb2FkRXZlbnQodGhpcyk7IH0KIAot
ICAgIHZpcnR1YWwgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5k
Q2hpbGRyZW4oRG9jdW1lbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJ
c05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4o
RG9jdW1lbnQmKSBvdmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlRmlyZWRMb2FkRXZl
bnQoYm9vbCBoYXZlRmlyZWRMb2FkRXZlbnQpIG92ZXJyaWRlIHsgU2NyaXB0RWxlbWVudDo6c2V0
SGF2ZUZpcmVkTG9hZEV2ZW50KGhhdmVGaXJlZExvYWRFdmVudCk7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaXNQYXJzZXJJbnNlcnRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcmlwdEVsZW1l
bnQ6OmlzUGFyc2VySW5zZXJ0ZWQoKTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXZlRmlyZWRMb2Fk
RXZlbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTY3JpcHRFbGVtZW50OjpoYXZlRmlyZWRM
b2FkRXZlbnQoKTsgfQotICAgIHZpcnR1YWwgVGltZXIqIHN2Z0xvYWRFdmVudFRpbWVyKCkgb3Zl
cnJpZGUgeyByZXR1cm4gJm1fc3ZnTG9hZEV2ZW50VGltZXI7IH0KKyAgICB2b2lkIHNldEhhdmVG
aXJlZExvYWRFdmVudChib29sIGhhdmVGaXJlZExvYWRFdmVudCkgb3ZlcnJpZGUgeyBTY3JpcHRF
bGVtZW50OjpzZXRIYXZlRmlyZWRMb2FkRXZlbnQoaGF2ZUZpcmVkTG9hZEV2ZW50KTsgfQorICAg
IGJvb2wgaXNQYXJzZXJJbnNlcnRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNjcmlwdEVs
ZW1lbnQ6OmlzUGFyc2VySW5zZXJ0ZWQoKTsgfQorICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2NyaXB0RWxlbWVudDo6aGF2ZUZpcmVkTG9hZEV2
ZW50KCk7IH0KKyAgICBUaW1lciogc3ZnTG9hZEV2ZW50VGltZXIoKSBvdmVycmlkZSB7IHJldHVy
biAmbV9zdmdMb2FkRXZlbnRUaW1lcjsgfQogCiAjaWZuZGVmIE5ERUJVRwotICAgIHZpcnR1YWwg
Ym9vbCBmaWx0ZXJPdXRBbmltYXRhYmxlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGZpbHRlck91dEFuaW1hdGFibGVBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICBCRUdJTl9E
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHU2NyaXB0RWxlbWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU2V0RWxlbWVudC5oCmluZGV4IDQ5ZmUyM2Q5NjhiZTg0YjA2ZTZlODU2NDc2M2RhY2VkZDgw
NjdhOGEuLjM4ODVmMTRmYjMwYTgzZTc0MjJjY2MyN2U1YjE0ZDQwYzI1OGY2OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTZXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NldEVsZW1lbnQuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgU1ZHU2V0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9uTW9kZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlQW5pbWF0aW9uTW9kZSgpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAppbmRleCBhODM3NDk4YTIzZjBm
YzUxMmJlYTk3NDJhZTNhOGM0NDVlYzA3MDk5Li4wY2E0ZjQ1NmQyOGE4NzNkMDViOGM0ZjNmYjZh
Mjk3ODNhODlkZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaApAQCAtMzUsMTMg
KzM1LDEzIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHU3RvcEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29s
IGlzR3JhZGllbnRTdG9wKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJv
b2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92
ZXJyaWRlOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVy
ZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlk
ZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlk
ZTsKIAogICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdTdG9wRWxlbWVu
dCkKICAgICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoT2Zmc2V0LCBvZmZzZXQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVFbGVtZW50LmgKaW5kZXggZDU5ZjU5NjAyNzM1N2RhMzgwZWIxMzJh
YjE3OWM5YzBmNzM4MTQ0ZC4uYjU3YWU1ZDg2YmFlNjRkZWIzZjI2MzBiZTJmNDFiYTQxY2UwOGNj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZUVsZW1lbnQuaApAQCAtNDksMTkgKzQ5LDE5IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgU1ZHU3R5bGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGlu
c2VydGVkSW50byhDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29u
dGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9k
ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBS
ZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBi
b29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVTaGVldE93bmVyLmlzTG9hZGlu
ZygpOyB9Ci0gICAgdmlydHVhbCBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9zdHlsZVNoZWV0T3duZXIuc2hlZXRMb2FkZWQoKnRoaXMpOyB9Ci0gICAgdmlydHVhbCB2b2lk
IHN0YXJ0TG9hZGluZ0R5bmFtaWNTaGVldCgpIG92ZXJyaWRlIHsgbV9zdHlsZVNoZWV0T3duZXIu
c3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KCp0aGlzKTsgfQotICAgIHZpcnR1YWwgVGltZXIqIHN2
Z0xvYWRFdmVudFRpbWVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gJm1fc3ZnTG9hZEV2ZW50VGltZXI7
IH0KKyAgICBib29sIHNoZWV0TG9hZGVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zdHlsZVNoZWV0
T3duZXIuc2hlZXRMb2FkZWQoKnRoaXMpOyB9CisgICAgdm9pZCBzdGFydExvYWRpbmdEeW5hbWlj
U2hlZXQoKSBvdmVycmlkZSB7IG1fc3R5bGVTaGVldE93bmVyLnN0YXJ0TG9hZGluZ0R5bmFtaWNT
aGVldCgqdGhpcyk7IH0KKyAgICBUaW1lciogc3ZnTG9hZEV2ZW50VGltZXIoKSBvdmVycmlkZSB7
IHJldHVybiAmbV9zdmdMb2FkRXZlbnRUaW1lcjsgfQogCiAgICAgSW5saW5lU3R5bGVTaGVldE93
bmVyIG1fc3R5bGVTaGVldE93bmVyOwogICAgIFRpbWVyIG1fc3ZnTG9hZEV2ZW50VGltZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N3aXRjaEVsZW1lbnQuaAppbmRleCA5ZmE2MGRiYWIxMDBlNzE0YzY4
NTdmMWZhZjI3OGVlOTIxNTk3MTUwLi5iM2Q1NzNjMmQ1MDQ5ZWFlYzQwMzA2M2M3OTliYjE0YmI4
YThkMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3dpdGNoRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTd2l0Y2hFbGVtZW50LmgKQEAgLTM1LDEwICsz
NSwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFNWR1N3aXRjaEVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzVmFsaWQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CisgICAgYm9v
bCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsg
fQogCi0gICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9k
ZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1l
bnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9Q
Uk9QRVJUSUVTKFNWR1N3aXRjaEVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9P
TEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5bWJvbEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTeW1ib2xFbGVtZW50LmgKaW5kZXggZGYyNmQ4
NjI2MzgwZjMzMjQ2ZGExZThhYTU1OTdiNzFiOTBlN2NlMS4uMjA0YTAxYjQ2NTEwZDRlOThiNmUw
MjVkNDIwNjI5ZmZjZGI5MzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N5
bWJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3ltYm9sRWxlbWVudC5o
CkBAIC0zOSwxMSArMzksMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdTeW1ib2xFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlZjxSZW5k
ZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQkVH
SU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1N5bWJvbEVsZW1lbnQpCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5jcHAKaW5kZXggZTA4ZjcxNDBkYWMzMDc0ZWNhZGI4ZjFkNzdiYmMwZjcwMzI2Y2NiOS4u
MTk2NjNjZjZmODdhN2RhMmFjODhjMjk0NWZlMWFkNDhmZTRmMDgwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC03Miw4ICs3Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgZXhwbGljaXQgU1ZHVFJlZlRhcmdldEV2ZW50TGlzdGVuZXIoU1ZHVFJlZkVsZW1lbnQm
IHRyZWZFbGVtZW50KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpIG92ZXJyaWRlOwogCiAgICAgU1ZHVFJlZkVs
ZW1lbnQmIG1fdHJlZkVsZW1lbnQ7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IG1fdGFyZ2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAppbmRleCBiNzAzYmY3NjA4NTllMWExNGVkZWEyYmE3
YmY2YTlkN2EzYzUzYjVmLi5hNTFkYTE2NDA3ZGVhYWZiNzE4ZGNmNDE1ZmJmZTFlMTEzMjk4YjIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuaApAQCAtMzgsMjQgKzM4LDI0IEBAIHBy
aXZhdGU6CiAgICAgU1ZHVFJlZkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
Jik7CiAgICAgdmlydHVhbCB+U1ZHVFJlZkVsZW1lbnQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVm
PFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgb3ZlcnJpZGU7CisgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0
IE5vZGUmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3Qg
UmVuZGVyU3R5bGUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90aWZpY2F0
aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRlOworICAgIEluc2Vy
dGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5nU3VidHJlZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGNsZWFyVGFyZ2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclRhcmdldCgpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVSZWZlcmVuY2VkVGV4dChFbGVtZW50Kik7CiAKICAg
ICB2b2lkIGRldGFjaFRhcmdldCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIG92ZXJy
aWRlOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RSZWZFbGVt
ZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUUklOR19PVkVSUklERShIcmVmLCBocmVm
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RTcGFuRWxlbWVudC5oCmluZGV4IDliNGFlOGFmZTM4ZmY1ODQ2
MTZkNjhkMWE5ZTMzYjYyNTNkNmQ1NWUuLjg2NmMwZmVhZDQwMWM5NjFhMTZiMDFjYzQ0OTE4OWY2
N2I1YTM1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUU3BhbkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFNwYW5FbGVtZW50LmgKQEAgLTMyLDkgKzMy
LDkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdUU3BhbkVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAgICAgICAgICAgICAKLSAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYm
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVy
cmlkZTsKKyAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7
CisgICAgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBv
dmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAppbmRleCA5MjU5OWM0NjJhODBiZjY0Y2VkM2JjZmZi
NGYxYzQ1ZGNiNzQyYjU2Li40NDRkMjdhZjA4OTJkMmVjOTA0MTY0ZDMzY2I5ZTczNDhkOWU5NTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCkBAIC05NCwx
NyArOTQsMTcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFNWR1RleHRDb250ZW50RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQor
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNWR1Rlc3RzOjppc1Zh
bGlkKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5
bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRl
OworICAgIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxl
U3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBi
b29sIGlzVGV4dENvbnRlbnQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CisgICAgYm9vbCBpc1RleHRDb250ZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCmluZGV4IDAwNzY2
NTczNjAzMTQ2NDA1ODUzOTE4M2UyZWFmMDEzYTAyMDEwMDQuLjgyODkzYmExMWViNTFlOGM1N2Y1
YTAxMjVkMjIyM2VmNmQxZTJlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCkBA
IC0yOSwxMyArMjksMTMgQEAgY2xhc3MgU1ZHVGV4dEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdUZXh0
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCi0gICAg
dmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0gYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIEFmZmluZVRyYW5zZm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHVGV4dEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxlPiYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRy
PFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYs
IGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91
bGRDcmVhdGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgK
aW5kZXggZWE2MDgwOTQ2ODE1YjIyMTY2M2IxMmFiNWU2YjUxMDQwYjk2YmIxMy4uMmM3NmIyNjNm
ZDQ1NWZlYzZlMDQ4NDExM2RjNTFmZWRlOTI4ZTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuaApAQCAtMTEyLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFNWR1RleHRQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkSW5zZXJ0aW5n
U3VidHJlZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU1ZHVGV4dFBhdGhFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtMTIxLDE5ICsxMjEsMTkgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgY2xlYXJSZXNvdXJjZVJlZmVyZW5jZXMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBi
dWlsZFBlbmRpbmdSZXNvdXJjZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIG92ZXJyaWRlOworICAgIEluc2VydGlvbk5v
dGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKIAogICAgIHN0
YXRpYyBib29sIGlzU3VwcG9ydGVkQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlZjxSZW5kZXJTdHlsZT4mJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
Y29uc3QgTm9kZSYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihjb25zdCBOb2RlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCByZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogIAogICAgIEJFR0lOX0RFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdUZXh0UGF0aEVsZW1lbnQpCiAgICAgICAgIERFQ0xB
UkVfQU5JTUFURURfTEVOR1RIKFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCmluZGV4IDVmNzY5MmEzZjRh
OTQyOGI2YmZiNTRiM2ViN2FjYWJjNzliNDQ2ZDkuLmYwMGU4YTdlODU5NjY2ZGFmZjA2MzdkNWU5
NGQyYWI1NGIyMjhiNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQuaApAQCAtMzQsMTIgKzM0LDEyIEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAg
ICBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5n
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50
YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYsIE11dGFibGVTdHlsZVBy
b3BlcnRpZXMmKSBvdmVycmlkZSBmaW5hbDsKKyAgICBib29sIGlzUHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRl
IGZpbmFsOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIX0xJU1Qo
WCwgeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUaXRsZUVsZW1lbnQuaAppbmRleCBhOTIxYjhjOTg0OTQ0
MjRiMjdjYzE0YjVlM2Q1NzEyYTZkY2ZjMmNkLi5mNjE2YTNlOGQ2YzBhMTA2ZTE0MWM5ZTQ5YWE3
NDZhN2NkZTA3MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGl0bGVFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RpdGxlRWxlbWVudC5oCkBAIC0zMywx
MSArMzMsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdUaXRsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlm
aWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlk
ZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRl
clN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RvT1RGRm9udENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RvT1RG
Rm9udENvbnZlcnNpb24uY3BwCmluZGV4IDA2MjBlNzIzZTEwMTlmNThhMTAzNGE1NTdjZjc2NDNl
ZWJjYmFlYTkuLmE2NDJlMjMwNzFhOTRiNTI0NWRkYTA4NDU1MjEzN2VmNzNlM2I2NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHAKQEAgLTExODAs
NyArMTE4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY3VycmVudCA9IGRlc3RpbmF0aW9uOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBtb3ZlVG8oY29uc3QgRmxvYXRQb2ludCYgdGFyZ2V0
UG9pbnQsIGJvb2wgY2xvc2VkLCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkgb3ZlcnJpZGUKKyAg
ICB2b2lkIG1vdmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgYm9vbCBjbG9zZWQs
IFBhdGhDb29yZGluYXRlTW9kZSBtb2RlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKGNs
b3NlZCAmJiAhbV9jZmZEYXRhLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGNsb3NlUGF0aCgpOwpA
QCAtMTIwMCw3ICsxMjAwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jZmZEYXRhLmFwcGVuZChy
TGluZVRvKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbGluZVRvKGNvbnN0IEZsb2F0UG9p
bnQmIHRhcmdldFBvaW50LCBQYXRoQ29vcmRpbmF0ZU1vZGUgbW9kZSkgb3ZlcnJpZGUKKyAgICB2
b2lkIGxpbmVUbyhjb25zdCBGbG9hdFBvaW50JiB0YXJnZXRQb2ludCwgUGF0aENvb3JkaW5hdGVN
b2RlIG1vZGUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBGbG9hdFBvaW50IHNjYWxlZFRhcmdl
dFBvaW50ID0gRmxvYXRQb2ludCh0YXJnZXRQb2ludC54KCkgKiBtX3VuaXRzUGVyRW1TY2FsYXIs
IHRhcmdldFBvaW50LnkoKSAqIG1fdW5pdHNQZXJFbVNjYWxhcik7CiAgICAgICAgIEZsb2F0UG9p
bnQgZGVzdGluYXRpb24gPSBtb2RlID09IEFic29sdXRlQ29vcmRpbmF0ZXMgPyBzY2FsZWRUYXJn
ZXRQb2ludCA6IG1fY3VycmVudCArIHNjYWxlZFRhcmdldFBvaW50OwpAQCAtMTIwOCw3ICsxMjA4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdW5zY2FsZWRMaW5lVG8oZGVzdGluYXRpb24pOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvQ3ViaWMoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50Mywg
UGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpIG92ZXJyaWRlCisgICAgdm9pZCBjdXJ2ZVRvQ3ViaWMo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50MywgUGF0aENvb3JkaW5hdGVNb2RlIG1vZGUpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBGbG9hdFBvaW50IHNjYWxlZFBvaW50MSA9IEZsb2F0UG9pbnQocG9pbnQx
LngoKSAqIG1fdW5pdHNQZXJFbVNjYWxhciwgcG9pbnQxLnkoKSAqIG1fdW5pdHNQZXJFbVNjYWxh
cik7CiAgICAgICAgIEZsb2F0UG9pbnQgc2NhbGVkUG9pbnQyID0gRmxvYXRQb2ludChwb2ludDIu
eCgpICogbV91bml0c1BlckVtU2NhbGFyLCBwb2ludDIueSgpICogbV91bml0c1BlckVtU2NhbGFy
KTsKQEAgLTEyMjYsMjEgKzEyMjYsMjEgQEAgcHJpdmF0ZToKICAgICAgICAgbV9jZmZEYXRhLmFw
cGVuZChyckN1cnZlVG8pOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBhdGgoKSBv
dmVycmlkZQorICAgIHZvaWQgY2xvc2VQYXRoKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlm
IChtX2N1cnJlbnQgIT0gbV9zdGFydGluZ1BvaW50KQogICAgICAgICAgICAgdW5zY2FsZWRMaW5l
VG8obV9zdGFydGluZ1BvaW50KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50
UGF0aFNlZ21lbnRDb3VudCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBjb250aW51
ZUNvbnN1bWluZygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2b2lkIGluY3JlbWVu
dFBhdGhTZWdtZW50Q291bnQoKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGNvbnRpbnVlQ29uc3Vt
aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGxpbmVU
b0hvcml6b250YWwoZmxvYXQsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBsaW5lVG9WZXJ0aWNhbChmbG9hdCwg
UGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29u
c3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBjdXJ2ZVRvUXVhZHJhdGljKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlk
ZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGN1cnZlVG9RdWFk
cmF0aWNTbW9vdGgoY29uc3QgRmxvYXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJp
ZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBhcmNUbyhmbG9h
dCwgZmxvYXQsIGZsb2F0LCBib29sLCBib29sLCBjb25zdCBGbG9hdFBvaW50JiwgUGF0aENvb3Jk
aW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCBs
aW5lVG9Ib3Jpem9udGFsKGZsb2F0LCBQYXRoQ29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGxpbmVUb1ZlcnRpY2FsKGZsb2F0LCBQYXRo
Q29vcmRpbmF0ZU1vZGUpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2
b2lkIGN1cnZlVG9DdWJpY1Ntb290aChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2lu
dCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpYyhjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRQb2ludCYsIFBhdGhDb29yZGluYXRlTW9kZSkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQorICAgIHZvaWQgY3VydmVUb1F1YWRyYXRpY1Ntb290aChjb25zdCBGbG9hdFBvaW50
JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdm9pZCBhcmNUbyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBib29sLCBib29sLCBjb25zdCBG
bG9hdFBvaW50JiwgUGF0aENvb3JkaW5hdGVNb2RlKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAKICAgICBWZWN0b3I8Y2hhcj4mIG1fY2ZmRGF0YTsKICAgICBGbG9hdFBvaW50
IG1fc3RhcnRpbmdQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1hYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCmluZGV4
IGNjMzU0NWJkMmMwOTFkZTQ1MTJjZTZiMTg2ZWU5NGEzM2FhZGU1MDIuLmVkMmZkMDZmM2VhMTIw
M2Y5YmUyNWY1MGNhNDU3MjFmNjMzMDc0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1hYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bWFibGUuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGFyc2VU
cmFuc2Zvcm1WYWx1ZShTVkdUcmFuc2Zvcm06OlNWR1RyYW5zZm9ybVR5cGUsIGNvbnN0IFVDaGFy
KiYgcHRyLCBjb25zdCBVQ2hhciogZW5kLCBTVkdUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgU1ZH
VHJhbnNmb3JtOjpTVkdUcmFuc2Zvcm1UeXBlIHBhcnNlVHJhbnNmb3JtVHlwZShjb25zdCBTdHJp
bmcmKTsKIAotICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIGxvY2FsQ29vcmRpbmF0ZVNwYWNl
VHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2NvcGUpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsgfQorICAgIEFmZmluZVRyYW5zZm9ybSBsb2NhbENv
b3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7IH0KICAgICB2aXJ0dWFsIEFm
ZmluZVRyYW5zZm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vua25vd25FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVW5rbm93bkVsZW1lbnQuaAppbmRleCA1ZjRkMmIyOGVlMjA2OTkz
YmUxNTAzZDJhYTVhNGE5M2I3MjMzMzViLi5mZWM2ZTk1YWM2N2YyNzIzYTRlODcyOTkyZDRlYzRi
NmI3ZDEyYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVW5rbm93bkVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVW5rbm93bkVsZW1lbnQuaApAQCAtNDks
NyArNDksNyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJp
ZGUgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDgzYzE4MzM2YTI1MjZhZmQzNmVjZWQ3ZDJjNzU2
OGQyZjAzYjljMzcuLmI3Yzg4N2JlZjY3MGM0ODMyNzU3MzExN2YzYzA5MzdmZWM0NGJkNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNTcsMjIgKzU3LDIyIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgU1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhDb250YWlu
ZXJOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5l
ck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQZW5kaW5nUmVzb3VyY2Uo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEF0dGFjaFJlbmRlcmVycygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZWY8UmVu
ZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCB0b0NsaXBQYXRoKFBhdGgmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
aGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEhhdmVGaXJlZExvYWRFdmVudChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGF2
ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBUaW1lciogc3Zn
TG9hZEV2ZW50VGltZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNo
ZWQoQ2FjaGVkUmVzb3VyY2UqKSBvdmVycmlkZTsKKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IGluc2VydGVkSW50byhD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJO
b2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0
b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQXR0YWNoUmVuZGVyZXJz
KCkgb3ZlcnJpZGU7CisgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZWY8UmVuZGVyU3R5bGU+JiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIG92
ZXJyaWRlOworICAgIHZvaWQgdG9DbGlwUGF0aChQYXRoJikgb3ZlcnJpZGU7CisgICAgYm9vbCBo
YXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlzaFBh
cnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0SGF2ZUZpcmVkTG9hZEV2ZW50KGJvb2wp
IG92ZXJyaWRlOworICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgVGltZXIqIHN2Z0xvYWRFdmVudFRpbWVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBub3Rp
ZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSopIG92ZXJyaWRlOwogCiAgICAgRG9jdW1lbnQqIGV4
dGVybmFsRG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUV4dGVybmFsRG9jdW1lbnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWS2VybkVsZW1lbnQuaAppbmRleCA1ZWI4NWEzM2YyNmQ2NDE3
NGUwMGJkMjFmODQ5OGE5ZjMyZmIzZDNmLi4yODllZDNhZTBmOWFkZGVmYzFmNmNjY2MxZDVlY2My
ODM4NjlhMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVktlcm5FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZLZXJuRWxlbWVudC5oCkBAIC0zNSwxMCAr
MzUsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTVkdWS2VybkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNh
dGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIElu
c2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29u
c3QgUmVuZGVyU3R5bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAppbmRleCA0MmMy
ZDE4MTg3ZWRkMmFjZjhiNGJlYTM2MWYzNGZhYWRkMTc3YWU3Li4zNWQ0YTdmZTFkMGMzZWU4MmI0
NGUzMjVmYWZlOWM2OTA2Y2NjMTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaApA
QCAtNTAsOSArNTAsOSBAQCBwcml2YXRlOgogICAgIFNWR1ZpZXdFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAgLy8gRklYTUU6IHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQgbWlzc2luZy4KLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5
bGUmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBC
RUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJRVMoU1ZHVmlld0VsZW1lbnQpCiAgICAgICAg
IERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTl9PVkVSUklERShFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1pvb21FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1pvb21FdmVudC5o
CmluZGV4IGYwZTgwOWYxNmEzMDkxMDk5NWY2N2JlMTk4ODgwY2MzZDZmMDdhZTIuLjc5YTljMDRj
ZmRhNjM1YzZmOTFiMTkwMTgwN2NkZjY3NjU5MjlkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdab29tRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHWm9vbUV2
ZW50LmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogCiAgICAgU1ZHUG9pbnQgbmV3VHJhbnNs
YXRlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTVkdab29tRXZlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggNDQxMGI1
YmQzMjEwZWJlMTUyMzU5OWI1ZTUxZjE2NmJhNTU2ZWMyNS4uNTk1NmQyNTQxMTJkMjNhNGJlMzU0
NTE0N2Y1NDNhNTAyNDIzNDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlv
bi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgOiBudWxscHRyOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEV2ZW50TGlzdGVuZXImIG90aGVyKSBvdmVycmlkZTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpIG92ZXJyaWRlOwogICAgIAogICAgIHZvaWQgZGlzY29u
bmVjdEFuaW1hdGlvbigpCiAgICAgewpAQCAtOTEsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIHsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgRXZlbnQqKSBvdmVycmlkZTsKIAogICAgIFNWR1NNSUxFbGVtZW50KiBt
X2FuaW1hdGlvbjsKICAgICBTVkdTTUlMRWxlbWVudDo6Q29uZGl0aW9uKiBtX2NvbmRpdGlvbjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAppbmRleCA4
YjA1MmNkY2VlMTQ5MDlkY2UxYjE2ZWM3ZTc3NDkwOTQzOGQxMDRkLi4xNTM3NjliMTMwYTE0ODFm
OTk4NWVhNDcxODhlMjk1OGI4MmE2MzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5oCkBAIC00NywxMCArNDcsMTAgQEAgcHVibGljOgogICAgIFNW
R1NNSUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogICAgIHZpcnR1
YWwgflNWR1NNSUxFbGVtZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIEluc2VydGlvbk5vdGlmaWNhdGlvblJlcXVlc3QgaW5zZXJ0
ZWRJbnRvKENvbnRhaW5lck5vZGUmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
ZEZyb20oQ29udGFpbmVyTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOworICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CisgICAgSW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBpbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYpIG92
ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSA9
IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1ZhbGlkQXR0cmlidXRlTmFtZSgpOwpAQCAtMTIzLDE5
ICsxMjMsMTkgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBzZXRJbmFjdGl2ZSgpIHsgbV9hY3Rp
dmVTdGF0ZSA9IEluYWN0aXZlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRl
ZChjb25zdCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9v
bCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgIC8vIFN1Yi1jbGFzc2VzIG1heSBuZWVkIHRvIHRha2UgYWN0aW9uIHdo
ZW4gdGhlIHRhcmdldCBpcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBzZXRUYXJnZXRFbGVt
ZW50KFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0cmlidXRlTmFtZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRJbnNlcnRpbmdT
dWJ0cmVlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwogCi0gICAgdmlydHVh
bCB2b2lkIGNsZWFyVGFyZ2V0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhclRhcmdldCgpIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpID0gMDsK
ICAgICB2b2lkIGVuZGVkQWN0aXZlSW50ZXJ2YWwoKTsKQEAgLTIwNiw3ICsyMDYsNyBAQCBwcml2
YXRlOgogICAgIGZsb2F0IGNhbGN1bGF0ZUFuaW1hdGlvblBlcmNlbnRBbmRSZXBlYXQoU01JTFRp
bWUgZWxhcHNlZCwgdW5zaWduZWQmIHJlcGVhdCkgY29uc3Q7CiAgICAgU01JTFRpbWUgY2FsY3Vs
YXRlTmV4dFByb2dyZXNzVGltZShTTUlMVGltZSBlbGFwc2VkKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NNSUxFbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNTTUlMRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIFNWR0VsZW1lbnQqIG1fdGFyZ2V0RWxlbWVudDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAppbmRleCA3OTgwMzE0ZTg3OTlmNzA5NDBlYjRh
MDk3Y2Q5ODQ0NDgyNWYyMjI5Li44NzBmNmM4NWM1ZTY4NGUxNzdjMzBkMTZjMjE2NmEzNDBkY2Q1
YTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaApAQCAtNTEsMjIgKzUx
LDIyIEBAIHB1YmxpYzoKICAgICBSZW5kZXJCb3gqIGVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0
OwogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNTVkdJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbnRyaW5zaWNTaXpl
OyB9CisgICAgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIEZsb2F0U2l6ZSBzaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbnRyaW5z
aWNTaXplOyB9CiAKICAgICB2b2lkIHNldFVSTChjb25zdCBVUkwmIHVybCkgeyBtX3VybCA9IHVy
bDsgfQogCi0gICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGhh
c1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRBbmltYXRpb24oQ2F0Y2hVcEFuaW1hdGlvbiA9IENhdGNoVXApIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzdG9wQW5pbWF0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJl
c2V0QW5pbWF0aW9uKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbihDYXRjaFVw
QW5pbWF0aW9uID0gQ2F0Y2hVcCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wQW5pbWF0aW9uKCkg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXNldEFuaW1hdGlvbigpIG92ZXJyaWRlOwogCiAjaWYgVVNF
KENBSVJPKQotICAgIHZpcnR1YWwgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgUGFzc05hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTc1LDI1
ICs3NSwyNSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB+U1ZHSW1hZ2UoKTsKIAotICAgIHZp
cnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3Ry
aW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGFpbmVyU2l6ZShjb25zdCBGbG9hdFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRhaW5lclNpemUoY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CiAgICAgSW50U2l6
ZSBjb250YWluZXJTaXplKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHVzZXNDb250YWluZXJT
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBj
b21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgm
IGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7Cisg
ICAgYm9vbCB1c2VzQ29udGFpbmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKExlbmd0aCYgaW50cmluc2lj
V2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlv
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFS
ZWNlaXZlZCkgb3ZlcnJpZGU7CisgICAgYm9vbCBkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSZWNl
aXZlZCkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogU1ZHSW1hZ2VzIHdpbGwgYmUgdW5hYmxl
IHRvIHBydW5lIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgeWV0Lgot
ICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkgb3ZlcnJpZGUgeyB9Cisg
ICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCkgb3ZlcnJpZGUgeyB9CiAKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCi0gICAgdmlydHVh
bCBib29sIGN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSYpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgZHVtcChUZXh0U3RyZWFtJikgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICBTVkdJbWFnZShJbWFnZU9ic2VydmVyJiwgY29uc3QgVVJMJik7Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBmcm9tUmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiB0b1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3KEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYgZnJvbVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dG9SZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVz
Y3JpcHRpb24pIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0ZvckNvbnRhaW5lcihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFNpemUsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKICAgICB2b2lkIGRyYXdQ
YXR0ZXJuRm9yQ29udGFpbmVyKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0U2l6ZSYgY29u
dGFpbmVyU2l6ZSwgZmxvYXQgem9vbSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXpl
JiBzcGFjaW5nLAogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciwgY29uc3QgRmxvYXRSZWN0Jiwg
QmxlbmRNb2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUNsaWVu
dHMuaAppbmRleCA2ZjYyYWEzZWRmMGNjZDQwODQyZWZhODgyY2IzOThmMGI3NTZjZGI3Li42Nzk0
YzcyZGVlZWEwNzk1Zjg5OTQwYTk3ZTA2ZDgzOWNkOTI1NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlQ2xpZW50cy5oCkBAIC00MSwxNiArNDEsMTYgQEAgcHVi
bGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzU1ZHSW1hZ2VDaHJv
bWVDbGllbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1NW
R0ltYWdlQ2hyb21lQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IFNWR0ltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2U7IH0KICAgICAKIHByaXZh
dGU6Ci0gICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpIG92ZXJyaWRlCisgICAgdm9p
ZCBjaHJvbWVEZXN0cm95ZWQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9pbWFnZSA9IG51
bGxwdHI7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNB
bmRSb290Vmlldyhjb25zdCBJbnRSZWN0JiByKSBvdmVycmlkZQorICAgIHZvaWQgaW52YWxpZGF0
ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgSW50UmVjdCYgcikgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIC8vIElmIG1faW1hZ2UtPm1fcGFnZSBpcyBudWxsLCB3ZSdyZSBiZWluZyBkZXN0cnVj
dGVkLCBkb24ndCBmaXJlIGNoYW5nZWRJblJlY3QoKSBpbiB0aGF0IGNhc2UuCiAgICAgICAgIGlm
IChtX2ltYWdlICYmIG1faW1hZ2UtPmltYWdlT2JzZXJ2ZXIoKSAmJiBtX2ltYWdlLT5tX3BhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2VGb3JDb250
YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5l
ci5oCmluZGV4IGRlOThmZjIxNjYxZTNkNDQyMTNjYjJlNzZkMWYzMmQ0Y2NmYzMxNmEuLjM1OTc1
NDI4OWZjMzA0MjE4Y2RiOGJmMTIwM2I4NzNjMjlmZDUyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZUZvckNvbnRhaW5lci5oCkBAIC00MiwyOCArNDIs
MjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdJbWFnZUZvckNv
bnRhaW5lcihpbWFnZSwgY29udGFpbmVyU2l6ZSwgem9vbSkpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgaXNTVkdJbWFnZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAg
IHZpcnR1YWwgRmxvYXRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBGbG9hdFNpemUg
c2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRVUkwoY29uc3QgVVJMJiB1cmwp
IHsgbV9pbWFnZS0+c2V0VVJMKHVybCk7IH0KIAotICAgIHZpcnR1YWwgYm9vbCB1c2VzQ29udGFp
bmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW1hZ2UtPnVzZXNDb250YWluZXJT
aXplKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faW1hZ2UtPmhhc1JlbGF0aXZlV2lkdGgoKTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW1hZ2Ut
Pmhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNp
Y0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWln
aHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlCisgICAgYm9vbCB1c2VzQ29u
dGFpbmVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faW1hZ2UtPnVzZXNDb250YWlu
ZXJTaXplKCk7IH0KKyAgICBib29sIGhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2ltYWdlLT5oYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICBib29sIGhhc1JlbGF0
aXZlSGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pbWFnZS0+aGFzUmVsYXRpdmVI
ZWlnaHQoKTsgfQorICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBp
bnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmlu
c2ljUmF0aW8pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2ltYWdlLT5jb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNS
YXRpbyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRyYXcoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRyYXcoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0
JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0
aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIGNvbnN0IEZs
b2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIGNv
bnN0IEZsb2F0UmVjdCYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgdG8gYmUgbGVzcyBjb25zZXJ2YXRpdmUuCi0gICAgdmlydHVhbCBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgYm9vbCBjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdmlydHVhbCBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKSBvdmVycmlkZTsKKyAgICBQYXNzTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBTVkdJbWFnZUZv
ckNvbnRhaW5lcihTVkdJbWFnZSogaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgY29udGFpbmVyU2l6
ZSwgZmxvYXQgem9vbSkKQEAgLTczLDcgKzczLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YShib29sIC8qZGVzdHJveUFsbCov
ID0gdHJ1ZSkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCAv
KmRlc3Ryb3lBbGwqLyA9IHRydWUpIG92ZXJyaWRlIHsgfQogCiAgICAgU1ZHSW1hZ2UqIG1faW1h
Z2U7CiAgICAgY29uc3QgRmxvYXRTaXplIG1fY29udGFpbmVyU2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAppbmRleCBhM2VmYzBlMzEy
ZGRiM2JiYmE1MjZiNzM5ZTk1MTU2NTBjMDgyYjk3Li4yNGE3Nzk1ODBiNmJmZjZkMjExMTlhMzdm
MDkxODI3Y2VkNTEyZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5oCkBAIC0zNywxNCArMzcsMTQgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNv
bnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKICAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNy
ZWF0ZVdpdGhJUklSZWZlcmVuY2UoRmlsdGVyJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGR1bXAoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgZHVtcCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVj
dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVj
dFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2U7IH0K
KyAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2U7IH0KIAotICAgIHZpcnR1YWwgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgfkZFSW1hZ2UoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKaW5kZXggNWM1NDAyMzk3ODc5ZjAxMzY1OGFkZmQ3NjYy
MGMzMTdhNmZkYjY2My4uYTE5ZTdiYmUwNGRjN2E2NGRlZGQ1M2Y4NGViNWE1YzkzZmQ4NzZhOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgK
QEAgLTM4LDE1ICszOCwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTVkdGaWx0ZXI+IGNy
ZWF0ZShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBib29sKTsKIAogICAgIEZsb2F0UmVjdCBmaWx0ZXJS
ZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
dmlydHVhbCBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsgfQorICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Fic29sdXRlRmlsdGVyUmVnaW9uOyB9CiAKLSAgICB2
aXJ0dWFsIGZsb2F0IGFwcGx5SG9yaXpvbnRhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGZsb2F0IGFwcGx5VmVydGljYWxTY2FsZShmbG9hdCB2YWx1ZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgZmxvYXQgYXBwbHlIb3Jpem9udGFsU2NhbGUoZmxvYXQgdmFs
dWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGZsb2F0IGFwcGx5VmVydGljYWxTY2FsZShmbG9hdCB2
YWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFn
ZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Fic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbjsgfQorICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsgfQogICAgIEZsb2F0UmVjdCB0
YXJnZXRCb3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzU1ZHRmlsdGVyKCkgY29uc3Qgb3ZlcnJpZGUgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcml2YXRlOgogICAgIFNWR0ZpbHRlcihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRl
U291cmNlRHJhd2luZ1JlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwg
Y29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24sIGJvb2wgZWZmZWN0QkJveE1vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvblByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZi5oCmluZGV4IDQxNDI0NjZjYjg1YTJl
YjRiNmQzYjE0MzU2ODRhMGRjMGM3N2Q5NDMuLmQ1MWI5NzM4MmE2ZTg5ZjEwNzlhZTkzZWM0ZDUw
ZDgxYzBiZjNkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkRW51bWVyYXRpb25Qcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmLmgK
QEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdGVtcGxhdGU8dHlwZW5hbWUg
RW51bVR5cGU+CiBjbGFzcyBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmIGZp
bmFsIDogcHVibGljIFNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmPHVuc2lnbmVkPiB7
CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB1bnNpZ25lZCYgYmFzZVZhbCgpIG92ZXJyaWRlCisgICAg
dW5zaWduZWQmIGJhc2VWYWwoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgdW5zaWduZWQmIGJh
c2VWYWwgPSBTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjo6YmFzZVZhbCgpOwogCkBA
IC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJhc2VWYWw7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB1bnNpZ25lZCYgYW5pbVZhbCgpIG92ZXJyaWRlCisgICAgdW5zaWduZWQm
IGFuaW1WYWwoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgdW5zaWduZWQmIGFuaW1WYWwgPSBT
VkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5VGVhck9mZjo6YW5pbVZhbCgpOwogCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFuaW1WYWw7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIHNldEJhc2VWYWwoY29uc3QgdW5zaWduZWQmIHByb3BlcnR5LCBFeGNlcHRpb25D
b2RlJiBlYykgb3ZlcnJpZGUKKyAgICB2b2lkIHNldEJhc2VWYWwoY29uc3QgdW5zaWduZWQmIHBy
b3BlcnR5LCBFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIC8vIEFs
bCBTVkcgZW51bWVyYXRpb24gdmFsdWVzLCB0aGF0IGFyZSBhbGxvd2VkIHRvIGJlIHNldCB2aWEg
U1ZHIERPTSBzdGFydCB3aXRoIDEsIDAgY29ycmVzcG9uZHMgdG8gdW5rbm93biBhbmQgaXMgbm90
IHNldHRhYmxlIHRocm91Z2ggU1ZHIERPTS4KICAgICAgICAgaWYgKCFwcm9wZXJ0eSB8fCBwcm9w
ZXJ0eSA+IFNWR0lETEVudW1MaW1pdHM8RW51bVR5cGU+OjpoaWdoZXN0RXhwb3NlZEVudW1WYWx1
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IGJlNmJhYmQ5NGI0YTU2YWMy
YTIwMDhjOTA5ZTQ1NzJjMzUxMTdiNDEuLjYxZmUzNGJkNTkwNDNjNzdiZTMxYTM3MWMwY2NhZmJl
NzdlN2Q1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZi5oCkBAIC02Nyw3ICs2Nyw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIG1fYW5pbVZhbCA9IG51bGxwdHI7CiAgICAgfQogCi0gICAg
dmlydHVhbCBib29sIGlzQW5pbWF0ZWRMaXN0VGVhck9mZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KKyAgICBib29sIGlzQW5pbWF0ZWRMaXN0VGVhck9mZigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGludCBmaW5kSXRlbShTVkdQcm9wZXJ0eSogcHJv
cGVydHkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZi5oCmlu
ZGV4IDgzYjZkNmY0ZDliNzc5N2MxYzMwYWQ2YWM0YzJkMjVkN2E4YmZhYjIuLmZmYjM1NjE3YTcy
ZGVlZTI1NjdiZjcyMjRjZjZmZmUzNzRlZjdkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFBhdGhTZWdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmIDogcHVibGljIFNW
R0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxTVkdQYXRoU2VnTGlzdD4gewogcHVibGljOgot
ICAgIHZpcnR1YWwgUmVmUHRyPExpc3RQcm9wZXJ0eT4gYmFzZVZhbCgpIG92ZXJyaWRlCisgICAg
UmVmUHRyPExpc3RQcm9wZXJ0eT4gYmFzZVZhbCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAobV9iYXNlVmFsKQogICAgICAgICAgICAgcmV0dXJuIG1fYmFzZVZhbDsKQEAgLTQxLDcgKzQx
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9wZXJ0eSk7CiAgICAgfQog
Ci0gICAgdmlydHVhbCBSZWZQdHI8TGlzdFByb3BlcnR5PiBhbmltVmFsKCkgb3ZlcnJpZGUKKyAg
ICBSZWZQdHI8TGlzdFByb3BlcnR5PiBhbmltVmFsKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IGlmIChtX2FuaW1WYWwpCiAgICAgICAgICAgICByZXR1cm4gbV9hbmltVmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
UHJvcGVydHlUZWFyT2ZmLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaAppbmRleCBjMjIwZWU0NWE2MjgxZmQx
ODRkYmYyMTkxMjlmNzExMWFlMWJhYzc3Li5jMGQ4NTY4MWYzY2UxY2U3Y2NkMGYxMzgxMGI1MjAx
NDg1YzhkMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFRyYW5zZm9ybUxpc3RQcm9wZXJ0eVRlYXJPZmYu
aApAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0FuaW1h
dGVkVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZiA6IHB1YmxpYyBTVkdBbmltYXRlZExpc3RQ
cm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtTGlzdD4gewogcHVibGljOgotICAgIHZpcnR1YWwg
UmVmUHRyPExpc3RQcm9wZXJ0eT4gYmFzZVZhbCgpIG92ZXJyaWRlCisgICAgUmVmUHRyPExpc3RQ
cm9wZXJ0eT4gYmFzZVZhbCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9iYXNlVmFs
KQogICAgICAgICAgICAgcmV0dXJuIG1fYmFzZVZhbDsKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gV1RGTW92ZShwcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBSZWZQdHI8TGlzdFByb3BlcnR5PiBhbmltVmFsKCkgb3ZlcnJpZGUKKyAgICBSZWZQdHI8TGlz
dFByb3BlcnR5PiBhbmltVmFsKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX2FuaW1W
YWwpCiAgICAgICAgICAgICByZXR1cm4gbV9hbmltVmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5VGVhck9mZi5oCmluZGV4IDk0ZGY1
NDc0ZGIyMzMzOTEyZjg5YTY0ODI5MzYxNmQ3NzQ0YWQ3MTguLmQ1ZGE1Y2Y1YjUxNDViYTQ0MDBm
ZTRlZTE3MzNkNGRiYWQyMzhkYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPnByb3BlcnR5V2lsbEJl
RGVsZXRlZCgqdGhpcyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHkoKSBj
b25zdCBvdmVycmlkZQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpIG92ZXJyaWRlCisg
ICAgdm9pZCBjb21taXRDaGFuZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKG1f
dmFsdWVzKTsKICAgICAgICAgQVNTRVJUKG1fd3JhcHBlcnMpOwpAQCAtMTU0LDEzICsxNTQsMTMg
QEAgcHJvdGVjdGVkOgogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPmNvbW1pdENoYW5nZSgp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVZhbHVl
KGNvbnN0IExpc3RJdGVtVHlwZSYsIHVuc2lnbmVkKikgb3ZlcnJpZGUKKyAgICBib29sIHByb2Nl
c3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiwgdW5zaWduZWQqKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0
SXRlbVdyYXBwZXIoUmVmUHRyPExpc3RJdGVtVGVhck9mZj4mIG5ld0l0ZW0sIHVuc2lnbmVkKiBp
bmRleFRvTW9kaWZ5KSBvdmVycmlkZQorICAgIGJvb2wgcHJvY2Vzc0luY29taW5nTGlzdEl0ZW1X
cmFwcGVyKFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+JiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhU
b01vZGlmeSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFNWR0FuaW1hdGVkUHJvcGVydHkqIGFu
aW1hdGVkUHJvcGVydHlPZkl0ZW0gPSBuZXdJdGVtLT5hbmltYXRlZFByb3BlcnR5KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01hdHJpeFRlYXJPZmYu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR01hdHJpeFRlYXJPZmYuaAppbmRl
eCA2YjJkZTg2MmRlNjllZTNiYjAwZjM0MzJjMWFmNjlhYmYyZDAxMTBiLi5kOTM4YzNkNGM0NzEw
YzhmNWFmYjA2ZDQ2ZjRlMmIxZjVhNGIyMTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdNYXRyaXhUZWFyT2ZmLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHTWF0cml4VGVhck9mZi5oCkBAIC0zOCwxMSArMzgsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIHZpcnR1YWwgU1ZHTWF0cml4
JiBwcm9wZXJ0eVJlZmVyZW5jZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyZW50LT5wcm9wZXJ0
eVJlZmVyZW5jZSgpLnN2Z01hdHJpeCgpOyB9CisgICAgU1ZHTWF0cml4JiBwcm9wZXJ0eVJlZmVy
ZW5jZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgpLnN2
Z01hdHJpeCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoU1ZHTWF0cml4JiB2YWx1
ZSkgb3ZlcnJpZGUgeyBtX3BhcmVudC0+cHJvcGVydHlSZWZlcmVuY2UoKS5zZXRNYXRyaXgodmFs
dWUpOyB9CisgICAgdm9pZCBzZXRWYWx1ZShTVkdNYXRyaXgmIHZhbHVlKSBvdmVycmlkZSB7IG1f
cGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgpLnNldE1hdHJpeCh2YWx1ZSk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoKSBvdmVycmlkZQorICAgIHZvaWQgY29tbWl0Q2hhbmdl
KCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fcGFyZW50LT5wcm9wZXJ0eVJlZmVyZW5jZSgp
LnVwZGF0ZVNWR01hdHJpeCgpOwogICAgICAgICBtX3BhcmVudC0+Y29tbWl0Q2hhbmdlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHUGF0aFNl
Z0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAppbmRleCBiYTk3MDYzNzA4YWNkNjE3ZjUyMTNjY2M2YzY5
MmZjOWJjYmFmYzAxLi5lZjJjOWRlNDZlOWI4NzkzNGE1NzZlOTE4ZjVhMWVlNDdlZGI5YzQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQYXRoU2VnTGlzdFBy
b3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Bh
dGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgog
CiAgICAgdXNpbmcgQmFzZTo6bV9yb2xlOwogCi0gICAgdmlydHVhbCBib29sIGlzUmVhZE9ubHko
KSBjb25zdCBvdmVycmlkZQorICAgIGJvb2wgaXNSZWFkT25seSgpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAobV9yb2xlID09IEFuaW1WYWxSb2xlKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkBAIC0xMzYsMjAgKzEzNiwyMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZSgpIG92ZXJyaWRl
CisgICAgdm9pZCBjb21taXRDaGFuZ2UoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJU
KG1fdmFsdWVzKTsKICAgICAgICAgbV92YWx1ZXMtPmNvbW1pdENoYW5nZShtX2FuaW1hdGVkUHJv
cGVydHktPmNvbnRleHRFbGVtZW50KCksIExpc3RNb2RpZmljYXRpb25Vbmtub3duKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKExpc3RNb2RpZmljYXRpb24gbGlzdE1v
ZGlmaWNhdGlvbikgb3ZlcnJpZGUKKyAgICB2b2lkIGNvbW1pdENoYW5nZShMaXN0TW9kaWZpY2F0
aW9uIGxpc3RNb2RpZmljYXRpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQobV92
YWx1ZXMpOwogICAgICAgICBtX3ZhbHVlcy0+Y29tbWl0Q2hhbmdlKG1fYW5pbWF0ZWRQcm9wZXJ0
eS0+Y29udGV4dEVsZW1lbnQoKSwgbGlzdE1vZGlmaWNhdGlvbik7CiAgICAgfQogCi0gICAgdmly
dHVhbCBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBl
JiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01vZGlmeSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJdGVtV3JhcHBlcihSZWZQdHI8TGlzdEl0ZW1UZWFy
T2ZmPiYsIHVuc2lnbmVkKikgb3ZlcnJpZGUKKyAgICBib29sIHByb2Nlc3NJbmNvbWluZ0xpc3RJ
dGVtVmFsdWUoY29uc3QgTGlzdEl0ZW1UeXBlJiBuZXdJdGVtLCB1bnNpZ25lZCogaW5kZXhUb01v
ZGlmeSkgb3ZlcnJpZGU7CisgICAgYm9vbCBwcm9jZXNzSW5jb21pbmdMaXN0SXRlbVdyYXBwZXIo
UmVmUHRyPExpc3RJdGVtVGVhck9mZj4mLCB1bnNpZ25lZCopIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCmluZGV4
IGNhN2QzNjdkNWQ4ZWQ2ZDJlN2RiZWMyMDNkNDViNThmMTFlZThhOTQuLmVkNDA5MmY4ZmY0Zjky
ZjljZGYzY2M1YzVhOTk2MmJjZTI4ZGYzMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCkBAIC04OSw3ICs4OSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9jaGlsZFRlYXJPZmZzLmFwcGVuZChjaGlsZCk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRldGFjaFdyYXBwZXIoKSBvdmVycmlkZQorICAgIHZvaWQgZGV0YWNoV3Jh
cHBlcigpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV92YWx1ZUlzQ29weSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwOCwxNCArMTA4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
bmltYXRlZFByb3BlcnR5ID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0Q2hhbmdlKCkgb3ZlcnJpZGUKKyAgICB2b2lkIGNvbW1pdENoYW5nZSgpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQcm9wZXJ0eSB8fCBtX3ZhbHVlSXNDb3B5KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2FuaW1hdGVkUHJvcGVydHktPmNvbW1pdENo
YW5nZSgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlYWRPbmx5KCkgY29uc3Qgb3Zl
cnJpZGUKKyAgICBib29sIGlzUmVhZE9ubHkoKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgaWYgKG1fcm9sZSA9PSBBbmltVmFsUm9sZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKaW5kZXggZWYwOTZm
ZWViMTA3YWI5OWNhYjcxM2I5NzBlYWQ5NTMxZDZjMzJjZi4uMTExMDZiZGNlNTE5NmY5ZDQ5YWFj
NWVkYzA4YWFlMDhiYjRiZjAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogICAgICAgICA6IG1faW50
ZXJuYWxTZXR0aW5ncyhJbnRlcm5hbFNldHRpbmdzOjpjcmVhdGUocGFnZSkpIHsgfQogICAgIHZp
cnR1YWwgfkludGVybmFsU2V0dGluZ3NXcmFwcGVyKCkgeyBtX2ludGVybmFsU2V0dGluZ3MtPmhv
c3REZXN0cm95ZWQoKTsgfQogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICB2aXJ0dWFsIGJvb2wg
aXNSZWZDb3VudGVkV3JhcHBlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAg
ICBib29sIGlzUmVmQ291bnRlZFdyYXBwZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAjZW5kaWYKICAgICBJbnRlcm5hbFNldHRpbmdzKiBpbnRlcm5hbFNldHRpbmdzKCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcm5hbFNldHRpbmdzLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOWI1MjRkODQyNjUyYWE3ZDhlNWYzMzYxNzZiMWVjNTEz
OTY0YTJkLi5kODA2NTIzN2RhOGMwOTFlODczZGYzMDYyYjZlNDhkMTE1ZDQ3NTA0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0yMzEsMjAgKzIzMSwyMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yU3R1YkZyb250ZW5kKCk7CiAKICAgICAvLyBJbnNwZWN0
b3JGcm9udGVuZENsaWVudCBBUEkKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tT
aWRlKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93KCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgU3RyaW5n
IGxvY2FsaXplZFN0cmluZ3NVUkwoKSBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQotICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
IHsgfQorICAgIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGRldGFjaFdpbmRvdygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2xvc2VXaW5kb3coKSBv
dmVycmlkZTsKKyAgICB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlIHsgfQorICAgIFN0cmlu
ZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCkgb3ZlcnJpZGUgeyByZXR1cm4gU3RyaW5nKCk7IH0KKyAg
ICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9CiBw
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2ln
bmVkKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0
aCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdo
dCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkKSBvdmVycmlkZSB7IH0KIAogcHVibGljOgogICAgIC8vIEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsIEFQSQotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbm5lY3Rpb25U
eXBlIGNvbm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29ubmVjdGlvblR5
cGU6OkxvY2FsOyB9CisgICAgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbm5lY3Rpb25UeXBlOjpMb2NhbDsgfQogCiBwcml2
YXRlOgogICAgIFBhZ2UqIGZyb250ZW5kUGFnZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2Nr
Q0RNLmNwcAppbmRleCBlM2E2YTNiOTg4NDRkZTA2OGQ1MTBkODliMWYxNDMyNDU3YmY3MGYzLi41
NjhlYTlhZmI1MDdkYjgwMWMxNjdiNGYzMTg4ZjYwN2M3NjJiYWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tDRE0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvTW9ja0NETS5jcHAKQEAgLTQyLDExICs0MiwxMSBAQCBwdWJsaWM6CiAgICAgTW9ja0NETVNl
c3Npb24oQ0RNU2Vzc2lvbkNsaWVudCopOwogICAgIHZpcnR1YWwgfk1vY2tDRE1TZXNzaW9uKCkg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KENETVNlc3Npb25DbGllbnQqIGNsaWVu
dCkgb3ZlcnJpZGUgeyBtX2NsaWVudCA9IGNsaWVudDsgfQotICAgIHZpcnR1YWwgY29uc3QgU3Ry
aW5nJiBzZXNzaW9uSWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Nlc3Npb25JZDsgfQot
ICAgIHZpcnR1YWwgUmVmUHRyPFVpbnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBVaW50OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTCwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlS2V5cygpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCB1cGRhdGUoVWludDhBcnJheSosIFJlZlB0cjxVaW50OEFycmF5PiYgbmV4dE1l
c3NhZ2UsIHVuc2lnbmVkIHNob3J0JiBlcnJvckNvZGUsIHVpbnQzMl90JiBzeXN0ZW1Db2RlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldENsaWVudChDRE1TZXNzaW9uQ2xpZW50KiBjbGllbnQpIG92
ZXJyaWRlIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KKyAgICBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkOyB9CisgICAgUmVmUHRyPFVp
bnQ4QXJyYXk+IGdlbmVyYXRlS2V5UmVxdWVzdChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBVaW50
OEFycmF5KiBpbml0RGF0YSwgU3RyaW5nJiBkZXN0aW5hdGlvblVSTCwgdW5zaWduZWQgc2hvcnQm
IGVycm9yQ29kZSwgdWludDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOworICAgIHZvaWQgcmVs
ZWFzZUtleXMoKSBvdmVycmlkZTsKKyAgICBib29sIHVwZGF0ZShVaW50OEFycmF5KiwgUmVmUHRy
PFVpbnQ4QXJyYXk+JiBuZXh0TWVzc2FnZSwgdW5zaWduZWQgc2hvcnQmIGVycm9yQ29kZSwgdWlu
dDMyX3QmIHN5c3RlbUNvZGUpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgQ0RNU2Vzc2lv
bkNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01v
Y2tDRE0uaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oCmluZGV4IDJjZDgxOGRm
MTliZjNmMGE2OGZlY2MwZWYyNjYzMzM5M2IxNDkwZTQuLjQ2ZWUwZmJjY2M2MzljMWE4Y2RhNTYw
NTkyODhjMzZiNWU4MmNjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a0NETS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja0NETS5oCkBAIC00Niw4ICs0
Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk1vY2tDRE0oKSB7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24o
Q0RNU2Vzc2lvbkNsaWVudCopIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q0RN
U2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbihDRE1TZXNzaW9uQ2xpZW50Kikgb3ZlcnJpZGU7CiAKIHBy
b3RlY3RlZDoKICAgICBDRE0qIG1fY2RtOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmgKaW5kZXggZTZjNjU1ZTU5N2ZlNDhlN2YwZGQ3YTJiMDEyM2Fi
MmMzZTRiN2YzNy4uYjhiM2UwNDVhOTMxZGZkNzU0ZjI4NWI5M2IxMTMwYzBjYjkyODBiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGFnZU92ZXJsYXlDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYWdlT3ZlcmxheUNsaWVudC5oCkBAIC00
OSwxNiArNDksMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfk1vY2tQYWdlT3ZlcmxheUNsaWVu
dCgpIHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3ll
ZChQYWdlT3ZlcmxheSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvUGFn
ZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92
ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVy
bGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFNjcm9sbEZyYW1lKFBhZ2VPdmVybGF5JiwgRnJhbWUmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFBhZ2VPdmVybGF5Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3aWxsTW92ZVRvUGFnZShQYWdlT3ZlcmxheSYsIFBhZ2UqKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZE1vdmVUb1BhZ2UoUGFnZU92ZXJsYXkmLCBQYWdlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTY3JvbGxGcmFt
ZShQYWdlT3ZlcmxheSYsIEZyYW1lJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY29w
eUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVTdHJpbmdWYWx1ZUZvclBvaW50KFBhZ2VPdmVybGF5Jiwg
U3RyaW5nIC8qIGF0dHJpYnV0ZSAqLywgRmxvYXRQb2ludCwgU3RyaW5nJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlQm9vbFZhbHVlRm9yUG9p
bnQoUGFnZU92ZXJsYXkmLCBTdHJpbmcgLyogYXR0cmlidXRlICovLCBGbG9hdFBvaW50LCBib29s
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBjb3B5QWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZU5hbWVzKFBhZ2VPdmVybGF5JiwgYm9vbCAvKiBwYXJhbWV0ZXJpemVkTmFtZXMg
Ki8pIG92ZXJyaWRlOworICAgIGJvb2wgY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVTdHJpbmdW
YWx1ZUZvclBvaW50KFBhZ2VPdmVybGF5JiwgU3RyaW5nIC8qIGF0dHJpYnV0ZSAqLywgRmxvYXRQ
b2ludCwgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBjb3B5QWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZUJvb2xWYWx1ZUZvclBvaW50KFBhZ2VPdmVybGF5JiwgU3RyaW5nIC8qIGF0dHJpYnV0ZSAq
LywgRmxvYXRQb2ludCwgYm9vbCYpIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGNvcHlB
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMoUGFnZU92ZXJsYXkmLCBib29sIC8qIHBhcmFtZXRl
cml6ZWROYW1lcyAqLykgb3ZlcnJpZGU7CiAKICAgICBIYXNoU2V0PE1vY2tQYWdlT3ZlcmxheSo+
IG1fb3ZlcmxheXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0
cmFjdFdvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9BYnN0cmFjdFdvcmtlci5oCmlu
ZGV4IDQxZTU2MmQ0ODQ1ZTc5MTI2N2EwNTk2YjM0ODAwZDE3ZWUzM2RmNzIuLjNlM2JjYjZkYmJj
MzIzZmUxODA2M2JmNWU1ZWNjMDZhNzRlYTI1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Fi
c3RyYWN0V29ya2VyLmgKQEAgLTU4LDggKzU4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBpbnRwdHJfdCBhc0lEKCkgY29uc3QgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4odGhpcyk7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICAg
ICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KKyAgICAg
ICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDAzMTU1ZjM5MjgxZmY1
ZDFiM2FkMTU0NTdiZDcyZGE5M2YzNzk2ZGMuLjY2YmM5YmYxNDVjYWE2ZjQ4NWM5ZjhmNzU4MzNk
OTgxMjljYTBiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVk
V29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRl
ZFdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTQ1LDEzICs0NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBSZWY8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgRGVkaWNhdGVkV29ya2VyVGhy
ZWFkJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBz
aG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IHRvcE9yaWdpbik7CiAgICAgICAgIHZpcnR1YWwgfkRlZGljYXRlZFdvcmtl
ckdsb2JhbFNjb3BlKCk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIGJv
b2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIAogICAgICAgICAvLyBPdmVycmlkZGVuIHRvIGFsbG93IHVzIHRvIGNoZWNrIG91
ciBwZW5kaW5nIGFjdGl2aXR5IGFmdGVyIGV4ZWN1dGluZyBpbXBvcnRlZCBzY3JpcHQuCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxz
LCBFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwogCiAg
ICAgICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICAgICAgRXZlbnRU
YXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgLy8g
TmVlZGVkIGZvciBPYmplY3RpdmUtQyBiaW5kaW5ncyAoc2VlIGJ1ZyAyODc3NCkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlclRocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaAppbmRleCA5ZDdlZjBm
NDk0NDZmYWZhZDkzYmUyNmNlY2UzZDc1ZTNlZWU2ZGVkLi4xOGIyZjE2NWMxMzYwNTM0NDI4YzYz
MGUxM2YzNmUxYWQzYTU1ZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0Rl
ZGljYXRlZFdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNh
dGVkV29ya2VyVGhyZWFkLmgKQEAgLTQ4LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBXb3JrZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJl
dHVybiBtX3dvcmtlck9iamVjdFByb3h5OyB9CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZp
cnR1YWwgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2Vj
dXJpdHlQb2xpY3ksIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3ksIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRvcE9yaWdpbikgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgcnVuRXZlbnRMb29wKCkgb3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBEZWRpY2F0ZWRXb3JrZXJUaHJlYWQoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJveHkmLCBX
b3JrZXJPYmplY3RQcm94eSYsIFdvcmtlclRocmVhZFN0YXJ0TW9kZSwgY29uc3QgQ29udGVudFNl
Y3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3ksIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyLmgKaW5kZXggNjQ3NTZlOWZlNWM5ZWJjNDY2M2U5NWFiYzYzNmQy
OTljYjI1Y2E3Ni4uOGQzNGZhOTdhZTA5MTYyZDMwYWUyZDZhMGM1ZDlhOTFhM2QwNTdhMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlci5oCkBAIC01Myw3ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIFJlZlB0cjxXb3JrZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAgICAgdmly
dHVhbCB+V29ya2VyKCk7CiAKLSAgICAgICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBl
dmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdvcmtlckV2ZW50
VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdvcmtlckV2ZW50VGFy
Z2V0SW50ZXJmYWNlVHlwZTsgfQogCiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0QXJyYXkq
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgICAgIC8vIE5lZWRlZCBmb3IgT2JqZWN0aXZlLUMgYmlu
ZGluZ3MgKHNlZSBidWcgMjg3NzQpLgpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgdGVybWluYXRlKCk7CiAKICAgICAgICAgLy8gRXZlbnRUYXJnZXQg
QVBJLgotICAgICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAgICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAogICAg
ICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgogICAgICAgICBib29sIGhhc1BlbmRpbmdBY3Rp
dml0eSgpIGNvbnN0IG92ZXJyaWRlOwpAQCAtNzMsOCArNzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgbm90aWZ5TmV0d29ya1N0YXRlQ2hhbmdlKGJvb2wgaXNPbmxpbmUp
OwogCiAgICAgICAgIC8vIFdvcmtlclNjcmlwdExvYWRlckNsaWVudCBjYWxsYmFja3MKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUZpbmlzaGVkKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKCkgb3ZlcnJpZGU7CiAKICAg
ICAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICAgICAgYm9vbCBjYW5TdXNwZW5kRm9y
RG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnNvbGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCmluZGV4IGU3NWIzYjNlZjM4ZmFkZTE2MWFlNTVk
ZDMyNzdkYWY3YjA2MjRhY2IuLjhiZTQ1MGQ3ZDQwMGZjYzViNmVhYjMxYTkyOGY3ZDZhMjJhODE4
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29uc29sZUNsaWVudC5oCkBA
IC00MywxMyArNDMsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlckNvbnNvbGVDbGll
bnQoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlV2l0aFR5cGVBbmRM
ZXZlbChNZXNzYWdlVHlwZSwgTWVzc2FnZUxldmVsLCBKU0M6OkV4ZWNTdGF0ZSosIFJlZlB0cjxJ
bnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRz
PiYmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvZmlsZShKU0M6OkV4ZWNTdGF0ZSos
IGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcm9maWxl
RW5kKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHRpbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmIHRpdGxlKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0aW1lU3RhbXAoSlND
OjpFeGVjU3RhdGUqLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgbWVzc2FnZVdpdGhUeXBlQW5kTGV2ZWwoTWVzc2FnZVR5cGUsIE1lc3Nh
Z2VMZXZlbCwgSlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVu
dHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgY291bnQoSlNDOjpFeGVjU3RhdGUqLCBSZWZQdHI8
SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvZmls
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvZmlsZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJy
aWRlOworICAgIHZvaWQgdGltZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUp
IG92ZXJyaWRlOworICAgIHZvaWQgdGltZUVuZChKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmlu
ZyYgdGl0bGUpIG92ZXJyaWRlOworICAgIHZvaWQgdGltZVN0YW1wKEpTQzo6RXhlY1N0YXRlKiwg
UmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiYmKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKaW5kZXggM2RiZjMzZGIzOGI3Yzc5MzMx
OGRiYmYxZTQ4NDk0ZjA0MjZlY2I3NC4uMTA2MTYwODY0ODZhZGE3YTRiNDQ0YTEwMTZhMzZkZTkw
MjA5MzExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1
ZXVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJFdmVudFF1ZXVlLmgKQEAg
LTM5LDkgKzM5LDkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdvcmtlckV2ZW50UXVldWUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfldvcmtlckV2ZW50UXVldWUoKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBlbnF1ZXVlRXZlbnQoUmVmPEV2ZW50PiYmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKKyAgICBib29sIGVucXVldWVFdmVudChSZWY8RXZl
bnQ+JiYpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuY2VsRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDdiYzQ1ZWFmMDVjOTk4NWQxMGNlMmNkOTRi
OGY2MzRiYTgyMjMzZjYuLjIzNTI1NjZkMGNhNWRhYTRiNDE2MTc3ZWJiY2JmNDFjNzM5ZWM2MmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTU4LDE4
ICs1OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5Xb3JrZXJHbG9iYWxTY29wZSgpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtl
ckdsb2JhbFNjb3BlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBi
b29sIGlzV29ya2VyR2xvYmFsU2NvcGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxXb3Jr
ZXJHbG9iYWxTY29wZSo+KHRoaXMpOyB9CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBj
b25zdF9jYXN0PFdvcmtlckdsb2JhbFNjb3BlKj4odGhpcyk7IH0KIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAKLSAgICAgICAgdmlydHVhbCBjb25zdCBVUkwmIHVybCgpIGNvbnN0IG92ZXJyaWRlIGZp
bmFsIHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgICAgIHZpcnR1YWwgVVJMIGNvbXBsZXRlVVJMKGNv
bnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIFVSTCBj
b21wbGV0ZVVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZSBmaW5hbDsKIAotICAgICAg
ICB2aXJ0dWFsIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc2FibGVFdmFsKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaXNhYmxlRXZhbChjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBzaG91bGRCeXBhc3NNYWluV29ybGRD
b250ZW50U2VjdXJpdHlQb2xpY3koKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX3No
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeTsgfQogCkBAIC04MCw3ICs4
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB1c2luZyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpoYXNQZW5kaW5nQWN0aXZpdHk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBv
c3RUYXNrKFRhc2spIG92ZXJyaWRlOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3Mg
dGhyZWFkIGFzeW5jaHJvbm91c2x5LgorICAgICAgICB2b2lkIHBvc3RUYXNrKFRhc2spIG92ZXJy
aWRlOyAvLyBFeGVjdXRlcyB0aGUgdGFzayBvbiBjb250ZXh0J3MgdGhyZWFkIGFzeW5jaHJvbm91
c2x5LgogCiAgICAgICAgIC8vIFdvcmtlckdsb2JhbFNjb3BlCiAgICAgICAgIFdvcmtlckdsb2Jh
bFNjb3BlKiBzZWxmKCkgeyByZXR1cm4gdGhpczsgfQpAQCAtOTcsOCArOTcsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGludCBzZXRJbnRlcnZhbChzdGQ6OnVuaXF1ZV9wdHI8U2No
ZWR1bGVkQWN0aW9uPiwgaW50IHRpbWVvdXQpOwogICAgICAgICB2b2lkIGNsZWFySW50ZXJ2YWwo
aW50IHRpbWVvdXRJZCk7CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGV4dFRocmVhZCgp
IGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNKU0V4ZWN1dGlvbkZvcmJp
ZGRlbigpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBib29sIGlzQ29udGV4dFRocmVhZCgpIGNv
bnN0IG92ZXJyaWRlOworICAgICAgICBib29sIGlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSBjb25z
dCBvdmVycmlkZTsKIAogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIGZvciBHQyBt
YXJraW5nLiBTZWUgSlNXb3JrZXJHbG9iYWxTY29wZTo6dmlzaXRDaGlsZHJlblZpcnR1YWwoU2xv
dFZpc2l0b3ImKSBpbgogICAgICAgICAvLyBKU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcC4K
QEAgLTEyNiwzNiArMTI2LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCB1
bnJlZ2lzdGVyT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKICAgICAgICAgdm9pZCBub3RpZnlPYnNlcnZl
cnNPZlN0b3AoKTsKIAotICAgICAgICB2aXJ0dWFsIFNlY3VyaXR5T3JpZ2luKiB0b3BPcmlnaW4o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3RvcE9yaWdpbi5nZXQoKTsgfQorICAgICAgICBT
ZWN1cml0eU9yaWdpbiogdG9wT3JpZ2luKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90b3BP
cmlnaW4uZ2V0KCk7IH0KIAogICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllciA9IDApIG92ZXJy
aWRlOworICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UsIE1lc3Nh
Z2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyID0gMCkgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLSAgICAg
ICAgdmlydHVhbCBib29sIHdyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBW
ZWN0b3I8dWludDhfdD4mIGtleSkgb3ZlcnJpZGU7CisgICAgICAgIGJvb2wgd3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5
KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCB1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZCYsIGJvb2wgc2hvdWxkQnlw
YXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiB0b3BPcmlnaW4pOwogICAgICAgICB2b2lkIGFwcGx5Q29udGVudFNlY3VyaXR5UG9saWN5
UmVzcG9uc2VIZWFkZXJzKGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cyYpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
PiYmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNr
PiYmKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBhZGRNZXNzYWdlVG9Xb3JrZXJDb25zb2xlKHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNvbnNvbGVNZXNzYWdlPik7CiAgICAgICAgIHZvaWQg
YWRkTWVzc2FnZVRvV29ya2VyQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0
Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSAwLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJ
ZGVudGlmaWVyID0gMCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIG92ZXJyaWRlIHsgZGVyZWYo
KTsgfQorICAgICAgICB2b2lkIHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBvdmVycmlkZSB7
IHJlZigpOyB9CisgICAgICAgIHZvaWQgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgb3Zl
cnJpZGUgeyBkZXJlZigpOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0
KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZF
dmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgZGVyZWYoKTsgfQorICAgICAgICB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyByZWYoKTsgfQorICAgICAgICB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2Fs
bFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSAwLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVu
dGlmaWVyID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYWRkTWVzc2FnZShNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBz
b3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgUmVm
UHRyPEluc3BlY3Rvcjo6U2NyaXB0Q2FsbFN0YWNrPiYmLCBKU0M6OkV4ZWNTdGF0ZSogPSAwLCB1
bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAg
dmlydHVhbCBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIG92ZXJyaWRlOworICAgICAg
ICBFdmVudFRhcmdldCogZXJyb3JFdmVudFRhcmdldCgpIG92ZXJyaWRlOwogCi0gICAgICAgIHZp
cnR1YWwgV29ya2VyRXZlbnRRdWV1ZSYgZXZlbnRRdWV1ZSgpIGNvbnN0IG92ZXJyaWRlIGZpbmFs
OworICAgICAgICBXb3JrZXJFdmVudFF1ZXVlJiBldmVudFF1ZXVlKCkgY29uc3Qgb3ZlcnJpZGUg
ZmluYWw7CiAKICAgICAgICAgVVJMIG1fdXJsOwogICAgICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmgKaW5kZXgg
ZGQ1YzA1Y2ViMzlmNjlmZTM3MGIwMTE3MGI5MjQ3NTZkZGZlMTFlZS4uZWVhMTc0ZDE5ZWY2NWZi
YTc0MzA0MDdiZWQ5NTI0Nzg2NWIwMGVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuaApAQCAtNTIsMjggKzUyLDI4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgV29ya2VyR2xvYmFsU2NvcGVQ
cm94eS4KICAgICAgICAgLy8gKE9ubHkgdXNlIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHdvcmtlciBv
YmplY3QgdGhyZWFkLikKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0V29ya2VyR2xvYmFsU2Nv
cGUoY29uc3QgVVJMJiBzY3JpcHRVUkwsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBT
dHJpbmcmIHNvdXJjZUNvZGUsIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVh
ZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5LCBX
b3JrZXJUaHJlYWRTdGFydE1vZGUpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgdGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIG92ZXJy
aWRlOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJPYmplY3REZXN0cm95ZWQoKSBvdmVy
cmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5ldHdvcmtTdGF0ZUNoYW5nZShib29s
IGlzT25saW5lKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBzdGFydFdvcmtlckdsb2JhbFNjb3Bl
KGNvbnN0IFVSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VDb2RlLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRl
cnMmLCBib29sIHNob3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgV29y
a2VyVGhyZWFkU3RhcnRNb2RlKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCB0ZXJtaW5hdGVXb3Jr
ZXJHbG9iYWxTY29wZSgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIHN0ZDo6dW5p
cXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIG92ZXJyaWRlOworICAgICAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICB2b2lkIHdvcmtl
ck9iamVjdERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgICAgICB2b2lkIG5vdGlmeU5ldHdvcmtT
dGF0ZUNoYW5nZShib29sIGlzT25saW5lKSBvdmVycmlkZTsKIAogICAgICAgICAvLyBJbXBsZW1l
bnRhdGlvbnMgb2YgV29ya2VyT2JqZWN0UHJveHkuCiAgICAgICAgIC8vIChPbmx5IHVzZSB0aGVz
ZSBtZXRob2RzIGluIHRoZSB3b3JrZXIgY29udGV4dCB0aHJlYWQuKQotICAgICAgICB2aXJ0dWFs
IHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4sIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4pIG92ZXJy
aWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2Fn
ZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBjb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0
aXZpdHkpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2
aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHdvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCB3b3JrZXJHbG9iYWxTY29wZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IHBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+LCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KSBvdmVycmlkZTsK
KyAgICAgICAgdm9pZCBwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9tV29y
a2VyT2JqZWN0KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KSBvdmVycmlkZTsKKyAgICAgICAgdm9p
ZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpIG92ZXJyaWRl
OworICAgICAgICB2b2lkIHdvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogICAgICAg
ICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBXb3JrZXJMb2FkZXJQcm94eS4KICAgICAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIGRpZmZlcmVudCB0aHJlYWRzIHRvIHNjaGVkdWxlIGxv
YWRpbmcKICAgICAgICAgLy8gcmVxdWVzdHMgYW5kIHRvIHNlbmQgY2FsbGJhY2tzIGJhY2sgdG8g
V29ya2VyR2xvYmFsU2NvcGUuCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza1RvTG9hZGVy
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2spIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IHBvc3RUYXNrVG9Mb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaykgb3ZlcnJpZGU7
CisgICAgICAgIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpIG92ZXJyaWRlOwogCiAg
ICAgICAgIHZvaWQgd29ya2VyVGhyZWFkQ3JlYXRlZChQYXNzUmVmUHRyPERlZGljYXRlZFdvcmtl
clRocmVhZD4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9i
amVjdFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9iamVjdFByb3h5LmgK
aW5kZXggY2VmYWI0ZDE0OGY5ZDBkOTgyN2RhMGY0MjhiZjc1ZjExM2M3ZTM2ZC4uZDZjYTEwNTU5
YWU1OGFhYzdiNmVhMjNlOWZjYzQxNDU1MDMxNzQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPYmplY3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT2JqZWN0UHJveHkuaApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHkoYm9vbCBoYXNQ
ZW5kaW5nQWN0aXZpdHkpID0gMDsKIAogICAgICAgICAvLyBObyBuZWVkIHRvIG5vdGlmeSB0aGUg
cGFyZW50IHBhZ2UgY29udGV4dCB3aGVuIGRlZGljYXRlZCB3b3JrZXJzIGFyZSBjbG9zaW5nLgot
ICAgICAgICB2aXJ0dWFsIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVDbG9zZWQoKSBvdmVycmlkZSB7
IH0KKyAgICAgICAgdm9pZCB3b3JrZXJHbG9iYWxTY29wZUNsb3NlZCgpIG92ZXJyaWRlIHsgfQog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclJ1bkxvb3AuY3BwCmluZGV4IGM2MTljYWM5MDI3NWQyODk1YzBkY2M0OWYzZWQxNGRmOTk5
NGQ1ZWUuLmFmM2Q5MTJkMThlMzM4ZGE2OWU2Y2RiMmMwZTQxNjg1YTljNTQ3NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtNDgsOSArNDgsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lciBmaW5hbCA6IHB1YmxpYyBT
aGFyZWRUaW1lciB7CiBwdWJsaWM6CiAgICAgLy8gU2hhcmVkVGltZXIgaW50ZXJmYWNlLgotICAg
IHZpcnR1YWwgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1
bmN0aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldEZpcmVJbnRlcnZhbChkb3VibGUgaW50ZXJ2YWwp
IG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSBpbnRlcnZhbCArIGN1cnJlbnRUaW1lKCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIG92ZXJyaWRlIHsgbV9uZXh0RmlyZVRpbWUgPSAwOyB9
CisgICAgdm9pZCBzZXRGaXJlZEZ1bmN0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIGZ1bmN0
aW9uKSBvdmVycmlkZSB7IG1fc2hhcmVkVGltZXJGdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24p
OyB9CisgICAgdm9pZCBzZXRGaXJlSW50ZXJ2YWwoZG91YmxlIGludGVydmFsKSBvdmVycmlkZSB7
IG1fbmV4dEZpcmVUaW1lID0gaW50ZXJ2YWwgKyBjdXJyZW50VGltZSgpOyB9CisgICAgdm9pZCBz
dG9wKCkgb3ZlcnJpZGUgeyBtX25leHRGaXJlVGltZSA9IDA7IH0KIAogICAgIGJvb2wgaXNBY3Rp
dmUoKSB7IHJldHVybiBtX3NoYXJlZFRpbWVyRnVuY3Rpb24gJiYgbV9uZXh0RmlyZVRpbWU7IH0K
ICAgICBkb3VibGUgZmlyZVRpbWUoKSB7IHJldHVybiBtX25leHRGaXJlVGltZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgKaW5kZXggODVlYjNmOTUxZjIx
Y2RmOWVmZjA5OTY1NDBmNzU5MWI5N2M0OGJjOC4uZWE2NTU2ZDM3YmEzZmQyNmJlNzUyNjA3YTZi
ZTM3ZmNlYjI3YjQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExv
YWRlci5oCkBAIC02NSwxMSArNjUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGVkOyB9CiAgICAgICAgIHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyAvKmlkZW50
aWZpZXIqLywgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgp
IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlk
UmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgLyppZGVudGlmaWVyKi8sIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlk
RmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSkgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSBvdmVycmlkZTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXVEY6OlJlZkNvdW50ZWQ8V29ya2VyU2NyaXB0TG9h
ZGVyPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oIGIv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggNmU5ZGYzNmVkMDA1MTcz
NmI5YjZmMjgxMGE0MWEyOTdmNWU4MGU1NS4uMzBlNTNjMWM4MTA3YWQwNzViOTllYmY5M2EyNTI5
OWYyYmNmZGNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTc4LDggKzc4
LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoVGltZW91dCgpOwogCi0g
ICAgdmlydHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIFhNTEh0dHBSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VU
eXBlOyB9Ci0gICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRh
cmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFhNTEh0dHBSZXF1ZXN0RXZl
bnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFjdGl2ZURPTU9i
amVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKICAgICBjb25zdCBVUkwmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgU3RyaW5nIHN0YXR1c1RleHQoKSBjb25zdDsK
QEAgLTE1NCw4ICsxNTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwog
ICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgZGVyZWYoKTsgfQor
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IHJlZigpOyB9CisgICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSBjb25zdDsKICAgICBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKQEAgLTE2NCwxMiArMTY0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCB1c2VzRGFzaGJv
YXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSgpIGNvbnN0OwogI2VuZGlmCiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU2VuZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWdu
ZWQgbG9uZyBsb25nIHRvdGFsQnl0ZXNUb0JlU2VudCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91Ymxl
IGZpbmlzaFRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJl
c291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlZGlyZWN0
Q2hlY2soKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSBmaW5p
c2hUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbFJlZGlyZWN0Q2hlY2soKSBvdmVycmlkZTsKIAog
ICAgIGJvb2wgcmVzcG9uc2VJc1hNTCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdFVwbG9hZC5oCmluZGV4IDU0MThiNzM0Y2Y0ZDk4ZGZkMWJkYjNlZTQzNDkyZjky
NTRlOTNiNTYuLmRjZjcxYzdjNjJmMzFmNDU3MWViNjk4YjNmNmZkNDUyZTU3M2VlZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5oCkBAIC00NSwxNSArNDUsMTUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRlcmVmKCkgeyBtX3htbEh0dHBS
ZXF1ZXN0LT5kZXJlZigpOyB9CiAgICAgICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVxdWVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1feG1sSHR0cFJlcXVlc3Q7IH0KIAotICAgICAgICB2aXJ0dWFs
IEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gWE1MSHR0cFJlcXVlc3RVcGxvYWRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
IH0KLSAgICAgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV94bWxIdHRwUmVxdWVzdC0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gWE1MSHR0cFJlcXVl
c3RVcGxvYWRFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KKyAgICAgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1feG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCiAgICAg
ICAgIHZvaWQgZGlzcGF0Y2hUaHJvdHRsZWRQcm9ncmVzc0V2ZW50KGJvb2wgbGVuZ3RoQ29tcHV0
YWJsZSwgdW5zaWduZWQgbG9uZyBsb25nIGxvYWRlZCwgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFs
KTsKICAgICAgICAgdm9pZCBkaXNwYXRjaFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
ICZ0eXBlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRh
cmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGRl
cmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSBmaW5hbCB7IGRlcmVmKCk7IH0KKyAgICAgICAgdm9p
ZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIGZpbmFsIHsgcmVmKCk7IH0KKyAgICAgICAgdm9p
ZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJpZGUgZmluYWwgeyBkZXJlZigpOyB9CiAKICAgICAg
ICAgWE1MSHR0cFJlcXVlc3QqIG1feG1sSHR0cFJlcXVlc3Q7CiAgICAgICAgIGJvb2wgbV9sZW5n
dGhDb21wdXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggYTY2
YzQ3MTkxYWJlYjcwZjZjZDZhMjMwNGRkNWE5YzJjODljN2M2MS4uZjgxYjlhZjg2OGEzN2IwODYx
NzE4ODU0NWEwNGY0NzBiNjVmODI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hQ
YXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwCkBAIC02MywxNTggKzYzLDE1OCBAQCBwcml2YXRlOgogfTsKIAogY2xhc3MgRnVuTGFzdCBm
aW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQogcHVibGljOgogICAgIEZ1
bkxhc3QoKSB7IHNldElzQ29udGV4dFNpemVTZW5zaXRpdmUodHJ1ZSk7IH0KIH07CiAKIGNsYXNz
IEZ1blBvc2l0aW9uIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVl
IGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1
bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9Cisg
ICAgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1
bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiBw
dWJsaWM6CiAgICAgRnVuUG9zaXRpb24oKSB7IHNldElzQ29udGV4dFBvc2l0aW9uU2Vuc2l0aXZl
KHRydWUpOyB9CiB9OwogCiBjbGFzcyBGdW5Db3VudCBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7
Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVl
OjpOdW1iZXJWYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVl
OjpOdW1iZXJWYWx1ZTsgfQogfTsKIAogY2xhc3MgRnVuSWQgZmluYWwgOiBwdWJsaWMgRnVuY3Rp
b24gewotICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBW
YWx1ZTo6Tm9kZVNldFZhbHVlOyB9CisgICAgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmFsdWU6Ok5vZGVTZXRWYWx1ZTsgfQogfTsKIAogY2xhc3MgRnVuTG9jYWxOYW1lIGZpbmFsIDog
cHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gVmFsdWU6OlN0cmluZ1ZhbHVlOyB9CisgICAgVmFsdWUgZXZhbHVhdGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gVmFsdWU6OlN0cmluZ1ZhbHVlOyB9CiBwdWJsaWM6CiAgICAgRnVuTG9jYWxO
YW1lKCkgeyBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOyB9IC8vIGxvY2FsLW5hbWUo
KSB3aXRoIG5vIGFyZ3VtZW50cyB1c2VzIGNvbnRleHQgbm9kZS4gCiB9OwogCiBjbGFzcyBGdW5O
YW1lc3BhY2VVUkkgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUg
ZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3Vs
dFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KKyAg
ICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlOjpUeXBlIHJlc3Vs
dFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KIHB1
YmxpYzoKICAgICBGdW5OYW1lc3BhY2VVUkkoKSB7IHNldElzQ29udGV4dE5vZGVTZW5zaXRpdmUo
dHJ1ZSk7IH0gLy8gbmFtZXNwYWNlLXVyaSgpIHdpdGggbm8gYXJndW1lbnRzIHVzZXMgY29udGV4
dCBub2RlLiAKIH07CiAKIGNsYXNzIEZ1bk5hbWUgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb24gewot
ICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6
U3RyaW5nVmFsdWU7IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6
U3RyaW5nVmFsdWU7IH0KIHB1YmxpYzoKICAgICBGdW5OYW1lKCkgeyBzZXRJc0NvbnRleHROb2Rl
U2Vuc2l0aXZlKHRydWUpOyB9IC8vIG5hbWUoKSB3aXRoIG5vIGFyZ3VtZW50cyB1c2VzIGNvbnRl
eHQgbm9kZS4gCiB9OwogCiBjbGFzcyBGdW5TdHJpbmcgZmluYWwgOiBwdWJsaWMgRnVuY3Rpb24g
ewotICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1
ZTo6U3RyaW5nVmFsdWU7IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1
ZTo6U3RyaW5nVmFsdWU7IH0KIHB1YmxpYzoKICAgICBGdW5TdHJpbmcoKSB7IHNldElzQ29udGV4
dE5vZGVTZW5zaXRpdmUodHJ1ZSk7IH0gLy8gc3RyaW5nKCkgd2l0aCBubyBhcmd1bWVudHMgdXNl
cyBjb250ZXh0IG5vZGUuIAogfTsKIAogY2xhc3MgRnVuQ29uY2F0IGZpbmFsIDogcHVibGljIEZ1
bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmFsdWU6OlN0cmluZ1ZhbHVlOyB9CisgICAgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gVmFsdWU6OlN0cmluZ1ZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5TdGFydHNXaXRoIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpCb29sZWFuVmFsdWU7IH0KIH07CiAKIGNsYXNzIEZ1bkNv
bnRhaW5zIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQorICAgIFZh
bHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpCb29sZWFuVmFsdWU7IH0KIH07CiAK
IGNsYXNzIEZ1blN1YnN0cmluZ0JlZm9yZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFs
dWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpTdHJp
bmdWYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFs
dWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpTdHJp
bmdWYWx1ZTsgfQogfTsKIAogY2xhc3MgRnVuU3Vic3RyaW5nQWZ0ZXIgZmluYWwgOiBwdWJsaWMg
RnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KIH07CiAKIGNsYXNzIEZ1blN1YnN0cmluZyBmaW5h
bCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpTdHJpbmdWYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpTdHJpbmdWYWx1ZTsgfQogfTsKIAogY2xhc3MgRnVuU3Ry
aW5nTGVuZ3RoIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2
YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CisgICAg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1bHRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiBwdWJs
aWM6CiAgICAgRnVuU3RyaW5nTGVuZ3RoKCkgeyBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRy
dWUpOyB9IC8vIHN0cmluZy1sZW5ndGgoKSB3aXRoIG5vIGFyZ3VtZW50cyB1c2VzIGNvbnRleHQg
bm9kZS4gCiB9OwogCiBjbGFzcyBGdW5Ob3JtYWxpemVTcGFjZSBmaW5hbCA6IHB1YmxpYyBGdW5j
dGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFZhbHVlOjpTdHJpbmdWYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IFZhbHVlOjpTdHJpbmdWYWx1ZTsgfQogcHVibGljOgogICAgIEZ1bk5vcm1hbGl6ZVNwYWNlKCkg
eyBzZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOyB9IC8vIG5vcm1hbGl6ZS1zcGFjZSgp
IHdpdGggbm8gYXJndW1lbnRzIHVzZXMgY29udGV4dCBub2RlLiAKIH07CiAKIGNsYXNzIEZ1blRy
YW5zbGF0ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFs
dWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpTdHJpbmdWYWx1ZTsgfQorICAgIFZh
bHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlw
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpTdHJpbmdWYWx1ZTsgfQogfTsKIAog
Y2xhc3MgRnVuQm9vbGVhbiBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBW
YWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUg
cmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpCb29sZWFuVmFsdWU7
IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlOjpUeXBl
IHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6Qm9vbGVhblZhbHVl
OyB9CiB9OwogCiBjbGFzcyBGdW5Ob3QgOiBwdWJsaWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwg
VmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFZhbHVlOjpUeXBl
IHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6Qm9vbGVhblZhbHVl
OyB9CisgICAgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZTo6VHlw
ZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1
ZTsgfQogfTsKIAogY2xhc3MgRnVuVHJ1ZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFs
dWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpCb29s
ZWFuVmFsdWU7IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFZh
bHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6Qm9v
bGVhblZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5GYWxzZSBmaW5hbCA6IHB1YmxpYyBGdW5jdGlv
biB7Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZh
bHVlOjpCb29sZWFuVmFsdWU7IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBW
YWx1ZTo6Qm9vbGVhblZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5MYW5nIGZpbmFsIDogcHVibGlj
IEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFZhbHVlOjpCb29sZWFuVmFsdWU7IH0KIHB1YmxpYzoKICAgICBGdW5MYW5nKCkgeyBz
ZXRJc0NvbnRleHROb2RlU2Vuc2l0aXZlKHRydWUpOyB9IC8vIGxhbmcoKSBhbHdheXMgd29ya3Mg
b24gY29udGV4dCBub2RlLiAKIH07CiAKIGNsYXNzIEZ1bk51bWJlciBmaW5hbCA6IHB1YmxpYyBG
dW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQorICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQogcHVibGljOgogICAgIEZ1bk51bWJlcigpIHsgc2V0
SXNDb250ZXh0Tm9kZVNlbnNpdGl2ZSh0cnVlKTsgfSAvLyBudW1iZXIoKSB3aXRoIG5vIGFyZ3Vt
ZW50cyB1c2VzIGNvbnRleHQgbm9kZS4gCiB9OwogCiBjbGFzcyBGdW5TdW0gZmluYWwgOiBwdWJs
aWMgRnVuY3Rpb24gewotICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWYWx1ZTo6TnVtYmVyVmFsdWU7IH0KKyAgICBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBWYWx1ZTo6TnVtYmVyVmFsdWU7IH0KIH07CiAKIGNsYXNzIEZ1bkZsb29yIGZpbmFs
IDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CisgICAgVmFsdWUgZXZhbHVhdGUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiB9OwogCiBjbGFzcyBGdW5DZWls
aW5nIGZpbmFsIDogcHVibGljIEZ1bmN0aW9uIHsKLSAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRl
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CisgICAgVmFsdWUg
ZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiB9OwogCiBjbGFz
cyBGdW5Sb3VuZCBmaW5hbCA6IHB1YmxpYyBGdW5jdGlvbiB7Ci0gICAgdmlydHVhbCBWYWx1ZSBl
dmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQorICAg
IFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWU6OlR5cGUgcmVzdWx0
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQogcHVi
bGljOgogICAgIHN0YXRpYyBkb3VibGUgcm91bmQoZG91YmxlKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXRoLmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQ
YXRoLmgKaW5kZXggNTQ5MTYxOGE4NDEzMzQ4NzJlOTUxNGJhODU0MGQ0ODM0ZWNkNDlkZS4uYjI4
YTQ2NjY5NTE0NWFiMGVhNWI0ZjNlZDNmMzg0ZTc4YmZkZjZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hQYXRoUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBh
dGguaApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBG
aWx0ZXIoc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+PiBwcmVkaWNhdGVzKTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAg
ICAgdmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICAgICAg
dmlydHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
VmFsdWU6Ok5vZGVTZXRWYWx1ZTsgfQorICAgICAgICAgICAgVmFsdWUgZXZhbHVhdGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICAgICAgICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBWYWx1ZTo6Tm9kZVNldFZhbHVlOyB9CiAKICAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBtX2V4cHJlc3Npb247CiAgICAgICAgICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb24+PiBtX3ByZWRpY2F0ZXM7CkBAIC01OSw4ICs1
OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHZvaWQgcHJlcGVuZFN0ZXAo
c3RkOjp1bmlxdWVfcHRyPFN0ZXA+KTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAg
dmlydHVhbCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICAgICAgdmly
dHVhbCBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFs
dWU6Ok5vZGVTZXRWYWx1ZTsgfQorICAgICAgICAgICAgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICAgICAgICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBWYWx1ZTo6Tm9kZVNldFZhbHVlOyB9CiAKICAgICAgICAgICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8U3RlcD4+IG1fc3RlcHM7CiAgICAgICAgICAgICBib29sIG1faXNB
YnNvbHV0ZTsKQEAgLTcxLDggKzcxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgUGF0aChzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gZmlsdGVyLCBzdGQ6OnVuaXF1ZV9w
dHI8TG9jYXRpb25QYXRoPik7CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1
YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAgICAgIHZpcnR1YWwg
VmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpO
b2RlU2V0VmFsdWU7IH0KKyAgICAgICAgICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgICAgICAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gVmFsdWU6Ok5vZGVTZXRWYWx1ZTsgfQogCiAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXhwcmVzc2lvbj4gbV9maWx0ZXI7CiAgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TG9jYXRpb25QYXRoPiBtX3BhdGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhQcmVkaWNhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0ZS5oCmluZGV4
IGM2NTdjOGE1NTcwZjg4MGRjOGI5NGU1MzQwYjMyMmJiYWY0MTgxMzEuLjNlMmEwMTU4OTAxMzhj
NGY5NTM4NzFkMjE3NTkxODI5NTU2MjE5NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFByZWRpY2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFByZWRpY2F0
ZS5oCkBAIC0zOCw4ICszOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGV4
cGxpY2l0IE51bWJlcihkb3VibGUpOwogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB2
aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2aXJ0
dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1
ZTo6TnVtYmVyVmFsdWU7IH0KKyAgICAgICAgICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgICAgICAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiAKICAgICAgICAgICAgIFZhbHVlIG1f
dmFsdWU7CiAgICAgICAgIH07CkBAIC00OSw4ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIGV4cGxpY2l0IFN0cmluZ0V4cHJlc3Npb24oU3RyaW5nJiYpOwogCiAgICAg
ICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB2aXJ0dWFsIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgICAgICAgICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6U3RyaW5nVmFsdWU7IH0KKyAgICAgICAgICAg
IFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgICAgICAgICBWYWx1ZTo6VHlw
ZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6OlN0cmluZ1ZhbHVl
OyB9CiAKICAgICAgICAgICAgIFZhbHVlIG1fdmFsdWU7CiAgICAgICAgIH07CkBAIC02MCw4ICs2
MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIGV4cGxpY2l0IE5lZ2F0aXZl
KHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPik7CiAKICAgICAgICAgcHJpdmF0ZToKLSAgICAg
ICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICAgICAg
ICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFZhbHVlOjpOdW1iZXJWYWx1ZTsgfQorICAgICAgICAgICAgVmFsdWUgZXZhbHVhdGUoKSBj
b25zdCBvdmVycmlkZTsKKyAgICAgICAgICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6TnVtYmVyVmFsdWU7IH0KICAgICAgICAgfTsKIAog
ICAgICAgICBjbGFzcyBOdW1lcmljT3AgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbiB7CkBAIC03
MCw4ICs3MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIE51bWVyaWNPcChP
cGNvZGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBsaHMsIHN0ZDo6dW5pcXVlX3B0cjxF
eHByZXNzaW9uPiByaHMpOwogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICB2aXJ0dWFs
IFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgICAgICAgICB2aXJ0dWFsIFZh
bHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBWYWx1ZTo6TnVt
YmVyVmFsdWU7IH0KKyAgICAgICAgICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgICAgICAgICBWYWx1ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gVmFsdWU6Ok51bWJlclZhbHVlOyB9CiAKICAgICAgICAgICAgIE9wY29kZSBtX29wY29k
ZTsKICAgICAgICAgfTsKQEAgLTgwLDEwICs4MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIGVudW0gT3Bjb2RlIHsgT1BfRVEsIE9QX05FLCBP
UF9HVCwgT1BfTFQsIE9QX0dFLCBPUF9MRSB9OwogICAgICAgICAgICAgRXFUZXN0T3AoT3Bjb2Rl
LCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVzc2lvbj4gbGhzLCBzdGQ6OnVuaXF1ZV9wdHI8RXhwcmVz
c2lvbj4gcmhzKTsKLSAgICAgICAgICAgIHZpcnR1YWwgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBv
dmVycmlkZTsKKyAgICAgICAgICAgIFZhbHVlIGV2YWx1YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHZpcnR1YWwgVmFsdWU6OlR5cGUgcmVzdWx0
VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFZhbHVlOjpCb29sZWFuVmFsdWU7IH0KKyAg
ICAgICAgICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWYWx1ZTo6Qm9vbGVhblZhbHVlOyB9CiAgICAgICAgICAgICBib29sIGNvbXBhcmUoY29uc3Qg
VmFsdWUmLCBjb25zdCBWYWx1ZSYpIGNvbnN0OwogCiAgICAgICAgICAgICBPcGNvZGUgbV9vcGNv
ZGU7CkBAIC05NSw5ICs5NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExv
Z2ljYWxPcChPcGNvZGUsIHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiBsaHMsIHN0ZDo6dW5p
cXVlX3B0cjxFeHByZXNzaW9uPiByaHMpOwogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAg
ICB2aXJ0dWFsIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBWYWx1ZTo6Qm9vbGVhblZhbHVlOyB9CisgICAgICAgICAgICBWYWx1ZTo6VHlwZSByZXN1bHRU
eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6OkJvb2xlYW5WYWx1ZTsgfQogICAg
ICAgICAgICAgYm9vbCBzaG9ydENpcmN1aXRPbigpIGNvbnN0OwotICAgICAgICAgICAgdmlydHVh
bCBWYWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICAgICAgVmFsdWUgZXZh
bHVhdGUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlOwog
ICAgICAgICB9OwpAQCAtMTA3LDggKzEwNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIFVuaW9uKHN0ZDo6dW5pcXVlX3B0cjxFeHByZXNzaW9uPiwgc3RkOjp1bmlxdWVfcHRy
PEV4cHJlc3Npb24+KTsKIAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgdmlydHVhbCBW
YWx1ZSBldmFsdWF0ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICAgICAgdmlydHVhbCBWYWx1
ZTo6VHlwZSByZXN1bHRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVmFsdWU6Ok5vZGVT
ZXRWYWx1ZTsgfQorICAgICAgICAgICAgVmFsdWUgZXZhbHVhdGUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICAgICAgICAgIFZhbHVlOjpUeXBlIHJlc3VsdFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBWYWx1ZTo6Tm9kZVNldFZhbHVlOyB9CiAgICAgICAgIH07CiAKICAgICAgICAgYm9vbCBl
dmFsdWF0ZVByZWRpY2F0ZShjb25zdCBFeHByZXNzaW9uJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFN0eWxl
U2hlZXQuaAppbmRleCA1ZjYwZGQ3MTFiMzA3YTYxYzMxZjFmMWU5ZTBmY2YxNGQzMTI4ZGY1Li5h
YTQ0ZGY4ODU4NDRmZTQ1ZjU0NDkwNzU0MWQ3YmRlODZlODBhYzk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWFNMU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
U0xTdHlsZVNoZWV0LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIENhY2hlZFJlc291
cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogCiAgICAgRG9jdW1lbnQqIG93bmVy
RG9jdW1lbnQoKTsKLSAgICB2aXJ0dWFsIFhTTFN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BhcmVudFN0eWxlU2hlZXQ7IH0KKyAgICBYU0xT
dHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9w
YXJlbnRTdHlsZVNoZWV0OyB9CiAgICAgdm9pZCBzZXRQYXJlbnRTdHlsZVNoZWV0KFhTTFN0eWxl
U2hlZXQqIHBhcmVudCk7CiAKICAgICB4bWxEb2NQdHIgZG9jdW1lbnQoKTsKQEAgLTg3LDIyICs4
NywyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXJrQXNQcm9jZXNzZWQoKTsKICAgICBib29sIHBy
b2Nlc3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzc2VkOyB9CiAgICAgCi0gICAgdmlydHVh
bCBTdHJpbmcgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgZGlzYWJsZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRGlz
YWJsZWQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGlzYWJsZWQoYm9vbCBiKSBvdmVycmlkZSB7
IG1faXNEaXNhYmxlZCA9IGI7IH0KLSAgICB2aXJ0dWFsIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3duZXJOb2RlOyB9Ci0gICAgdmlydHVhbCBTdHJpbmcgaHJl
ZigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fb3JpZ2luYWxVUkw7IH0KLSAgICB2aXJ0dWFs
IFN0cmluZyB0aXRsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0K
KyAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJ0ZXh0L3htbCI7IH0K
KyAgICBib29sIGRpc2FibGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0Rpc2FibGVk
OyB9CisgICAgdm9pZCBzZXREaXNhYmxlZChib29sIGIpIG92ZXJyaWRlIHsgbV9pc0Rpc2FibGVk
ID0gYjsgfQorICAgIE5vZGUqIG93bmVyTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
b3duZXJOb2RlOyB9CisgICAgU3RyaW5nIGhyZWYoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X29yaWdpbmFsVVJMOyB9CisgICAgU3RyaW5nIHRpdGxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZW1wdHlTdHJpbmcoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyT3duZXJOb2RlKCkg
b3ZlcnJpZGUgeyBtX293bmVyTm9kZSA9IG51bGxwdHI7IH0KLSAgICB2aXJ0dWFsIFVSTCBiYXNl
VVJMKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9maW5hbFVSTDsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc0xvYWRpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyT3duZXJOb2Rl
KCkgb3ZlcnJpZGUgeyBtX293bmVyTm9kZSA9IG51bGxwdHI7IH0KKyAgICBVUkwgYmFzZVVSTCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZmluYWxVUkw7IH0KKyAgICBib29sIGlzTG9hZGlu
ZygpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFhTTFN0eWxlU2hlZXQoTm9kZSog
cGFyZW50Tm9kZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTCwgY29uc3QgVVJMJiBmaW5hbFVS
TCwgYm9vbCBlbWJlZGRlZCk7CiAgICAgWFNMU3R5bGVTaGVldChYU0xJbXBvcnRSdWxlKiBwYXJl
bnRJbXBvcnQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxVUkwsIGNvbnN0IFVSTCYgZmluYWxVUkwp
OwogCi0gICAgdmlydHVhbCBib29sIGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KKyAgICBib29sIGlzWFNMU3R5bGVTaGVldCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICAKICAgICBOb2RlKiBtX293bmVyTm9kZTsKICAgICBTdHJp
bmcgbV9vcmlnaW5hbFVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIv
WE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuaAppbmRleCBhZDg3NmNiOTk4Yjc2NDI1OTE3ZjI5M2JjMjY3MDJlMjVmMzk2ZGQ1
Li43MWQ2NjlmNWNmNzA0Y2M0NzZmNzA4Yzc3ZDIzNDc1NTZhMDEzOWJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5oCkBAIC04OCw3ICs4OCw3IEBA
IGNsYXNzIFRleHQ7CiAgICAgICAgIHN0YXRpYyBib29sIHBhcnNlRG9jdW1lbnRGcmFnbWVudChj
b25zdCBTdHJpbmcmLCBEb2N1bWVudEZyYWdtZW50JiwgRWxlbWVudCogcGFyZW50ID0gbnVsbHB0
ciwgUGFyc2VyQ29udGVudFBvbGljeSA9IEFsbG93U2NyaXB0aW5nQ29udGVudCk7CiAKICAgICAg
ICAgLy8gVXNlZCBieSB0aGUgWE1MSHR0cFJlcXVlc3QgdG8gY2hlY2sgaWYgdGhlIHJlc3BvbnNl
WE1MIHdhcyB3ZWxsIGZvcm1lZC4KLSAgICAgICAgdmlydHVhbCBib29sIHdlbGxGb3JtZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9zYXdFcnJvcjsgfQorICAgICAgICBib29sIHdlbGxG
b3JtZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAhbV9zYXdFcnJvcjsgfQogCiAgICAgICAg
IHN0YXRpYyBib29sIHN1cHBvcnRzWE1MVmVyc2lvbihjb25zdCBTdHJpbmcmKTsKIApAQCAtOTcs
MTggKzk3LDE4IEBAIGNsYXNzIFRleHQ7CiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyKERvY3Vt
ZW50RnJhZ21lbnQmLCBFbGVtZW50KiwgUGFyc2VyQ29udGVudFBvbGljeSk7CiAKICAgICAgICAg
Ly8gRnJvbSBEb2N1bWVudFBhcnNlcgotICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0KGNvbnN0
IFNlZ21lbnRlZFN0cmluZyYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
KFJlZlB0cjxTdHJpbmdJbXBsPiYmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaCgpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXYWl0aW5nRm9yU2NyaXB0
cygpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFBhcnNpbmcoKSBv
dmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGluc2VydChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKSBvdmVycmlkZTsKKyAgICAgICAg
dm9pZCBhcHBlbmQoUmVmUHRyPFN0cmluZ0ltcGw+JiYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGZpbmlzaCgpIG92ZXJyaWRlOworICAgICAgICBib29sIGlzV2FpdGluZ0ZvclNjcmlwdHMoKSBj
b25zdCBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBzdG9wUGFyc2luZygpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRldGFjaCgpIG92ZXJyaWRlOwogCi0gICAgICAgIHZpcnR1YWwgVGV4dFBvc2l0
aW9uIHRleHRQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQXNzb2NpYXRlQ29uc29sZU1lc3NhZ2VzV2l0aFRleHRQb3NpdGlvbigpIGNvbnN0IG92
ZXJyaWRlOworICAgICAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgICAgIGJvb2wgc2hvdWxkQXNzb2NpYXRlQ29uc29sZU1lc3NhZ2VzV2l0aFRleHRQ
b3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgICAgIC8vIGZyb20gQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3Vy
Y2UqKSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGVuZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggYTZhZWViM2FiZmNlOTYyYjU2NWZmMzJiN2ZhMDFm
YjVmYzhlYmI1YS4uNmNkZDljN2I1ZDVlMDNlODE3ZjllMjQ5MTVmMGU0NTNlYTEyNTgyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlQXJlYUltcGwuaApAQCAtNDMsMjIgKzQzLDIyIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VBcmVhSW1wbD4gY3JlYXRlKFN0b3JhZ2VU
eXBlLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgUGFzc1JlZlB0cjxTdG9yYWdlU3luY01h
bmFnZXI+LCB1bnNpZ25lZCBxdW90YSk7CiAgICAgdmlydHVhbCB+U3RvcmFnZUFyZWFJbXBsKCk7
CiAKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
U3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcg
aXRlbShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEl0
ZW0oRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCYgcXVvdGFFeGNlcHRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjbGVhcihGcmFtZSogc291cmNlRnJhbWUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgY2FuQWNjZXNzU3RvcmFnZShGcmFtZSogc291cmNlRnJhbWUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjbG9zZURhdGFiYXNlSWZJZGxlKCkgb3ZlcnJpZGU7CisgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGtleSh1bnNpZ25lZCBpbmRleCkgb3Zl
cnJpZGU7CisgICAgU3RyaW5nIGl0ZW0oY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0SXRlbShGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sJiBxdW90YUV4Y2VwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9p
ZCByZW1vdmVJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJy
aWRlOworICAgIHZvaWQgY2xlYXIoRnJhbWUqIHNvdXJjZUZyYW1lKSBvdmVycmlkZTsKKyAgICBi
b29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKKworICAgIGJvb2wgY2Fu
QWNjZXNzU3RvcmFnZShGcmFtZSogc291cmNlRnJhbWUpIG92ZXJyaWRlOworICAgIFN0b3JhZ2VU
eXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBzaXplX3QgbWVtb3J5Qnl0
ZXNVc2VkQnlDYWNoZSgpIG92ZXJyaWRlOworCisgICAgdm9pZCBpbmNyZW1lbnRBY2Nlc3NDb3Vu
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGVjcmVtZW50QWNjZXNzQ291bnQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNsb3NlRGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKIAogICAgIFNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIG92ZXJyaWRlIHsgcmV0dXJuICptX3NlY3VyaXR5T3Jp
Z2luOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
aW5kZXggY2IzNzM2ZmQyOWFlNTQ2ZTNhYTg5MWJiMDk5MjQ3NmMyMTIxYmI1ZS4uYWUxNjFlMWI1
OGZiMDYyM2VlYmQ0ODA1NzY5ZmFkM2U0MDYzOWYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCB1bnNpZ25lZCBxdW90YSk7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxTdG9yYWdlQXJl
YT4gc3RvcmFnZUFyZWEoUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmKSAgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBSZWZQdHI8U3RvcmFnZU5hbWVzcGFjZT4gY29weShQYWdlKiBuZXdQYWdlKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhKFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4mJikgIG92ZXJyaWRlOworICAgIFJlZlB0cjxTdG9yYWdlTmFtZXNwYWNlPiBjb3B5
KFBhZ2UqIG5ld1BhZ2UpIG92ZXJyaWRlOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4sIFJlZlB0cjxTdG9yYWdlQXJlYUltcGw+PiBTdG9yYWdlQXJlYU1hcDsK
ICAgICBTdG9yYWdlQXJlYU1hcCBtX3N0b3JhZ2VBcmVhTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvU3Rv
cmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKaW5kZXggMzRmNTdmYmY4NzhmMzhhMTU5OTg3ZDFh
NmRkZTQxYzNmYzExMWJlOS4uZjMzZDU1YTM5MzJhMTdjY2Q5MTcxYWFmZTExMWEzNDk1Njc5Njc4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViRGF0YWJhc2VQcm92aWRlci5oCkBAIC00
Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJEYXRhYmFzZVByb3ZpZGVyKCk7
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OklE
QkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBpZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JT
ZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBpZGJDb25uZWN0aW9uVG9TZXJ2ZXJG
b3JTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlNlc3Npb25JRCYpIG92ZXJyaWRlOwogI2VuZGlmCiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViU3RvcmFnZU5h
bWVzcGFjZVByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgKaW5kZXggYzk3MDliZTc2YzBkMWYyZGVlOGFmODY2MmRlMDgwMDMzNTZj
NWJlMC4uMDk3ZmY3NjFlNmRkY2FhZjUzZTE5ZjYyMWIyMjRlNGI1N2I3OTc2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaApA
QCAtNDQsOSArNDQsOSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlN0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlcihjb25zdCBTdHJpbmcmIGxvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCk7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQgcXVvdGEp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+
IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRlVHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwgdW5zaWdu
ZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBj
cmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAg
IFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBxdW90YSkg
b3ZlcnJpZGU7CiAKICAgICBjb25zdCBTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGg7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvU3RvcmFnZS9XZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1N0b3JhZ2UvV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50LmgKaW5kZXggNDc5MzBjZTU1ZTUwMDI1ODY0MDBjMzI4MzA4
ZTdiZjYwOTliNmM5YS4uZDA4NDNjYWNhN2I1NDE0MTA3NTE0MDIwMzZiNDY0Mzc3YTdkY2RjOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvU3RvcmFnZS9XZWJTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9TdG9yYWdlL1dlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlckNsaWVudC5oCkBAIC0yOSwxMCArMjksMTAgQEAgY2xhc3MgV2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlVHJh
Y2tlckNsaWUKIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyQ2xp
ZW50KiBzaGFyZWRXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQoKTsKIAotICAgIHZpcnR1
YWwgfldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudCgpIG92ZXJyaWRlIHsgfQorICAgIH5X
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQoKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCB3aWxsQmVnaW5GaXJzdFRyYW5zYWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExhc3RUcmFuc2FjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgd2ls
bEJlZ2luRmlyc3RUcmFuc2FjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTGFz
dFRyYW5zYWN0aW9uKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyQ2xpZW50KCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9Qb3B1cE1lbnVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudUlPUy5oCmluZGV4IDcwMzJjM2ViYmYyZWY2ZmY0ZGYzYWE3ZGZiZjI4MWUw
ZWVkYTQ5MDcuLjRiNjA3MmZjODYyZmEyYTM3MDk2YjA0YjQwZDg0OGY0NmY4Yjc1MTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudUlPUy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudUlPUy5oCkBAIC0z
NywxMCArMzcsMTAgQEAgY2xhc3MgUG9wdXBNZW51SU9TIDogcHVibGljIFdlYkNvcmU6OlBvcHVw
TWVudSB7CiBwdWJsaWM6CiAgICAgUG9wdXBNZW51SU9TKFdlYkNvcmU6OlBvcHVwTWVudUNsaWVu
dCopOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdl
YkNvcmU6OkZyYW1lVmlldyosIGludCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGhpZGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdENsaWVudCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2hvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3
KiwgaW50IGluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGUoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUZyb21FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0Q2xp
ZW50KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50OyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCmluZGV4
IGFkMTQ0MGIyMzcwMTc1MDliZTA3OWUwYzAwYmE0NWViZDk0MWUzNzAuLjcxNmVkNTljNDE0NzIz
OTUyZDcwZGVjNTJkYmY4ZWY1OTg3OWFmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9z
L1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
aW9zL1dlYkNvcmVTdXBwb3J0L1NlYXJjaFBvcHVwTWVudUlPUy5oCkBAIC0zMiwxMCArMzIsMTAg
QEAgY2xhc3MgU2VhcmNoUG9wdXBNZW51SU9TIDogcHVibGljIFdlYkNvcmU6OlNlYXJjaFBvcHVw
TWVudSB7CiBwdWJsaWM6CiAgICAgU2VhcmNoUG9wdXBNZW51SU9TKFdlYkNvcmU6OlBvcHVwTWVu
dUNsaWVudCopOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVwTWVudSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UG9wdXBN
ZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNlbnRTZWFy
Y2g+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxQb3B1
cE1lbnVJT1M+IG1fcG9wdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnRJT1MuaCBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudElPUy5oCmluZGV4IGJkOTRjZTc1ZTE3ZWQ5MGMxMzEzNGUz
OWRlZWFmYjM2YmY3MjY3MzIuLjYzZjQzMDRhMDM2MmU1MzM1MWM5NmQwZDdlZDA3ZDkxYjBhMDZm
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudElPUy5oCkBAIC0zMiw2MiArMzIsNjIgQEAgcHVibGljOgogICAgICAgICA6IFdl
YkNocm9tZUNsaWVudCh3ZWJWaWV3KQogICAgICAgICAsIG1fZm9ybU5vdGlmaWNhdGlvblN1cHBy
ZXNzaW9ucygwKSB7IH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0V2luZG93UmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZs
b2F0UmVjdCB3aW5kb3dSZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0YXR1
c2JhclRleHQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldFdp
bmRvd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN0YXR1c2Jh
clRleHQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBmb2N1cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6
Rm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZm9jdXMoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgb3ZlcnJpZGUgeyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lKiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNj
cmlwdENvbmZpcm0oV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lKiwg
Y29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFs
dWUsIFdURjo6U3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZvaWQgcnVuSmF2YVNjcmlw
dEFsZXJ0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICBib29sIHJ1bkphdmFTY3JpcHRDb25maXJtKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6
RnJhbWUqLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSwgV1RGOjpTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
aWxlQ2hvb3Nlcj4pIG92ZXJyaWRlOworICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZy
YW1lKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGaWxlQ2hvb3Nlcj4pIG92ZXJyaWRlOwogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUHJldmVudERlZmF1bHRG
b3JFdmVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgp
IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNb2JpbGVEb2NU
eXBlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Njcm9sbE5vdGlm
aWNhdGlvbnMoV2ViQ29yZTo6RnJhbWUqLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgb2JzZXJ2ZWRDb250ZW50Q2hhbmdlKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNsZWFyQ29udGVudENoYW5nZU9ic2VydmVycyhXZWJDb3JlOjpGcmFtZSop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRTaXplIHNjcmVlblNpemUoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0U2l6ZSBhdmFpbGFibGVT
Y3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoVmll
d3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVJldmVhbGVkU2VsZWN0
aW9uQnlTY3JvbGxpbmdGcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpc1N0b3BwaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZExheW91
dChMYXlvdXRUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRPdmVyZmxv
d1Njcm9sbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRPdmVyZmxvd1Njcm9s
bCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1vYmlsZURvY1R5cGUoYm9vbCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXROZWVkc1Njcm9sbE5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6RnJh
bWUqLCBib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIG9ic2VydmVkQ29udGVudENoYW5nZShXZWJD
b3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJDb250ZW50Q2hhbmdlT2JzZXJ2
ZXJzKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNj
cmVlblNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFNpemUgYXZhaWxh
YmxlU2NyZWVuU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hWaWV3cG9y
dFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeVJldmVhbGVkU2VsZWN0aW9uQnlTY3JvbGxp
bmdGcmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIGJvb2wgaXNTdG9wcGluZygp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkTGF5b3V0KExheW91dFR5cGUpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkU3RhcnRPdmVyZmxvd1Njcm9sbCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRW5k
T3ZlcmZsb3dTY3JvbGwoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzdXBwcmVzc0Zv
cm1Ob3RpZmljYXRpb25zKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3RvcmVGb3Jt
Tm90aWZpY2F0aW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgc3VwcHJlc3NGb3JtTm90aWZpY2F0
aW9ucygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVzdG9yZUZvcm1Ob3RpZmljYXRpb25zKCkgb3Zl
cnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRGb2N1cyhjb25zdCBXZWJD
b3JlOjpOb2RlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVsZW1lbnREaWRCbHVyKGNv
bnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGVsZW1lbnREaWRGb2N1cyhj
b25zdCBXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbGVtZW50RGlkQmx1cihj
b25zdCBXZWJDb3JlOjpOb2RlKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
Um9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpG
cmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRGbHVzaENvbXBvc2l0aW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRG
bHVzaENvbXBvc2l0aW5nTGF5ZXJzKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVycyhIYXNoTWFwPFBsYXRmb3JtTGF5ZXIqLCBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50cz4+JiwgSGFzaE1hcDxQbGF0
Zm9ybUxheWVyKiwgUGxhdGZvcm1MYXllcio+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVW
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzKEhhc2hNYXA8UGxhdGZvcm1MYXllciosIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzPj4mLCBIYXNoTWFwPFBsYXRmb3Jt
TGF5ZXIqLCBQbGF0Zm9ybUxheWVyKj4mKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBm
ZXRjaEN1c3RvbUZpeGVkUG9zaXRpb25MYXlvdXRSZWN0KFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkT3JVcGRhdGVTY3JvbGxpbmdMYXllcihXZWJDb3Jl
OjpOb2RlKiwgUGxhdGZvcm1MYXllciosIFBsYXRmb3JtTGF5ZXIqLCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgYm9vbCBhbGxvd0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgYWxsb3dWZXJ0aWNh
bFNjcm9sbGJhcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcm9sbGluZ0xh
eWVyKFdlYkNvcmU6Ok5vZGUqLCBQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1MYXllciopIG92ZXJy
aWRlOworICAgIGJvb2wgZmV0Y2hDdXN0b21GaXhlZFBvc2l0aW9uTGF5b3V0UmVjdChXZWJDb3Jl
OjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRPclVwZGF0ZVNjcm9sbGluZ0xheWVy
KFdlYkNvcmU6Ok5vZGUqLCBQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1MYXllciosIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCBib29sIGFsbG93SG9yaXpvbnRhbFNjcm9sbGJhciwgYm9vbCBhbGxv
d1ZlcnRpY2FsU2Nyb2xsYmFyKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZVNjcm9sbGluZ0xh
eWVyKFdlYkNvcmU6Ok5vZGUqLCBQbGF0Zm9ybUxheWVyKiwgUGxhdGZvcm1MYXllciopIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1
cmFsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xs
b3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQ
b3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQq
KSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNO
YXR1cmFsKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01l
bnVXcml0aW5nRGlyZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFdlYkNvcmU6OlBvcHVw
TWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJj
aFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCB3ZWJBcHBPcmllbnRhdGlvbnNVcGRhdGVkKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGZvY3VzZWRFbGVtZW50Q2hhbmdlZChXZWJDb3JlOjpFbGVtZW50Kikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29s
IGhhc1ZpZGVvKSBvdmVycmlkZTsKKyAgICB2b2lkIHdlYkFwcE9yaWVudGF0aW9uc1VwZGF0ZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZvY3VzZWRFbGVtZW50Q2hhbmdlZChXZWJDb3JlOjpFbGVt
ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93UGxheWJhY2tUYXJnZXRQaWNrZXIoYm9vbCBo
YXNWaWRlbykgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQotICAg
IHZpcnR1YWwgaW50IGRldmljZU9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50
IGRldmljZU9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2Vy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYkRhdGFiYXNlTWFuYWdlckNs
aWVudC5oCmluZGV4IGU2OTYyNGRlZDFjYTQ5MGFhNGE5NTYwOTVlYzhhYmYwOTBhMTJiOTYuLmRi
ZWJkMTkzNDE2ZmQzYTJiYWE0MzhmM2FjOGE0ZTc4YzY4MjQ3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1N0b3JhZ2UvV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvU3RvcmFnZS9XZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQuaApAQCAtMzAs
MTIgKzMwLDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViRGF0YWJhc2VNYW5hZ2VyQ2xpZW50
KiBzaGFyZWRXZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKICAgICAKICAgICB2aXJ0dWFsIH5X
ZWJEYXRhYmFzZU1hbmFnZXJDbGllbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRN
b2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFzZShXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biosIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZUlkZW50aWZpZXIpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2UoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0YWJhc2VJZGVudGlmaWVyKSBvdmVy
cmlkZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQWRk
TmV3T3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRGVsZXRlRGF0YWJhc2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWREZWxldGVEYXRhYmFzZU9yaWdpbigpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlzcGF0Y2hEaWRBZGROZXdPcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRGVsZXRlRGF0YWJhc2UoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpc3BhdGNoRGlkRGVsZXRlRGF0YWJhc2VPcmlnaW4oKSBvdmVycmlkZTsKICAgICB2
b2lkIG5ld0RhdGFiYXNlT3JpZ2luV2FzQWRkZWQoKTsKICAgICB2b2lkIGRhdGFiYXNlV2FzRGVs
ZXRlZCgpOwogICAgIHZvaWQgZGF0YWJhc2VPcmlnaW5XYXNEZWxldGVkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9TdG9yYWdlL1dlYlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgKaW5kZXgg
NzYyMmI5N2E5MDYyYWRkYTEyMTEyYzk4NDRkOGM1OTEyMWE1ZDVlYS4uYTFlZjliZTU2ZmQ3Zjkw
MjVhYWU0YzQwMTE2ZjRiZWQwNjEwNGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
U3RvcmFnZS9XZWJTdG9yYWdlVHJhY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1N0b3JhZ2UvV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQuaApAQCAtMzMsMTIgKzMzLDEyIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViU3RvcmFnZVRyYWNrZXJDbGllbnQqIHNoYXJlZFdlYlN0b3Jh
Z2VUcmFja2VyQ2xpZW50KCk7CiAgICAgCiAgICAgdmlydHVhbCB+V2ViU3RvcmFnZVRyYWNrZXJD
bGllbnQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRNb2RpZnlPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlk
TW9kaWZ5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTW9kaWZ5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+KTsKIAogcHJpdmF0ZToKICAgICBXZWJTdG9yYWdlVHJhY2tlckNsaWVudCgpOwog
CiAgICAgLy8gV2ViQ29yZTo6U3RvcmFnZVRyYWNrZXJDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZ09yaWdpbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExv
YWRpbmdPcmlnaW5zKCkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMuaAppbmRleCBiMmI1OGQ5ZmVmZjY1ZTFiYzExM2NlMTJh
MjEwYmI0OWNmMjcyZjI5Li5mZTllYjE0ODUwMTZhZDIyMWVlZmNmYzU1ZGI1N2U5ZDA5M2RlNTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVN
YWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMu
aApAQCAtMzQsMTAgKzM0LDEwIEBAIHB1YmxpYzoKICAgICBQb3B1cE1lbnVNYWMoV2ViQ29yZTo6
UG9wdXBNZW51Q2xpZW50Kik7CiAgICAgflBvcHVwTWVudU1hYygpOwogCi0gICAgdmlydHVhbCB2
b2lkIHNob3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkZyYW1lVmlldyosIGlu
dCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzY29ubmVjdENsaWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvdyhjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGhpZGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUZyb21FbGVtZW50
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvU2VhcmNoUG9wdXBNZW51TWFjLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9TZWFyY2hQb3B1cE1lbnVNYWMuaAppbmRleCA4OTcxYzQ4MjhkYjBhZTE3
YzNhYjBjMmNkNjk3Yjk4YzFlZWQ2MDE4Li41NTNkYzdlNDkxZWUzNjEzNDcyMzc1NWQzMDkwZTU4
YzM3MGJkYTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9T
ZWFyY2hQb3B1cE1lbnVNYWMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9TZWFyY2hQb3B1cE1lbnVNYWMuaApAQCAtMzQsMTAgKzM0LDEwIEBAIHB1YmxpYzoKICAgICBT
ZWFyY2hQb3B1cE1lbnVNYWMoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50Kik7CiAgICAgflNlYXJj
aFBvcHVwTWVudU1hYygpOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpQb3B1cE1lbnUqIHBvcHVw
TWVudSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNo
PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
UG9wdXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFy
Y2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZWNl
bnRTZWFyY2g+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJy
aWRlOworICAgIGJvb2wgZW5hYmxlZCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlZlB0
cjxQb3B1cE1lbnVNYWM+IG1fcG9wdXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCmluZGV4IDdiNTg4
MDAwNGUzMzE3YTBhZThjNzllOTI2MzQyNWI2ODUxNzMxZjUuLjYwYmYxZDI1MGU2NjZmYTNjMTlm
Y2Y0ZTliOWZjYWU2MDM3YjI3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZlVGV4dENsaWVudC5oCkBAIC0zNiwxNyAr
MzYsMTcgQEAgY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50IDogcHVibGljIFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CiBwdWJsaWM6CiAgICAgV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KFdlYlZpZXcgKik7CiAgICAgdmlydHVhbCB+V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKICNpZiBVU0UoQVVUT0NPUlJFQ1RJT05fUEFORUwp
Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0
ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9m
UmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJl
cGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc21pc3NBbHRl
cm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNzaW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNzQWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6
OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRleHQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGRpc21pc3NBbHRlcm5hdGl2ZVNvb24o
V2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0
aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFVTRShESUNUQVRJ
T05fQUxURVJOQVRJVkVTKQotICAgIHZpcnR1YWwgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRp
dmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQs
IHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBkaWN0YXRpb25BbHRlcm5hdGl2ZXMo
dWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93RGljdGF0
aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZE
aWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQp
IG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50
NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNlbmRpZgogcHJpdmF0ZToKICNpZiBQ
TEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCmluZGV4IDgzYjFjMzJmYTZhZjA0NTE0MzBiZWI3MmE4ZDQ3MjcxZTZi
ZGUxMzQuLjhlMjBmZTM3NjU4NGIyMWE5Zjg1MjM2YzM0Mzc5OWM0NTFmYTJjMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBA
IC00MywxMjUgKzQzLDEyNSBAQCBjbGFzcyBXZWJDaHJvbWVDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6Q2hyb21lQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJDaHJvbWVDbGllbnQoV2ViVmlldyop
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNocm9tZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHBhZ2VSZWN0KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
RmxvYXRSZWN0IHBhZ2VSZWN0KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXMo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5mb2N1cygpIG92ZXJyaWRlOworICAgIHZv
aWQgZm9jdXMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVuZm9jdXMoKSBvdmVycmlkZTsKICAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgY2FuVGFrZUZvY3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdlYkNvcmU6OkZvY3VzRGlyZWN0
aW9uKSBvdmVycmlkZTsKKyAgICBib29sIGNhblRha2VGb2N1cyhXZWJDb3JlOjpGb2N1c0RpcmVj
dGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCB0YWtlRm9jdXMoV2ViQ29yZTo6Rm9jdXNEaXJlY3Rp
b24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGZvY3VzZWRFbGVtZW50Q2hhbmdlZChX
ZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzZWRGcmFt
ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvY3VzZWRFbGVt
ZW50Q2hhbmdlZChXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBmb2N1c2Vk
RnJhbWVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2hvdygpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlBhZ2UqIGNyZWF0ZVdpbmRvdyhXZWJDb3Jl
OjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYsIGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNob3coKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5S
dW5Nb2RhbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbCgpIG92ZXJyaWRl
OworICAgIGJvb2wgY2FuUnVuTW9kYWwoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJ1bk1vZGFsKCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhcnNWaXNpYmxlKGJvb2wpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB0b29sYmFyc1Zpc2libGUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAgICBib29sIHRvb2xi
YXJzVmlzaWJsZSgpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNi
YXJWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdGF0dXNiYXJWaXNp
YmxlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIG92ZXJy
aWRlOworICAgIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIG92ZXJyaWRlOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJsZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNjcm9s
bGJhcnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUo
KSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWVudWJhclZpc2libGUoYm9v
bCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG1lbnViYXJWaXNpYmxlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAgICBib29sIG1l
bnViYXJWaXNpYmxlKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldFJlc2l6
YWJsZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlc2l6YWJsZShib29sKSBvdmVycmlk
ZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShKU0M6Ok1lc3Nh
Z2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBXVEY6OlN0cmluZyYgbWVzc2FnZSwg
dW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBXVEY6OlN0
cmluZyYgc291cmNlVVJMKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUo
SlNDOjpNZXNzYWdlU291cmNlLCBKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29u
c3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBXVEY6OlN0cmluZyYgbWVzc2Fn
ZSwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICBib29sIGNhblJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbCgpIG92ZXJyaWRlOworICAgIGJvb2wgcnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKGNvbnN0IFdURjo6U3RyaW5nJiBtZXNzYWdlLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIG92ZXJyaWRlOworICAg
IHZvaWQgY2xvc2VXaW5kb3dTb29uKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVu
SmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViQ29yZTo6RnJh
bWUqLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBydW5K
YXZhU2NyaXB0UHJvbXB0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFdURjo6U3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdURjo6U3RyaW5nJiByZXN1bHQp
IG92ZXJyaWRlOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lKiwg
Y29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIHJ1bkphdmFTY3JpcHRDb25m
aXJtKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBi
b29sIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgV1RGOjpTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV1RGOjpTdHJpbmcm
IHJlc3VsdCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNJbW1lZGlhdGVJ
bnZhbGlkYXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KSBv
dmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzSW1tZWRpYXRlSW52YWxpZGF0aW9uKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRz
Rm9yU2xvd1Njcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3RUb1Njcm9sbCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJl
Y3QpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jv
b3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJD
b3JlOjpJbnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIGNv
bnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Oklu
dFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHJvb3RW
aWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290
Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNv
cmU6OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCBQbGF0Zm9ybVBh
Z2VDbGllbnQgcGxhdGZvcm1QYWdlQ2xpZW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNvbnRlbnRzU2l6ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJ
bnRvVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGxh
dGZvcm1QYWdlQ2xpZW50IHBsYXRmb3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgY29udGVudHNTaXplQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJzTW9kZURpZENoYW5nZSgpIGNvbnN0IG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1
dHRvbihXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24pIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmF2YWlsYWJsZVBsdWdp
bkJ1dHRvbkNsaWNrZWQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6OlJlbmRlckVtYmVkZGVk
T2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkhpdFRl
c3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKSBvdmVycmlkZTsKKyAgICB2b2lkIHNj
cm9sbGJhcnNNb2RlRGlkQ2hhbmdlKCkgY29uc3Qgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBzaG91
bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihXZWJDb3JlOjpSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24pIGNvbnN0IG92ZXJyaWRlOworICAg
IHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYkNvcmU6OkVsZW1lbnQqLCBX
ZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24p
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3Qg
V2ViQ29yZTo6SGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xUaXAoY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRvb2xUaXAoY29uc3Qg
V1RGOjpTdHJpbmcmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBwcmludChXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0
cmluZyYgZGF0YWJhc2VOYW1lLCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVk
ZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCB0b3RhbFNwYWNlTmVl
ZGVkKSBvdmVycmlkZTsKKyAgICB2b2lkIHByaW50KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBX
VEY6OlN0cmluZyYgZGF0YWJhc2VOYW1lLCBXZWJDb3JlOjpEYXRhYmFzZURldGFpbHMpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVhY2hlZE1heEFwcENhY2hlU2l6ZShpbnQ2NF90IHNwYWNlTmVlZGVk
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpIG92ZXJy
aWRlOwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIHZpcnR1YWwgdm9pZCBh
bm5vdGF0ZWRSZWdpb25zQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYW5ub3RhdGVkUmVn
aW9uc0NoYW5nZWQoKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHJ1bk9w
ZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6RmlsZUNob29zZXI+
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiwgV2ViQ29yZTo6RmlsZUljb25Mb2FkZXIqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJ1bk9wZW5QYW5lbChXZWJDb3JlOjpGcmFtZSosIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RmlsZUNob29zZXI+KSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyKikgb3ZlcnJpZGU7
CiAKICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3Qg
V2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnNvcihj
b25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnNvckhpZGRl
blVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29s
b3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoV2ViQ29yZTo6Q29sb3JDaG9vc2VyQ2xpZW50
KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6Q29sb3JDaG9vc2VyPiBjcmVhdGVDb2xvckNob29zZXIoV2ViQ29yZTo6Q29sb3JD
aG9vc2VyQ2xpZW50KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKICNlbmRpZgog
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSgpIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6OktleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlKCkgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIE5TUmVzcG9uZGVyICpmaXJzdFJlc3BvbmRlcigpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoTlNSZXNwb25kZXIgKikg
b3ZlcnJpZGU7CisgICAgTlNSZXNwb25kZXIgKmZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoTlNSZXNwb25kZXIgKikgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlU3VkZGVuVGVybWluYXRpb24oKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZVN1
ZGRlblRlcm1pbmF0aW9uKCkgb3ZlcnJpZGU7CiAgICAgCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKLSAgICB2aXJ0dWFsIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgbmVlZFRvdWNoRXZlbnRzKGJvb2wpIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNv
bnN0IFdURjo6U3RyaW5nJiBwYXRoLCBXVEY6OlN0cmluZyAmZ2VuZXJhdGVkRmlsZW5hbWUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2VuZXJhdGVSZXBsYWNlbWVudEZpbGUo
Y29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkUmVwbGFj
ZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoLCBXVEY6
OlN0cmluZyAmZ2VuZXJhdGVkRmlsZW5hbWUpIG92ZXJyaWRlOworICAgIFdURjo6U3RyaW5nIGdl
bmVyYXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFdURjo6U3RyaW5nJiBwYXRoKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29yZTo6Tm9kZSop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkQmx1cihjb25zdCBXZWJDb3Jl
OjpOb2RlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgV2ViQ29y
ZTo6Tm9kZSopIG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29y
ZTo6Tm9kZSopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50RW50aXJl
Q29udGVudHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFBhaW50RW50aXJlQ29u
dGVudHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hSb290R3Jh
cGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdl
YkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBhdHRhY2hSb290R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSos
IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGF0dGFjaFZpZXdP
dmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6
YXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNo
KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93
ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBDb21wb3NpdGluZ1Ry
aWdnZXJGbGFncyBhbGxvd2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3M+
KAogICAgICAgICAgICAgVGhyZWVEVHJhbnNmb3JtVHJpZ2dlciB8CkBAIC0xNzUsMzMgKzE3NSwz
MyBAQCBwdWJsaWM6CiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbnRlclZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jiwg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVu
dChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c1ZpZGVvRnVsbHNjcmVlbihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JW
aWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBl
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQmKSBvdmVycmlkZTsKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBXZWJD
b3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqKSBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQo
Y29uc3QgV2ViQ29yZTo6RWxlbWVudCosIGJvb2wgd2l0aEtleWJvYXJkKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJy
aWRlOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQq
KSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0ZW1Xcml0aW5n
RGlyZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNlbGVjdEl0
ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1
cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpTZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1l
bnVDbGllbnQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNlbGVjdEl0ZW1Xcml0aW5nRGly
ZWN0aW9uSXNOYXR1cmFsKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzZWxlY3RJdGVtQWxpZ25tZW50
Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNPcGVu
ZWRQb3B1cCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpQb3B1cE1lbnU+
IGNyZWF0ZVBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1
cE1lbnUoV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChib29sKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CiAK
ICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLSAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgd3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBW
ZWN0b3I8dWludDhfdD4mKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfQ09OVFJPTFMpCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VD
bGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxl
cGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBoYXNSZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKGJvb2wgaXNUZXh0T25seSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVTZWxlY3Rpb25TZXJ2aWNlQ2xpY2soV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb24mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgdGVsZXBob25lTnVt
YmVycywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1Jl
bGV2YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdCBvdmVycmlkZTsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50LmgKaW5kZXggM2MxMTBhZDJj
ODdkMWIyYmY1OTllMjcwYWQ3YTk2MjZkZWZlMGI2OS4uOGIyMDM2NGJiNjdhOTE3Mjc4YjI5NTNm
YzUxNzlhMTJkZDM2NmRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oCkBAIC00OCwyMiArNDgsMjIgQEAgcHVi
bGljOgogICAgIFdlYkNvbnRleHRNZW51Q2xpZW50KFdlYlZpZXcgKndlYlZpZXcpOwogICAgIHZp
cnR1YWwgfldlYkNvbnRleHRNZW51Q2xpZW50KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4
dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29u
c3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5E
aWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlz
U3BlYWtpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpT
dHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFNwZWFraW5nKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlYXJjaFdpdGhTcG90bGlnaHQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkb3du
bG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlYXJjaFdp
dGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvb2tV
cEluRGljdGlvbmFyeShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIGJvb2wgaXNTcGVh
a2luZygpIG92ZXJyaWRlOworICAgIHZvaWQgc3BlYWsoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN0b3BTcGVha2luZygpIG92ZXJyaWRlOworICAgIHZvaWQgc2VhcmNo
V2l0aFNwb3RsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KCkgb3Zl
cnJpZGU7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKICAgICAvLyBXZWJTaGFyaW5n
U2VydmljZVBpY2tlckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tl
cldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgc2NyZWVuUmVjdEZvckN1cnJl
bnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0oV2ViU2hhcmluZ1NlcnZpY2VQaWNrZXJDb250cm9s
bGVyICYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPE5TSW1hZ2U+IGltYWdlRm9y
Q3VycmVudFNoYXJpbmdTZXJ2aWNlUGlja2VySXRlbShXZWJTaGFyaW5nU2VydmljZVBpY2tlckNv
bnRyb2xsZXIgJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxC
ZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7
CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHNjcmVlblJlY3RGb3JDdXJyZW50U2hhcmluZ1NlcnZp
Y2VQaWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlk
ZTsKKyAgICBSZXRhaW5QdHI8TlNJbWFnZT4gaW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQ
aWNrZXJJdGVtKFdlYlNoYXJpbmdTZXJ2aWNlUGlja2VyQ29udHJvbGxlciAmKSBvdmVycmlkZTsK
ICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgKaW5kZXggNjYzYThi
ZTA4NGI3ZTc0MjIwMjRlMWYxYWZjZmEwMzhkZmM4ZTA5YS4uMzQ5N2QwNTc1MmE2M2U0OWQ2N2U4
ZjcyZWU1NDAwNjJmYzBmODEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oCkBAIC00Mywx
MSArNDMsMTEgQEAgcHVibGljOgogICAgIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KFdlYlZp
ZXcqKTsKIAogICAgIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50IG1ldGhvZHMKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlckRl
c3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRp
bmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOworICAgIFdl
YkNvcmU6OkRldmljZU9yaWVudGF0aW9uRGF0YSogbGFzdE9yaWVudGF0aW9uKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBkZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBpZDxXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
PiBnZXRQcm92aWRlcigpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRHJhZ0NsaWVudC5oCmluZGV4IGJmMGEyODRmZWQ5N2EzZThjZGMyMDE1MzUyNDQw
M2Q2YmY1ZDc4MGMuLjYxOGUxM2U3ZDg5NGVjYmNmMzc3ZDhhOTQ3YzNjODNkY2NmNzkzOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmgK
QEAgLTMyLDE1ICszMiwxNSBAQAogY2xhc3MgV2ViRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3Jl
OjpEcmFnQ2xpZW50IHsKIHB1YmxpYzoKICAgICBXZWJEcmFnQ2xpZW50KFdlYlZpZXcqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1Nv
dXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpEYXRhVHJhbnNm
ZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlv
biBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2VSZWYsIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdl
YkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZykgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxQZXJm
b3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYpIG92ZXJyaWRlOworICAgIFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhXZWJDb3JlOjpE
cmFnRGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBv
dmVycmlkZTsKKyAgICBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uIGRyYWdTb3VyY2VBY3Rpb25N
YXNrRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHdpbmRvd1BvaW50KSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJDb3JlOjpEcmFnSW1hZ2VSZWYsIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBkcmFnUG9zLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3Ms
IFdlYkNvcmU6OkRhdGFUcmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZykg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSopIG92
ZXJyaWRlOworICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogI2VuZGlmCiBw
cml2YXRlOgogICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggYzcwY2I5NzQwYmRmY2Rh
ZDhmYmIyZGQ2NTBhZjljNzhiOGVjZjc5My4uOWVkMGFlMDE0ZTAzYmM0ODZlODE3YjkxOTE1ZTFi
OWQwMGE4MTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTUxLDEyMyArNTEsMTIzIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZENoZWNrU3VjY2VlZChpbnQgc2VxdWVuY2UsIE5TQXJyYXkgKnJlc3VsdHMpOwogCiBwcml2
YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUdyYW1t
YXJDaGVja2luZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVDb250
aW51b3VzU3BlbGxDaGVja2luZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgaW50IHNwZWxsQ2hl
Y2tlckRvY3VtZW50VGFnKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRvZ2dsZUdyYW1tYXJDaGVja2luZygpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNraW5nKCkgb3ZlcnJpZGU7Cisg
ICAgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIGJv
b2wgc21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1NlbGVj
dFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREZWxldGVSYW5nZShXZWJDb3JlOjpSYW5nZSopIG92ZXJyaWRlOworICAgIGJvb2wg
c2hvdWxkRGVsZXRlUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5kRWRpdGluZyhXZWJDb3JlOjpSYW5nZSopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUqLCBXZWJD
b3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIHNob3VsZEluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UmFu
Z2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFuZ2Us
IFdlYkNvcmU6OlJhbmdlKiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wgc3RpbGxT
ZWxlY3RpbmcpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkQmVnaW5FZGl0aW5nKFdlYkNvcmU6
OlJhbmdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRFbmRFZGl0aW5nKFdlYkNvcmU6OlJh
bmdlKikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRJbnNlcnROb2RlKFdlYkNvcmU6Ok5vZGUq
LCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlvbikgb3ZlcnJpZGU7
CisgICAgYm9vbCBzaG91bGRJbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlJhbmdl
KiwgV2ViQ29yZTo6RWRpdG9ySW5zZXJ0QWN0aW9uKSBvdmVycmlkZTsKKyAgICBib29sIHNob3Vs
ZENoYW5nZVNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqIGZyb21SYW5nZSwgV2ViQ29yZTo6
UmFuZ2UqIHRvUmFuZ2UsIFdlYkNvcmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXBwbHlTdHlsZShXZWJDb3JlOjpT
dHlsZVByb3BlcnRpZXMqLCBXZWJDb3JlOjpSYW5nZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRBcHBseVN0eWxlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxl
KFdlYkNvcmU6OlN0eWxlUHJvcGVydGllcyosIFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRBcHBseVN0eWxlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkTW92ZVJhbmdlQWZ0ZXJEZWxldGUoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpSYW5nZSog
cmFuZ2VUb0JlUmVwbGFjZWQpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkTW92ZVJhbmdlQWZ0
ZXJEZWxldGUoV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpSYW5nZSogcmFuZ2VUb0JlUmVwbGFj
ZWQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRWRpdGluZygpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHdpbGxXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChXZWJDb3JlOjpSYW5nZSop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2Fy
ZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZv
clJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywg
VmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkQmVnaW5FZGl0aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsV3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFdyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRDbGllbnRQYXN0ZWJv
YXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9h
cmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+PiYgcGFzdGVib2Fy
ZERhdGEpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBOU1N0cmluZyAqdXNlclZpc2libGVTdHJp
bmcoTlNVUkwgKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpEb2N1bWVudEZyYWdt
ZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3Ry
aW5nICosIFZlY3RvcjwgUmVmUHRyPFdlYkNvcmU6OkFyY2hpdmVSZXNvdXJjZT4+Jikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEluc2VydGlvblBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOU1VSTCAqY2Fub25pY2FsaXplVVJMKE5TVVJMICop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTlNVUkwgKmNhbm9uaWNhbGl6ZVVSTFN0cmluZyhOU1N0
cmluZyAqKSBvdmVycmlkZTsKKyAgICBOU1N0cmluZyAqdXNlclZpc2libGVTdHJpbmcoTlNVUkwg
Kikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFn
bWVudEZyb21BdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqLCBWZWN0b3I8IFJl
ZlB0cjxXZWJDb3JlOjpBcmNoaXZlUmVzb3VyY2U+PiYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
SW5zZXJ0aW9uUGFzdGVib2FyZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBOU1VSTCAq
Y2Fub25pY2FsaXplVVJMKE5TVVJMICopIG92ZXJyaWRlOworICAgIE5TVVJMICpjYW5vbmljYWxp
emVVUkxTdHJpbmcoTlNTdHJpbmcgKikgb3ZlcnJpZGU7CiAgICAgCiAjaWYgVVNFKEFQUEtJVCkK
LSAgICB2aXJ0dWFsIHZvaWQgdXBwZXJjYXNlV29yZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBsb3dlcmNhc2VXb3JkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhcGl0YWxp
emVXb3JkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBsb3dlcmNhc2VXb3JkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjYXBpdGFsaXplV29y
ZCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1F
TlQpCi0gICAgdmlydHVhbCB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3Vic3RpdHV0aW9uc1BhbmVsSXNTaG93aW5nKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFi
bGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vi
c3RpdHV0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljTGlua0Rl
dGVjdGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21h
dGljTGlua0RldGVjdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRp
Y0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRv
Z2dsZUF1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93U3Vic3RpdHV0aW9uc1BhbmVsKGJvb2wgc2hvdykg
b3ZlcnJpZGU7CisgICAgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmcoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgdG9nZ2xlQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb24oKSBvdmVycmlkZTsKKyAgICBib29s
IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRv
Z2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb24oKSBvdmVycmlkZTsKKyAgICBib29sIGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRvZ2dsZUF1
dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb24oKSBvdmVycmlkZTsKKyAgICBib29sIGlzQXV0b21hdGlj
VGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xlQXV0b21h
dGljVGV4dFJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0F1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRvZ2dsZUF1dG9tYXRp
Y1NwZWxsaW5nQ29ycmVjdGlvbigpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIFRl
eHRDaGVja2VyQ2xpZW50KiB0ZXh0Q2hlY2tlcigpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0K
KyAgICBUZXh0Q2hlY2tlckNsaWVudCogdGV4dENoZWNrZXIoKSBvdmVycmlkZSB7IHJldHVybiB0
aGlzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24oV2ViQ29y
ZTo6RnJhbWUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2VsZWN0aW9u
QW5kVXBkYXRlTGF5b3V0KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRl
ZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXNwb25k
VG9DaGFuZ2VkQ29udGVudHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRT
ZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENoYW5nZVNl
bGVjdGlvbkFuZFVwZGF0ZUxheW91dCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlzY2FyZGVk
Q29tcG9zaXRpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6
OlVuZG9TdGVwPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVy
YXRpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8
V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAo
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJV
bmRvUmVkb09wZXJhdGlvbnMoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5Db3B5
Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBjYW5QYXN0ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZh
bHVlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuVW5kbygpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5SZWRvKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0
IG92ZXJyaWRlOworICAgIGJvb2wgY2FuUGFzdGUoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1
bHRWYWx1ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5VbmRvKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVh
bCB2b2lkIHVuZG8oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVkbygpIG92ZXJyaWRl
OworICAgIHZvaWQgdW5kbygpIG92ZXJyaWRlOworICAgIHZvaWQgcmVkbygpIG92ZXJyaWRlOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJv
YXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRNZXRob2RL
ZXlkb3duKFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRs
ZUtleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopIG92ZXJyaWRlOworICAgIHZv
aWQgaGFuZGxlSW5wdXRNZXRob2RLZXlkb3duKFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViQ29y
ZTo6RWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRFbmRF
ZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4
dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KFdlYkNvcmU6OkVsZW1lbnQq
LCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRl
eHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFu
Z2VkKCkgb3ZlcnJpZGUgeyB9OworICAgIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdl
YkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRp
bmcoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dERpZENoYW5nZUlu
VGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICBib29sIGRvVGV4dEZp
ZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29yZTo6S2V5Ym9hcmRF
dmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChX
ZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0
QXJlYShXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBvdmVyZmxvd1Njcm9s
bFBvc2l0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnREZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90
aWZpY2F0aW9ucygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wRGVsYXlpbmdBbmRD
b2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgd3JpdGVEYXRhVG9QYXN0ZWJvYXJkKE5TRGljdGlvbmFyeSopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgTlNBcnJheSogc3VwcG9ydGVkUGFzdGVib2FyZFR5cGVzRm9yQ3VycmVudFNl
bGVjdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTlNBcnJheSogcmVhZERhdGFGcm9tUGFz
dGVib2FyZChOU1N0cmluZyogdHlwZSwgaW50IGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzUmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6RG9jdW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21EZWxlZ2F0ZShpbnQg
aW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3Jtc1R3b1N0ZXBQYXN0ZShX
ZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgcGFz
dGVib2FyZENoYW5nZUNvdW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERlbGF5aW5nQW5k
Q29hbGVzY2luZ0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdG9wRGVsYXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHdyaXRlRGF0YVRvUGFzdGVib2FyZChOU0RpY3Rpb25hcnkqKSBv
dmVycmlkZTsKKyAgICBOU0FycmF5KiBzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50
U2VsZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgTlNBcnJheSogcmVhZERhdGFGcm9tUGFzdGVib2Fy
ZChOU1N0cmluZyogdHlwZSwgaW50IGluZGV4KSBvdmVycmlkZTsKKyAgICBib29sIGhhc1JpY2hs
eUVkaXRhYmxlU2VsZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9hcmRJdGVt
c0NvdW50KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCogZG9jdW1l
bnRGcmFnbWVudEZyb21EZWxlZ2F0ZShpbnQgaW5kZXgpIG92ZXJyaWRlOworICAgIGJvb2wgcGVy
Zm9ybXNUd29TdGVwUGFzdGUoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCopIG92ZXJyaWRlOwor
ICAgIGludCBwYXN0ZWJvYXJkQ2hhbmdlQ291bnQoKSBvdmVycmlkZTsKICNlbmRpZgogICAgIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgaWdub3JlV29yZEluU3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVs
bGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRH
cmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBjaGVja1RleHRPZlBhcmFn
cmFwaChTdHJpbmdWaWV3LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5
cGVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFt
bWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVk
V29yZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1NwZWxs
aW5nVUkoYm9vbCBzaG93KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3BlbGxpbmdVSUlz
U2hvd2luZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRHdWVzc2VzRm9yV29yZChj
b25zdCBTdHJpbmcmIHdvcmQsIGNvbnN0IFN0cmluZyYgY29udGV4dCwgVmVjdG9yPFN0cmluZz4m
IGd1ZXNzZXMpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhv
ZFN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUo
Ym9vbCBlbmFibGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcoUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXF1ZXN0Pikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihXZWJD
b3JlOjpUZXh0Q2hlY2tpbmdUeXBlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGlnbm9yZVdv
cmRJblNwZWxsRG9jdW1lbnQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBsZWFy
bldvcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGVja1NwZWxsaW5nT2ZT
dHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxs
aW5nTGVuZ3RoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9u
Rm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjaGVj
a0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFp
bD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSBvdmVy
cmlkZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBjaGVja1RleHRP
ZlBhcmFncmFwaChTdHJpbmdWaWV3LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVj
a2luZ1R5cGVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1h
clN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJikgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93KSBv
dmVycmlkZTsKKyAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHdp
bGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJbnB1dE1ldGhv
ZFN0YXRlKGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdP
ZlN0cmluZyhQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3Q+KSBvdmVycmlk
ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEyMDAKICAgICB2b2lkIHJlcXVlc3RDYW5kaWRhdGVzRm9yU2VsZWN0aW9uKGNvbnN0
IFdlYkNvcmU6OlZpc2libGVTZWxlY3Rpb24mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDY2YmMyOWQ4
N2NmZWU0M2I3YTQ1NzIwZmJmYWI5ZjA2YjY2MjgwOTkuLjhmOGY3ZWZmMzlmZDA1MDZkZGVlOGE5
ZmMxZTUwNzI4ZjYzYmI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTgsMTk0ICs1OCwxOTQgQEAg
cHVibGljOgogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViRnJh
bWUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0
cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IG92
ZXJyaWRlOyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKKyAgICB2b2lkIGZyYW1lTG9hZGVyRGVz
dHJveWVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3Qgb3ZlcnJpZGU7
IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0gICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNl
bnRhdGlvbihXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNIVE1MVmlldygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNI
VE1MVmlldygpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IGJvb2wgZm9yY2VMYXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBmb3JjZUxheW91dE9uUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZTsKICNlbmRp
ZgotICAgIHZpcnR1YWwgdm9pZCBmb3JjZUxheW91dEZvck5vbkhUTUwoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2
b2lkIHNldENvcGllc09uU2Nyb2xsKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb3BpZXNPblNj
cm9sbCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpIG92ZXJy
aWRlOworICAgIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGV0YWNoZWRGcm9tUGFyZW50MygpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbnZl
cnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIFdl
YkNvcmU6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29y
ZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXNz
aWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IG92ZXJyaWRlOworICAgIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QodW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxT
dG9yYWdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElPTl9T
UEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsK
KyAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjb25uZWN0aW9uUHJvcGVy
dGllcyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikg
b3ZlcnJpZGU7CisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3Bl
cnRpZXMoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
IG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
UmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUNvbnRlbnRMZW5ndGgo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGludCBk
YXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqZGV0ZWN0aW9uUmVzdWx0cykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERhdGFEZXRlY3Rpb24oTlNBcnJheSAqZGV0
ZWN0aW9uUmVzdWx0cykgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCBOU0NhY2hlZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxS
ZXNwb25zZSopIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGlu
UGFnZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNl
U3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UG9wU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisKKyAgICBOU0NhY2hl
ZFVSTFJlc3BvbnNlKiB3aWxsQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgTlNDYWNoZWRVUkxSZXNwb25zZSopIGNvbnN0IG92
ZXJyaWRlOworCisgICAgdm9pZCBkaXNwYXRjaERpZERpc3BhdGNoT25sb2FkRXZlbnRzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRS
ZWRpcmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KGNvbnN0IFdlYkNvcmU6OlVSTCYsIGRvdWJsZSBpbnRlcnZhbCwgZG91YmxlIGZpcmVE
YXRlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2Uo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKSBvdmVy
cmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNv
cmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkTGF5b3V0KFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50
TG9hZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVz
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6RnJhbWUqIGRpc3BhdGNoQ3JlYXRl
UGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkZyYW1lKiBk
aXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlzcGF0Y2hTaG93KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJh
bWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1l
UG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
Rm9ybVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNhbmNlbFBvbGljeUNoZWNrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZVBvbGlj
eUZ1bmN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNv
bnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24p
IG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZy
YW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2so
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJt
aXRFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9y
bVN0YXRlPiwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3Rh
dGU+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oUGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRv
Y3VtZW50RXJyb3IoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGRpc3BhdGNoRGlkTG9hZFJl
c291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgcmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNYWluRG9j
dW1lbnRFcnJvcihXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICBib29sIGRpc3BhdGNoRGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGludCBsZW5n
dGgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVh
ZHkoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJv
b2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3Ry
aW5nKCkpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmcoKSkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENo
YW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGUgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBp
bnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFs
SGlzdG9yeSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5
UmVkaXJlY3RMaW5rcygpIG92ZXJyaWRlOworICAgIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
ZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5SXRlbUZvclBhZ2UoKSBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRl
bSopIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeUl0ZW1Gb3JQ
YWdlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wg
ZGlkQmxvY2tFbnRpcmVQYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRp
cmVQYWdlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBj
YW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVw
dGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBv
dmVycmlkZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9j
a2VyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNh
bm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RF
eGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBm
aWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQo
Y29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBz
YXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJh
bWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVQbGF0Zm9y
bURhdGFUb0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7CisgICAg
dm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkRnJhbWUoV2ViQ29yZTo6Q2FjaGVk
RnJhbWUqKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlc3RvcmVGcmFtZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZXN0b3JlRnJhbWVIaWVyYXJjaHlGb3JDYWNoZWRGcmFtZSgpIG92ZXJyaWRlOwogI2Vu
ZGlmCi0gICAgdmlydHVhbCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTYXZlVG9QYWdlQ2FjaGUoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVzdG9y
ZUZyb21QYWdlQ2FjaGUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZEJlY29tZUZyYW1lc2V0KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRCZWNv
bWVGcmFtZXNldChib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVS
ZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgV1RGOjpTdHJpbmcmIE1JTUVU
eXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNI
VE1MKGNvbnN0IFdURjo6U3RyaW5nJiBNSU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiBVUkxTY2hlbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgV1RGOjpTdHJpbmcmIFVSTFNjaGVt
ZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiBNSU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ym9vbCBjYW5TaG93TUlNRVR5cGVBc0hUTUwoY29uc3QgV1RGOjpTdHJpbmcmIE1JTUVUeXBlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1l
KGNvbnN0IFdURjo6U3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0IG92ZXJyaWRlOworICAgIFdURjo6
U3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFdURjo6U3RyaW5nJiBV
UkxTY2hlbWUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGZyYW1lTG9hZENv
bXBsZXRlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVt
KFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3Rv
cmVWaWV3U3RhdGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVGb3JEYXRhU291cmNlUmVwbGFjZW1lbnQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlk
ZSB7IH0KKyAgICB2b2lkIGZyYW1lTG9hZENvbXBsZXRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQg
c2F2ZVZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRlOworICAg
IHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgcHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOwor
ICAgIFJlZjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURh
dGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6
OlVSTCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
V2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVS
TCYsIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1l
bnQqLAorICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVy
RWxlbWVudCosCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxv
d3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsCisgICAgUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlUGx1Z2luKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFZlY3RvcjxX
VEY6OlN0cmluZz4mLAogICAgICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwgY29uc3Qg
V1RGOjpTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQ
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdldCopIG92ZXJyaWRlOworICAg
IHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQp
IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZh
QXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0
RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKKyAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJh
c2VVUkwsCiAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBvdmVycmlkZTsKICAgICAKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVjdENvbnRlbnRUeXBlKGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7
CisgICAgV1RGOjpTdHJpbmcgb3ZlcnJpZGVNZWRpYVR5cGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICAKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQo
V2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERp
ZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9v
bCBsaXN0ZW4pIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9u
KGJvb2wgbGlzdGVuKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkTG9hZE1lZGlhRWxlbWVudFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZExvYWRNZWRpYUVsZW1lbnRVUkwoY29uc3QgV2Vi
Q29yZTo6VVJMJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUmVtb3Rl
QVhPYmplY3RSZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlIHsgcmV0dXJu
IDA7IH0KKyAgICBSZW1vdGVBWE9iamVjdFJlZiBhY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkg
b3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIAogICAgIFJldGFpblB0cjxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyPiBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rp
b24sIE5TVVJMICphcHBMaW5rVVJMID0gbmlsKTsKIAogICAgIE5TRGljdGlvbmFyeSAqYWN0aW9u
RGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGb3JtU3RhdGU+KSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ2Fj
aGVQYWdlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpIG92ZXJyaWRlOworICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKSBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FVVE9DT01QTEVURSkKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0ZShQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4pIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlkUmVxdWVzdEF1dG9jb21wbGV0
ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIG92ZXJyaWRlIHsgfQogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpV
UkwmKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29u
c3QgV2ViQ29yZTo6VVJMJikgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxlKFdlYkNvcmU6OlF1aWNr
TG9va0hhbmRsZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ3JlYXRlUXVpY2tMb29rSGFuZGxl
KFdlYkNvcmU6OlF1aWNrTG9va0hhbmRsZSYpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ09OVEVOVF9GSUxURVJJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggMzRjMTI0
MjA3MWJhMzI0ZWM4OWIxMjljMTc0YTNjMzM4NTRkMTU1Ni4uOWIzYzMwOWE2MWI4ZGMzMTdjNzQw
ZjQ4NjFmYTkwNjliMjcyOWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDUsMTIg
KzQ1LDEyIEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9u
QXVkaXREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc291cmNlQXBw
bGljYXRpb25JZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGxvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBTY2hlZHVs
ZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlvbklkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykdlb2xvY2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IGE4NGY0ZjQwYjY3NWQ1YmQ1Y2Y5ZDU5NGVmMmM3
NGQxZGE2MWYwMTIuLjRiYjJjZGI3NDA3MjFhY2FjMzFlZDE4OWI2MTNkNTdiNWFlNjAxYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9u
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9j
YXRpb25DbGllbnQuaApAQCAtMzcsMjAgKzM3LDIwIEBAIHB1YmxpYzoKICAgICBXZWJHZW9sb2Nh
dGlvbkNsaWVudChXZWJWaWV3ICopOwogICAgIFdlYlZpZXcgKndlYlZpZXcoKSB7IHJldHVybiBt
X3dlYlZpZXc7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvbkRlc3Ryb3llZCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOworICAgIHZvaWQgZ2VvbG9jYXRp
b25EZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykK
ICAgICAvLyBGSVhNRTogdW5pZnkgdGhpcyB3aXRoIE1hYyBvbiBPcGVuU291cmNlLgotICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAjZWxzZQotICAgIHZpcnR1
YWwgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgb3Zl
cnJpZGU7CisgICAgV2ViQ29yZTo6R2VvbG9jYXRpb25Qb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6
R2VvbG9jYXRpb24qKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGVybWlzc2lv
blJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZSB7IH07CisgICAgdm9pZCBy
ZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpHZW9sb2NhdGlvbiopIG92ZXJyaWRlOworICAgIHZv
aWQgY2FuY2VsUGVybWlzc2lvblJlcXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlk
ZSB7IH07CiAKIHByaXZhdGU6CiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJY29uRGF0YWJhc2VDbGllbnQu
aAppbmRleCA4OWYzNTExMWY1NDczOTRjM2NiYTdjMDBiNzRlNTVjMTZiNDgzNWU2Li45MDdhZDI1
ZWU0MTY1NjI1MzdkNjkxZGZmOTY4YTZhMTEyMzMzYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJY29uRGF0YWJhc2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJY29uRGF0YWJhc2VDbGllbnQuaApAQCAt
MzEsOSArMzEsOSBAQAogCiBjbGFzcyBXZWJJY29uRGF0YWJhc2VDbGllbnQgOiBwdWJsaWMgV2Vi
Q29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlQWxsSWNvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkSW1wb3J0SWNv
blVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEltcG9ydEljb25EYXRhRm9yUGFnZVVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFVSTEltcG9ydCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVtb3ZlQWxsSWNvbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEltcG9y
dEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
SW1wb3J0SWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRGaW5pc2hVUkxJbXBvcnQoKSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCmluZGV4IDUx
YWVhMjY1NTMwNDg2YzE4YzA4MTRlYjNmYWQ1MTIyZmRhZTczOTUuLjZkZTljMzlmNmE1NDliM2I5
MDUxNTc4MDJhZmRkMTAwZGJhNzY3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCkBAIC01MywyOCArNTMsMjggQEAg
Y2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dCwgcHVibGljIEluc3BlY3Rvcjo6RnIKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJJbnNwZWN0
b3JDbGllbnQoV2ViVmlldyAqaW5zcGVjdGVkV2ViVmlldyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
aW5zcGVjdGVkUGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgaW5zcGVjdGVkUGFn
ZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCogb3BlbkxvY2FsRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUq
KSBvdmVycmlkZTsKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCogb3BlbkxvY2FsRnJv
bnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopIG92ZXJyaWRlOworICAgIHZvaWQg
YnJpbmdGcm9udGVuZFRvRnJvbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlc2l6ZU1haW5G
cmFtZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGhpZ2hs
aWdodCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBoaWdobGlnaHQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGVIaWdobGln
aHQoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d0luc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUlu
c3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dJbnNwZWN0b3JJbmRp
Y2F0aW9uKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIG92ZXJyaWRlc1Nob3dQYWludFJlY3RzKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFp
bnRSZWN0cyhib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1BhaW50UmVjdChj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBib29sIG92ZXJyaWRlc1No
b3dQYWludFJlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQg
c2V0U2hvd1BhaW50UmVjdHMoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93UGFpbnRSZWN0
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgQ29ubmVjdGlvblR5cGUgY29ubmVjdGlvblR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBDb25uZWN0aW9uVHlwZTo6TG9jYWw7IH0KKyAgICBib29sIHNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0
aW9uVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENvbm5lY3Rpb25UeXBlOjpMb2NhbDsg
fQogCiAgICAgYm9vbCBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgpOwogICAgIHZvaWQgc2V0SW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWQoYm9vbCk7CkBAIC0xMDUsMjkgKzEwNSwyOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wpOwogICAgIGJvb2wgY2Fu
QXR0YWNoKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGZyb250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c3RhcnRXaW5kb3dEcmFnKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBvdmVy
cmlkZTsKKyAgICBTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGJyaW5nVG9Gcm9udCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVdpbmRvdygpIG92ZXJyaWRlOworICAgIHZvaWQgYnJpbmdUb0Zyb250KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjbG9zZVdpbmRvdygpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGF0
dGFjaFdpbmRvdyhEb2NrU2lkZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaFdp
bmRvdygpIG92ZXJyaWRlOworICAgIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRldGFjaFdpbmRvdygpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQgaGVpZ2h0KSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIGhlaWdo
dCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25z
dCBTdHJpbmcmIG5ld1VSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYgbmV3VVJMKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2F2ZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2F2ZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzLCBib29sIGJh
c2U2NEVuY29kZWQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgY29udGVudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5T
YXZlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc2F2ZShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGZvcmNlU2F2ZUFzLCBib29sIGJh
c2U2NEVuY29kZWQpIG92ZXJyaWRlOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpIG92ZXJyaWRlOwogCiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBXZWJWaWV3ICptX2luc3BlY3RlZFdlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDJh
MTk4OGJkMjc4OTk4OTczODliMWNiYzIyMGU2M2I0MTJjNWNhYjMuLjNkNWE0NWEyZmMwYTUyZDI4
Y2MxMzk5YmM1ZDcxMDJmYzNiN2RjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC01NCwyMCArNTQs
MjAgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIHNob3co
V2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNl
bChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNvcmU6
Ok5vdGlmaWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG93KFdlYkNvcmU6Ok5v
dGlmaWNhdGlvbiopIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbiopIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmaWNhdGlvbk9i
amVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlkZTsKKyAgICB2b2lk
IG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKICNpZiBFTkFCTEUo
TEVHQUNZX05PVElGSUNBVElPTlMpCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9u
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlZv
aWRDYWxsYmFjaz4pIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Vm9pZENhbGxi
YWNrPikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNr
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2s+KSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxS
ZXF1ZXN0c0ZvclBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nUGVybWlzc2lvblJlcXVlc3Rz
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1p
c3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOworICAgIHZv
aWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSBvdmVycmlkZSB7IH0KKyAgICBib29sIGhhc1BlbmRpbmdQZXJtaXNzaW9uUmVxdWVz
dHMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOworICAg
IFdlYkNvcmU6Ok5vdGlmaWNhdGlvbkNsaWVudDo6UGVybWlzc2lvbiBjaGVja1Blcm1pc3Npb24o
V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpIHx8IEVOQUJMRShMRUdBQ1lfTk9USUZJQ0FUSU9OUykKICAgICB2b2lk
IHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJO
b3RpZmljYXRpb25Qb2xpY3lMaXN0ZW5lciAqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggNWM4OTU2
ZGI2YjQ5MTVhNGFhNTA0ZWQ0M2NjN2FiNWQ3ODVjOTJiMS4uMDI5Yjk1YjgzNGFkYjFmYzM5ZmJi
MGVhODBhMGNhY2YzNWM2Zjk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTQzLDU2ICs0Myw1NiBA
QCBwcml2YXRlOgogICAgIFdlYlBsYXRmb3JtU3RyYXRlZ2llcygpOwogICAgIAogICAgIC8vIFdl
YkNvcmU6OlBsYXRmb3JtU3RyYXRlZ2llcwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UGFzdGVib2FyZFN0cmF0ZWd5KiBjcmVhdGVQYXN0ZWJvYXJk
U3RyYXRlZ3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5
KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
QmxvYlJlZ2lzdHJ5KiBjcmVhdGVCbG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKKyAgICBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kqIGNyZWF0ZUNvb2tpZXNTdHJhdGVneSgpIG92ZXJyaWRlOworICAg
IFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5KiBjcmVhdGVMb2FkZXJTdHJhdGVneSgpIG92ZXJyaWRl
OworICAgIFdlYkNvcmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0
ZWd5KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UGx1Z2luU3RyYXRlZ3kqIGNyZWF0ZVBsdWdp
blN0cmF0ZWd5KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5KiBjcmVhdGVC
bG9iUmVnaXN0cnkoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVn
eQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwor
ICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
IG92ZXJyaWRlOworICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYpIG92ZXJy
aWRlOwogCiAKICAgICAvLyBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneQotICAgIHZpcnR1YWwgdm9p
ZCByZWZyZXNoUGx1Z2lucygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQbHVnaW5J
bmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oY29uc3Qg
V2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVmcmVzaFBsdWdpbnMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFBsdWdpbklu
Zm8oY29uc3QgV2ViQ29yZTo6UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0V2ViVmlzaWJsZVBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6
UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRlOwogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeShXZWJD
b3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQbHVnaW5D
bGllbnRQb2xpY2llcygpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBv
bGljeShXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5LCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyUGx1Z2lu
Q2xpZW50UG9saWNpZXMoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgLy8gV2ViQ29yZTo6UGFz
dGVib2FyZFN0cmF0ZWd5CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCB3cml0
ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkV2ViQ29udGVudCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBXZWJDb3JlOjpQ
YXN0ZWJvYXJkSW1hZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVUb1Bhc3Rl
Ym9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBpbnQgZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFkQnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50
IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFdlYkNvcmU6OlVSTCByZWFkVVJMRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGxvbmcgY2hhbmdl
Q291bnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB3cml0ZVRvUGFz
dGVib2FyZChjb25zdCBXZWJDb3JlOjpQYXN0ZWJvYXJkSW1hZ2UmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGludCBnZXRQYXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92
ZXJyaWRlOworICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gcmVhZEJ1ZmZlckZyb21QYXN0ZWJvYXJkKGludCBpbmRleCwg
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6VVJM
IHJlYWRVUkxGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZFR5cGUpIG92ZXJyaWRlOworICAgIGxvbmcgY2hhbmdlQ291bnQoKSBvdmVycmlkZTsKICNlbmRp
ZgotICAgIHZpcnR1YWwgdm9pZCBnZXRUeXBlcyhWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGJ1ZmZlckZvclR5cGUoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4mIHBhdGhuYW1l
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGxvbmcgY2hhbmdlQ291bnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpVUkwgdXJsKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0VHlwZXMoVmVj
dG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldFBhdGhuYW1lc0ZvclR5cGUoVmVjdG9yPFN0cmluZz4m
IHBhdGhuYW1lcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHN0cmluZ0ZvclR5cGUoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3Zl
cnJpZGU7CisgICAgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICBTdHJpbmcgdW5pcXVlTmFtZSgpIG92ZXJyaWRlOworICAgIFdlYkNv
cmU6OkNvbG9yIGNvbG9yKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIGxvbmcgYWRkVHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBh
c3RlYm9hcmRUeXBlcywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJk
VHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgbG9uZyBjb3B5KGNvbnN0IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYg
dG9QYXN0ZWJvYXJkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0QnVmZmVyRm9yVHlw
ZShQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgbG9uZyBzZXRQYXRobmFtZXNGb3JUeXBlKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSkgb3ZlcnJpZGU7CisgICAgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFzdGVib2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
KyAgICBsb25nIHNldFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0ZWJvYXJkVHlwZXMs
IGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIGxvbmcgY29weShj
b25zdCBTdHJpbmcmIGZyb21QYXN0ZWJvYXJkLCBjb25zdCBTdHJpbmcmIHRvUGFzdGVib2FyZCkg
b3ZlcnJpZGU7CisgICAgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBhc3NSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgbG9uZyBzZXRQYXRobmFtZXNGb3JUeXBl
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgbG9uZyBzZXRTdHJpbmdG
b3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwogfTsKIAogI2VuZGlmIC8vIFdlYlBs
YXRmb3JtU3RyYXRlZ2llc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCmluZGV4IGViNzQzNTllYTRk
OGYyN2RiMmQ3ZDA0YTUyYjliMWIxYzY4OTMxZmQuLjZmNmY3ZGZmM2IwNjhlYjVhNzFlZWQ1MWIz
ZWUyYzdjMzA3YWIwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCkBAIC0zNSwxNiArMzUsMTYg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChXZWJWaWV3
Kik7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHByb2dyZXNzVHJhY2tlckRlc3Ryb3ll
ZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvZ3Jlc3NUcmFja2VyRGVzdHJveWVkKCkgb3ZlcnJp
ZGU7CiAgICAgCiAjaWYgIVBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5n
ZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENoYW5nZUVzdGltYXRlZFByb2dy
ZXNzKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc1N0YXJ0
ZWQoV2ViQ29yZTo6RnJhbWUmIG9yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lJiBv
cmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcm9n
cmVzc0ZpbmlzaGVkKFdlYkNvcmU6OkZyYW1lJiBvcmlnaW5hdGluZ1Byb2dyZXNzRnJhbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgcHJvZ3Jlc3NTdGFydGVkKFdlYkNvcmU6OkZyYW1lJiBvcmlnaW5h
dGluZ1Byb2dyZXNzRnJhbWUpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvZ3Jlc3NFc3RpbWF0ZUNo
YW5nZWQoV2ViQ29yZTo6RnJhbWUmIG9yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBwcm9ncmVzc0ZpbmlzaGVkKFdlYkNvcmU6OkZyYW1lJiBvcmlnaW5hdGluZ1By
b2dyZXNzRnJhbWUpIG92ZXJyaWRlOwogCiAgICAgV2ViVmlldyAqbV93ZWJWaWV3OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVjdGlvblNl
cnZpY2VDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJT
ZWxlY3Rpb25TZXJ2aWNlQ29udHJvbGxlci5oCmluZGV4IDY1YjI4NzY4NjA2Y2ZhNDFlZGI2MDli
YmU3Y2JjNGIxMDM4ZWRlZTcuLmEzZDZhZTYzNjM2NDdjNWYzMGNjNzlmYmQ2MzVmNjY0YmNhMDEy
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlNlbGVj
dGlvblNlcnZpY2VDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViU2VsZWN0aW9uU2VydmljZUNvbnRyb2xsZXIuaApAQCAtNTAsNyArNTAsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNSZWxldmFudFNlbGVjdGlvblNlcnZpY2VzKGJvb2wgaXNUZXh0
T25seSkgY29uc3Q7CiAKICAgICAvLyBXZWJTaGFyaW5nU2VydmljZVBpY2tlckNsaWVudAotICAg
IHZpcnR1YWwgdm9pZCBzaGFyaW5nU2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFy
aW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXIgJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaGFyaW5n
U2VydmljZVBpY2tlcldpbGxCZURlc3Ryb3llZChXZWJTaGFyaW5nU2VydmljZVBpY2tlckNvbnRy
b2xsZXIgJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPFdlYlNoYXJpbmdT
ZXJ2aWNlUGlja2VyQ29udHJvbGxlcj4gbV9zaGFyaW5nU2VydmljZVBpY2tlckNvbnRyb2xsZXI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVk
TGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVk
TGlua1N0b3JlLmgKaW5kZXggNGNiYTJlZTYyOGM1ZjI4YzZhOWMyN2I5OGE0MzQ1NTM5MDUxZDcw
NS4uMTY0ZmVkMWYwMGE2MTg5YTQ3NzUxOWVlOTNkZGNhYjU2ODNlMWZiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aApAQCAtNDQsOCArNDQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYlZpc2l0ZWRMaW5r
U3RvcmUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2Um
LCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBB
dG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFk
ZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFzaCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFz
aCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJp
YnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRWaXNpdGVkTGluayhXZWJDb3JlOjpQYWdl
JiwgV2ViQ29yZTo6TGlua0hhc2gpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBwb3B1bGF0ZVZpc2l0
ZWRMaW5rc0lmTmVlZGVkKFdlYkNvcmU6OlBhZ2UmKTsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5r
SGFzaChXZWJDb3JlOjpMaW5rSGFzaCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYk1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCmluZGV4IDhlNTQyZjgxNjQ2
NDlkMWYyYjc2ZTU0MjJmZWZmZmU1MTI5Mzg5ZWEuLmVmOWViOGViYTk3ZjUxOTM0ZjYyMmRjMWIx
YjEyYTViMmVkNzViNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViTWVkaWFQbGF5YmFja1RhcmdldFBpY2tlci5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0TW9ja01lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJTdGF0ZShjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dDo6U3RhdGUpOwog
CiAgICAgLy8gV2ViTWVkaWFTZXNzaW9uTWFuYWdlckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBz
ZXRQbGF5YmFja1RhcmdldCh1aW50NjRfdCwgUmVmPFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJn
ZXQ+JiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2
YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCwgYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90LCBib29sKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgY3VzdG9tUGxheWJhY2tBY3Rpb25TZWxlY3RlZCh1aW50NjRf
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQbGF5YmFja1RhcmdldCh1aW50NjRfdCwgUmVmPFdl
YkNvcmU6Ok1lZGlhUGxheWJhY2tUYXJnZXQ+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QsIGJvb2wpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QsIGJvb2wp
IG92ZXJyaWRlOworICAgIHZvaWQgY3VzdG9tUGxheWJhY2tBY3Rpb25TZWxlY3RlZCh1aW50NjRf
dCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGludmFsaWRhdGUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCmluZGV4IGQ5YzQ2Njg4NTAzYWRlZDU5
YzUzNDAyOGZhODEwYjY4MzJmMjVlYTkuLjA2NTk2Yzc0MWQxMzk3NTUzMGJmNmRhNmQ1YThmODJi
M2MzMTMwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVn
Z2VyLmgKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0LmdldCgpOyB9CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBXVEY6OlN0cmluZyYg
ZXJyb3JNc2cpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYXVzZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBuZWVkUGF1c2VIYW5kbGluZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IFdURjo6
U3RyaW5nJiBlcnJvck1zZykgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVQYXVzZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UpIG92ZXJyaWRlOwor
ICAgIGJvb2wgbmVlZFBhdXNlSGFuZGxpbmcoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgbV9jYWxsaW5nRGVsZWdhdGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCAxNTZkNzdiMDlmNjdlYTI3ZTAx
OTFlYTVlZjhkNzNlY2JiZWIxNmZhLi5lYTRhMzZiNTBhZDAzOWE2Y2M0ZmU3YzdkZDgwMjgxNGQ3
MGY3ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRh
LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBAIC0xMDcs
NyArMTA3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYlZpZXdMYXllckZsdXNoU2NoZWR1
bGVyKCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGxheWVyRmx1c2hDYWxsYmFj
aygpIG92ZXJyaWRlCisgICAgdm9pZCBsYXllckZsdXNoQ2FsbGJhY2soKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgUmVmUHRyPExheWVyRmx1c2hDb250cm9sbGVyPiBwcm90ZWN0b3IgPSBtX2Zs
dXNoQ29udHJvbGxlcjsKICAgICAgICAgV2ViQ29yZTo6TGF5ZXJGbHVzaFNjaGVkdWxlcjo6bGF5
ZXJGbHVzaENhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9BY2Nlc3Np
YmxlRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2libGVEb2N1bWVudC5oCmlu
ZGV4IGQ0NDk4ODA2MGI4Y2E3M2E2ZWFkYzRmNjZlMmE5MDYwNTdmZmIzZWUuLmY0YmY5OGNmZmU4
NzZlZGU4ZmY0MTg0NWJmZWI3NzBiYTNlYjcwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0FjY2Vzc2libGVEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0FjY2Vzc2li
bGVEb2N1bWVudC5oCkBAIC0zNCw4ICszNCw4IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpEb2N1
bWVudCogZG9jdW1lbnQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgbG9uZyBy
b2xlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBsb25nIHN0YXRlKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgbG9uZyByb2xlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgbG9uZyBzdGF0ZSgp
IGNvbnN0IG92ZXJyaWRlOwogfTsKIAogI2VuZGlmIC8vIEFjY2Vzc2libGVEb2N1bWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCmluZGV4
IDgwODM5NmE2NzU0NjhhNTYxODI2YzM2ZWFlMjU4ZTkwOWIwZTBiOTAuLjM3NThiYjMwOTM2MGVj
YWFjMGVjYmViMTZiYzhhZWZlZWY2YjZlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxheWVyTGF5ZXJEaWRE
aXNwbGF5KFBsYXRmb3JtTGF5ZXIqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DQUxh
eWVyRGlkQ3JlYXRlVGlsZXMoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mKSB7IH0KLSAgICB2aXJ0
dWFsIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gMTsgfQorICAgIGZsb2F0IHBsYXRmb3JtQ0FMYXllckRldmljZVNjYWxlRmFj
dG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMTsgfQogCiAgICAgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlciogbV9wYXJlbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
UGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZp
ZXcuaAppbmRleCBlMTE5ZmE0OTg4ZTI2YzBhMWI4YWVhMmU4MmMyMWY5OGYwZDhiM2M3Li4yNmYw
ODc0ZTVmNWE1Yzg5OTM0ZTBiODEyZGI0OGI3Yjc1OWY1NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9Q
bHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMTI4LDcgKzEyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAgICAgTlBPYmplY3QqIG5w
T2JqZWN0KCk7CiAjZW5kaWYKLSAgICAgICAgdmlydHVhbCBSZWZQdHI8SlNDOjpCaW5kaW5nczo6
SW5zdGFuY2U+IGJpbmRpbmdJbnN0YW5jZSgpIG92ZXJyaWRlOworICAgICAgICBSZWZQdHI8SlND
OjpCaW5kaW5nczo6SW5zdGFuY2U+IGJpbmRpbmdJbnN0YW5jZSgpIG92ZXJyaWRlOwogCiAgICAg
ICAgIFBsdWdpblN0YXR1cyBzdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXR1czsgfQogCkBA
IC0xODAsNyArMTgwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgc2hvdygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgaGlkZSgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgY2xpcFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgY2xp
cFJlY3RDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKICAgICAgICAgLy8gVGhpcyBtZXRob2QgaXMgdXNl
ZCBieSBwbHVnaW5zIG9uIGFsbCBwbGF0Zm9ybXMgdG8gb2J0YWluIGEgY2xpcCByZWN0IHRoYXQg
aW5jbHVkZXMgY2xpcHMgc2V0IGJ5IFdlYkNvcmUsCiAgICAgICAgIC8vIGUuZy4sIGluIG92ZXJm
bG93OmF1dG8gc2VjdGlvbnMuICBUaGUgY2xpcCByZWN0cyBjb29yZGluYXRlcyBhcmUgaW4gdGhl
IGNvbnRhaW5pbmcgd2luZG93J3MgY29vcmRpbmF0ZSBzcGFjZS4KQEAgLTE5MSw3ICsxOTEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Ny
b2xsVmlldyopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKTsK
IAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQbHVnaW5WaWV3KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgICAgICBib29sIGlzUGx1Z2luVmlldygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICBGcmFtZSogcGFyZW50RnJhbWUoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudEZyYW1lLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggYjMyN2U5NDlkYjEzOGM4
OGFhZTk4NDdiZTQ2MTIyYzhkZmI5YmU5OC4uODlkNmM4NzRiZDQ0ZjljZDZlZDU1YjA2MGJkZmNk
Yjg3MzZmYzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKQEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBQ
YXNzIDAgYXMgdGhlIEdyYXBoaWNzTGF5ZXIgdG8gZGV0YXRjaCB0aGUgcm9vdCBsYXllci4KICAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdPdmVy
bGF5R3JhcGhpY3NMYXllcihXZWJDb3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJD
b3JlOjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICAvLyBT
ZXRzIGEgZmxhZyB0byBzcGVjaWZ5IHRoYXQgdGhlIG5leHQgdGltZSBjb250ZW50IGlzIGRyYXdu
IHRvIHRoZSB3aW5kb3csCiAgICAgLy8gdGhlIGNoYW5nZXMgYXBwZWFyIG9uIHRoZSBzY3JlZW4g
aW4gc3luY2hyb255IHdpdGggdXBkYXRlcyB0byBHcmFwaGljc0xheWVycy4KICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpIHsgfQpAQCAtMTMz
LDcgKzEzMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGlu
Z0xheWVyRmx1c2goKTsKIAogI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKEFWRk9VTkRBVElPTikK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OkdyYXBoaWNzRGV2aWNlQWRhcHRlciogZ3JhcGhpY3NEZXZp
Y2VBZGFwdGVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NEZXZpY2VB
ZGFwdGVyKiBncmFwaGljc0RldmljZUFkYXB0ZXIoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFJlY3RJbnRvVmlldyhjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JikgY29uc3QgeyB9CkBAIC0xNjEsMTAgKzE2MSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdmlydHVhbCB2b2lkIG5lZWRUb3VjaEV2ZW50
cyhib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIG5lZWRUb3VjaEV2ZW50cyhib29sKSBvdmVy
cmlkZSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnRIYW5kbGVyc0No
YW5nZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFu
Z2VkKGJvb2wpIG92ZXJyaWRlIHsgfQogCiAgICAgV2ViVmlldyogd2ViVmlldygpIHsgcmV0dXJu
IG1fd2ViVmlldzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJEZXNrdG9wTm90aWZpY2F0aW9uc0RlbGVnYXRlLmgKaW5kZXgg
ZjQ4MGZhYjg3NzZlMjA5YTQ4MmM1NDI5Mjg0MWNhYjE2NGY5YjBiMi4uYjllNDQ3OGEwNGFjNjA0
YTQ4M2Y5OGIzZTU3MjQ5YjIxOWQ0OWVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRGVza3RvcE5vdGlmaWNhdGlvbnNEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkRlc2t0b3BOb3RpZmljYXRpb25zRGVs
ZWdhdGUuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJh
Y2s+KTsKICNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBoYXNQZW5kaW5nUGVybWlzc2lvblJlcXVl
c3RzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBib29sIGhhc1BlbmRpbmdQZXJtaXNzaW9uUmVxdWVzdHMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1
ZXN0c0ZvclBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uQ2xpZW50OjpQZXJtaXNzaW9uIGNoZWNrUGVy
bWlzc2lvbihjb25zdCBVUkwmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCBmZTkwNTExOWY2NWM0MjE3OTI2MzFmZWM5
MTMyMDM1OTFhOTZlMzgwLi4yMDEwODMzZjk4YjM3NzA2YTQ3MmMzYjIwMTlkMGVmNTczOGE3ZTQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaApAQCAtNTksOCArNTksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
U2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpc2NhcmRlZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGRpc2NhcmRlZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKICAg
ICBib29sIHNob3VsZERlbGV0ZVJhbmdlKFdlYkNvcmU6OlJhbmdlKik7CiAKQEAgLTg4LDM1ICs4
OCwzNSBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7ICAgIAog
ICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6
OlJhbmdlKiBmcm9tUmFuZ2UsIFdlYkNvcmU6OlJhbmdlKiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZm
aW5pdHksIGJvb2wgc3RpbGxTZWxlY3RpbmcpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKFdlYkNvcmU6OkVsZW1lbnQqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYkNv
cmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZG9UZXh0RmllbGRDb21t
YW5kRnJvbUV2ZW50KFdlYkNvcmU6OkVsZW1lbnQqLCBXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQo
V2ViQ29yZTo6RWxlbWVudCogaW5wdXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXh0
RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIG92ZXJmbG93U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9Cisg
ICAgYm9vbCBzaG91bGRDaGFuZ2VTZWxlY3RlZFJhbmdlKFdlYkNvcmU6OlJhbmdlKiBmcm9tUmFu
Z2UsIFdlYkNvcmU6OlJhbmdlKiB0b1JhbmdlLCBXZWJDb3JlOjpFQWZmaW5pdHksIGJvb2wgc3Rp
bGxTZWxlY3RpbmcpIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5n
KFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRGaWVsZERpZEVuZEVk
aXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dERpZENoYW5n
ZUluVGV4dEZpZWxkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICBib29sIGRvVGV4
dEZpZWxkQ29tbWFuZEZyb21FdmVudChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29yZTo6S2V5Ym9h
cmRFdmVudCopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVs
ZChXZWJDb3JlOjpFbGVtZW50KiBpbnB1dCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0RGlkQ2hh
bmdlSW5UZXh0QXJlYShXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBvdmVy
Zmxvd1Njcm9sbFBvc2l0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlIHsgfQogCiAgICAgdm9pZCBoYW5k
bGVLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKTsKICAgICB2b2lkIGhhbmRs
ZUlucHV0TWV0aG9kS2V5ZG93bihXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kik7CiAKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRXJhc2VNYXJrZXJzQWZ0ZXJDaGFuZ2VTZWxlY3Rpb24oV2ViQ29yZTo6
VGV4dENoZWNraW5nVHlwZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGlnbm9y
ZVdvcmRJblNwZWxsRG9jdW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgbGVhcm5Xb3JkKGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3Nw
ZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdv
cmQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hlY2tH
cmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+
JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChj
b25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzaG93U3BlbGxp
bmdVSShib29sIHNob3cpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNT
aG93aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNv
bnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpW
ZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVxdWVzdD4pIG92ZXJyaWRlIHsgfQotCi0gICAgdmlydHVhbCBXZWJDb3JlOjpUZXh0Q2hlY2tl
ckNsaWVudCogdGV4dENoZWNrZXIoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisgICAgYm9v
bCBzaG91bGRFcmFzZU1hcmtlcnNBZnRlckNoYW5nZVNlbGVjdGlvbihXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGlnbm9yZVdvcmRJblNwZWxsRG9j
dW1lbnQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxlYXJuV29yZChj
b25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgY2hlY2tTcGVsbGluZ09mU3Ry
aW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGlu
Z0xlbmd0aCkgb3ZlcnJpZGU7CisgICAgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0
aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFt
bWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5n
dGgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBX
VEY6OlN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9vbCBzaG93
KSBvdmVycmlkZTsKKyAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFdURjo6U3RyaW5nJiB3b3JkLCBjb25zdCBX
VEY6OlN0cmluZyYgY29udGV4dCwgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKSBv
dmVycmlkZTsKKworICAgIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVxdWVzdD4pIG92ZXJyaWRlIHsgfQorCisgICAgV2ViQ29yZTo6VGV4dENoZWNrZXJDbGll
bnQqIHRleHRDaGVja2VyKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogCiBwcml2YXRlOgog
ICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDlmMjk2OTJiOTNhMWU2
OTEzMjFjMjU0YTAxOTgwZGM0ZjY0YzEyMzAuLjJlYWRjYTExNTU3ZDQ2OWIwYWQ0ODYzOTIwYmRi
ZmQ5ODU3ZGNiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTQsMTUwICs1NCwxNTAgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVM
b2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVMb2Fk
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOworICAgIHZvaWQgZm9yY2VMYXlvdXRGb3JO
b25IVE1MKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29waWVzT25TY3JvbGwo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRhY2hl
ZEZyb21QYXJlbnQyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXRhY2hlZEZyb21QYXJlbnQzKCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgV2ViQ29yZTo6U2Vzc2lvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJl
cXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWRpbmcoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJl
Y3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
KiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNo
RGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2FjaGVSZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBsZW5ndGgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91
YmxlIGludGVydmFsLCBkb3VibGUgZmlyZURhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2lsbENsb3NlKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpT
dHJpbmdXaXRoRGlyZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKSBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29yZTo6TmF2
aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgV1RGOjpTdHJpbmcmIGZyYW1lTmFtZSwgV2Vi
Q29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZp
Z2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaFdpbGxTZW5kU3VibWl0RXZlbnQoUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVm
UHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92
ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRj
aERpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZShXZWJDb3JlOjpEb2N1bWVudExvYWRlcios
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgV2ViQ29yZTo6
RnJhbWUqIGRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9u
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoU2hvdygpIG92ZXJyaWRlOwot
Ci0gICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0gU3RyaW5nKCkpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWREaXNwYXRjaE9ubG9hZEV2ZW50cygpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25z
dCBXZWJDb3JlOjpVUkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaXNwYXRjaFdpbGxDbG9zZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlSWNvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lv
bmFsTG9hZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2Fk
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpIG92
ZXJyaWRlOworCisgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvcm1TdGF0ZT4sIGNvbnN0IFdURjo6U3RyaW5nJiBmcmFtZU5hbWUsIFdlYkNv
cmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rp
b24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOworICAg
IHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKKworICAgIHZvaWQgZGlzcGF0Y2hV
bmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRy
PFdlYkNvcmU6OkZvcm1TdGF0ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsU3Vi
bWl0Rm9ybShQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24pIG92ZXJyaWRlOworCisgICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3Rh
dGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKKyAgICBib29sIGRpc3BhdGNo
RGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGludCBsZW5ndGgpIG92ZXJyaWRlOworCisgICAgV2ViQ29yZTo6RnJhbWUqIGRp
c3BhdGNoQ3JlYXRlUGFnZShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaXNwYXRjaFNob3coKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0TWFp
bkRvY3VtZW50RXJyb3IoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJl
YWR5KGJvb2wpIG92ZXJyaWRlOworCisgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmlu
ZygpKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc1N0YXJ0ZWQoV2ViQ29y
ZTo6RnJhbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWQoV2Vi
Q29yZTo6RnJhbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jlc3NGaW5pc2hlZChXZWJDb3Jl
OjpGcmFtZSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hh
ciosIGludCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0
bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKKyAgICB2
b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHdpbGxSZXBsYWNlTXVsdGlwYXJ0Q29udGVudCgpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgZGlkUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBvdmVycmlkZSB7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0
b3J5SXRlbSopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxI
aXN0b3J5SXRlbUZvclBhZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3Rv
cnkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtz
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlz
dG9yeUl0ZW0qKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlJ
dGVtRm9yUGFnZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVD
b250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwm
LCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJs
b2NrRW50aXJlUGFnZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBp
bnRlcnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5u
b3RTaG93TUlNRVR5cGVFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZpbGVEb2VzTm90RXhp
c3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
Y2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJy
aWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFu
Z2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKKyAgICBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRGYWxsQmFjayhjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJB
Z2VudChjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICBXVEY6OlN0cmluZyB1c2Vy
QWdlbnQoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIFJlZjxX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ2FjaGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXImKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9h
ZGVyKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJikgb3ZlcnJpZGUgeyB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0Nh
Y2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRG
cmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRG
b3JOZXdQYWdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRG
cmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRlOworICAgIHZvaWQgdHJhbnNpdGlv
blRvQ29tbWl0dGVkRnJvbUNhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdlKCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiBNSU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZUFzSFRNTChjb25zdCBXVEY6OlN0cmluZyYgTUlN
RVR5cGUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4
aXN0c0ZvclVSTFNjaGVtZShjb25zdCBXVEY6OlN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2No
ZW1lKGNvbnN0IFdURjo6U3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBXVEY6OlN0cmluZyYg
TUlNRVR5cGUpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlQXNIVE1M
KGNvbnN0IFdURjo6U3RyaW5nJiBNSU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBXVEY6OlN0cmluZyYgVVJMU2No
ZW1lKSBjb25zdCBvdmVycmlkZTsKKyAgICBXVEY6OlN0cmluZyBnZW5lcmF0ZWRNSU1FVHlwZUZv
clVSTFNjaGVtZShjb25zdCBXVEY6OlN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBmcmFtZUxvYWRDb21wbGV0ZWQoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2F2ZVZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSAqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJh
bWVMb2FkQ29tcGxldGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVt
KFdlYkNvcmU6Okhpc3RvcnlJdGVtICopIG92ZXJyaWRlOworICAgIHZvaWQgcmVzdG9yZVZpZXdT
dGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJlcGFy
ZUZvckRhdGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZFNhdmVUb1BhZ2VDYWNoZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0
b3JlRnJvbVBhZ2VDYWNoZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2F2ZVRvUGFnZUNhY2hl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQoYm9vbCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwogCi0gICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29yZTo6RnJhbWU+IGNyZWF0ZUZyYW1lKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQq
LAorICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6
VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUsIFdlYkNvcmU6OkhUTUxGcmFtZU93bmVyRWxl
bWVudCosCiAgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZWZlcnJlciwgYm9vbCBhbGxvd3NT
Y3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdpbkhlaWdodCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lkZ2V0Kikgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6Oldp
ZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQbHVn
SW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wg
bG9hZE1hbnVhbGx5KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6
OldpZGdldCopIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2Vi
Q29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBvdmVycmlkZTsKKyAgICBQYXNz
UmVmUHRyPFdlYkNvcmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3Jl
OjpVUkwmIGJhc2VVUkwsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtTmFtZXMsIGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIHBhcmFtVmFsdWVzKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIFdURjo6U3RyaW5nIG92ZXJyaWRlTWVkaWFUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUgb2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKKyAg
ICBXVEY6OlN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKFdlYkNvcmU6
OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDbGVhcldp
bmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3ZlcnJpZGU7CiAK
ICAgICBDT01QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gc2V0VXBQb2xpY3lMaXN0ZW5lcihX
ZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uKTsKICAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4pIG92ZXJyaWRlOworICAgIHZvaWQgcmVn
aXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wgbGlzdGVuKSBvdmVycmlkZTsKIAogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBXVEY6OlN0cmlu
ZyYgbWltZVR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKaW5kZXggZjgzMzdi
ODRjZmZhOTRjODUyMGYxNzJhNTk2MzY3YmE0NTE2M2NlOS4uZWVlYWI0NDg5ZjIxN2Y0Y2ZiOTkz
NGRlYWZiOTZlMzRlMDBhYzA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDcsOSAr
NDcsOSBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IG92ZXJyaWRlOwogI2lmIFVT
RShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oCmluZGV4IDlmMWFjNjY4OTBlMjlmZmZhYjQ0NjdiY2M4ZTc2MTAyNTg0ZjE1
MzEuLjczZTdjMDg3YzkwNWU3NDVhOWZhZjliMjhmNTY5MTc5MTg4NzRkNDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CkBAIC01MywxNyArNTMsMTcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFdlYkluc3BlY3RvckNs
aWVudChXZWJWaWV3Kik7CiAKICAgICAvLyBJbnNwZWN0b3JDbGllbnQgQVBJLgotICAgIHZpcnR1
YWwgdm9pZCBpbnNwZWN0ZWRQYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnNw
ZWN0ZWRQYWdlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsKiBvcGVuTG9jYWxGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250
KCkgb3ZlcnJpZGU7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqIG9wZW5Mb2NhbEZy
b250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBvdmVycmlkZTsKKyAgICB2b2lk
IGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGln
aGxpZ2h0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGhpZ2hsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlkZUhpZ2hs
aWdodCgpIG92ZXJyaWRlOwogCiAgICAgLy8gRnJvbnRlbmRDaGFubmVsIEFQSS4KLSAgICB2aXJ0
dWFsIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gQ29ubmVjdGlvblR5cGU6OkxvY2FsOyB9Ci0gICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOworICAgIENvbm5lY3Rpb25U
eXBlIGNvbm5lY3Rpb25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29ubmVjdGlvblR5
cGU6OkxvY2FsOyB9CisgICAgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgV1RGOjpT
dHJpbmcmKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKTsK
ICAgICB2b2lkIHNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGJvb2wpOwpAQCAtOTYsMjEgKzk2
LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCgp
OwogCiAgICAgLy8gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgQVBJLgotICAgIHZpcnR1YWwgdm9p
ZCBmcm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgbG9jYWxpemVkU3RyaW5nc1VSTCgp
IG92ZXJyaWRlOworICAgIFdURjo6U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NVUkwoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKKyAgICB2b2lkIGJyaW5nVG9Gcm9udCgp
IG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VXaW5kb3coKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93V2lkdGgodW5zaWduZWQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCkgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBXVEY6OlN0cmluZyYgbmV3VVJM
KSBvdmVycmlkZTsKKyAgICB2b2lkIGluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgV1RGOjpTdHJp
bmcmIG5ld1VSTCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsIEFQSS4KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERvY2tTaWRlKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBh
dHRhY2hXaW5kb3coRG9ja1NpZGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0YWNoV2luZG93KCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlc3Ryb3lJbnNwZWN0b3JWaWV3KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2l0ZWRMaW5rU3RvcmUu
aAppbmRleCAyZTgxMTQzNzhhOGQ1NzYwNjZhNWNiOTY5M2U0MTg3OTQwMjdmZmZjLi42ODg4OWFh
NjRjYWMwOGRjYmNhNjQ1NGYzZjRhOTExOTQyOTQxMDkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViVmlzaXRlZExpbmtTdG9yZS5oCkBAIC00Myw4
ICs0Myw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViVmlzaXRlZExpbmtTdG9yZSgpOwog
Ci0gICAgdmlydHVhbCBib29sIGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6
OkxpbmtIYXNoLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgYXR0cmlidXRlVVJMKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkVmlzaXRlZExp
bmsoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OkxpbmtIYXNoKSBvdmVycmlkZTsKKyAgICBib29s
IGlzTGlua1Zpc2l0ZWQoV2ViQ29yZTo6UGFnZSYsIFdlYkNvcmU6OkxpbmtIYXNoLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cmlidXRlVVJMKSBv
dmVycmlkZTsKKyAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3Jl
OjpMaW5rSGFzaCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBvcHVsYXRlVmlzaXRlZExpbmtzSWZO
ZWVkZWQoV2ViQ29yZTo6UGFnZSYpOwogICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoKFdlYkNv
cmU6OkxpbmtIYXNoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3Rvcnku
aCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuaAppbmRleCBmYjk4OWQ3Mzc2ODRkN2Iy
ZDc3OWE0Njc2OGVmMDkwNDliMmYwZDViLi4xN2FmZjkyODI3ZDFkMTA5YjUzZTljZGNjNmNlNDlj
OGJlM2U3MGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmgKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5oCkBAIC01OCw4ICs1OCw4IEBAIHB1Ymxp
YzoKICAgICAvLyBJV2ViSGlzdG9yeQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBvcHRpb25hbFNoYXJlZEhpc3RvcnkoX0NPTV9PdXRwdHJfb3B0XyBJV2ViSGlzdG9yeSoq
KTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0T3B0aW9uYWxTaGFy
ZWRIaXN0b3J5KF9Jbl9vcHRfIElXZWJIaXN0b3J5Kik7Ci0gICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHVudXNlZDEoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgdW51c2VkMigpIG92ZXJyaWRlOworICAgIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgdW51c2VkMSgpIG92ZXJyaWRlOworICAgIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgdW51c2VkMigpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBhZGRJdGVtcyhpbnQgaXRlbUNvdW50LCBfX2RlcmVmX2luX2Vjb3VudF9vcHQoaXRl
bUNvdW50KSBJV2ViSGlzdG9yeUl0ZW0qKik7CiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIHJlbW92ZUl0ZW1zKGludCBpdGVtQ291bnQsIF9fZGVyZWZfaW5fZWNvdW50X29w
dChpdGVtQ291bnQpIElXZWJIaXN0b3J5SXRlbSoqKTsKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgcmVtb3ZlQWxsSXRlbXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYktpdE1lc3NhZ2VMb29wLmggYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5oCmluZGV4IGQ0ZDAxNThlMmUwYzEyZjc3MjI3NzFkNmZjOWUzMjQyODY4ZTMxZTYu
LjFiMGUxN2Y0OGI5ZmUyZDlkM2NiYmY5YjgxNzYzZmMyOTMwOTBmYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYktpdE1lc3NhZ2VMb29wLmgKKysrIGIvU291cmNlL1dlYktpdC93
aW4vV2ViS2l0TWVzc2FnZUxvb3AuaApAQCAtMzYsMTMgKzM2LDEzIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgV2ViS2l0TWVzc2FnZUxvb3AqIGNyZWF0ZUluc3RhbmNlKCk7CiAKICAgICAvLyBJVW5r
bm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2UoKSBvdmVycmlk
ZTsKKyAgICBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KSBvdmVycmlkZTsKKyAgICBV
TE9ORyBTVERNRVRIT0RDQUxMVFlQRSBBZGRSZWYoKSBvdmVycmlkZTsKKyAgICBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBSZWxlYXNlKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJV2ViS2l0TWVzc2Fn
ZUxvb3AKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgcnVuKF9Jbl8gSEFD
Q0VMIGhBY2NlbFRhYmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgcGVyZm9ybU1lc3NhZ2VMb29wVGFza3MoKSBvdmVycmlkZTsKKyAgICBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHJ1bihfSW5fIEhBQ0NFTCBoQWNjZWxUYWJsZSkgb3ZlcnJpZGU7
CisgICAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBwZXJmb3JtTWVzc2FnZUxvb3BUYXNrcygp
IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFVMT05HIG1fcmVmQ291bnQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKaW5kZXgg
ZjlhNTlkM2JiOThkZDFkODNkODMwZDkxNmU0MzkwNjBmYzMxNGI3Yy4uNjg5MjU0ZjRkYWUwZjhi
MzkzZWRhYjVkZGRhZWEwYmFjMDk5NWUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtNjksMTggKzY5LDE4IEBAIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VQcm9jZXNzKCk7CiAKICAgICAvLyBDaGlsZFByb2Nlc3MKLSAgICB2aXJ0
dWFsIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9j
ZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihJ
UEM6OkNvbm5lY3Rpb24qKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVGVybWlu
YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGlsZFBy
b2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRp
YWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiopIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSVBDOjpQ
cm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9j
ZXNzVHlwZTo6RGF0YWJhc2U7IH0KLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3Rl
UHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpVSTsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIElQQzo6UHJvY2Vzc1R5cGUg
bG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OkRh
dGFiYXNlOyB9CisgICAgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OlVJOyB9CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YWJhc2VQcm9jZXNzTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CiAKICAgICAvLyBNZXNzYWdlIEhhbmRsZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0
aW9uLmgKaW5kZXggYTEwNmQ0MTYxZDY5N2ZhMjNjZWVkZTUxNTk3YTgzYmRjM2NjOWFlZS4uZGFk
MTQ1MzdmMzBiNmMzOTBjNDUwNzhmNjY4NjI5ZjZjODFjMTA0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVRvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uaApAQCAtNDgsMTggKzQ4LDE4IEBAIHByaXZhdGU6CiAgICAgRGF0YWJhc2VU
b1dlYlByb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAKICAg
ICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29k
ZXI+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlv
biYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4g
SVBDOjpQcm9jZXNzVHlwZTo6RGF0YWJhc2U7IH0KLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5
cGUgcmVtb3RlUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBl
OjpXZWI7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAg
SVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBD
OjpQcm9jZXNzVHlwZTo6RGF0YWJhc2U7IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVBy
b2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9CiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY0RhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VF
bmNvZGVyPiYpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCi0gICAgdmlydHVhbCBJUEM6
OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9jb25uZWN0aW9uLmdldCgpOyB9Ci0gICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICBJUEM6OkNvbm5lY3Rp
b24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9jb25uZWN0
aW9uLmdldCgpOyB9CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBv
dmVycmlkZSB7IHJldHVybiAwOyB9CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKICAg
ICAvLyBNZXNzYWdlcyBoYW5kbGVycyAoTW9kZXJuIElEQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNvbm5l
Y3Rpb25Ub0NsaWVudC5oCmluZGV4IDdmZjE4OTlmZGY0Y2FlMWQ4ZTg2ZTQ5OWZmZWQ3YTI0MDBj
MDcyOWQuLmJiMTljZTJlYjg1MzQyODRhMzFmZmRkMDBjZmU0YTRjMGU1NzA5NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaApAQCAtNTIsMzIgKzUyLDMyIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJJREJDb25uZWN0aW9uVG9DbGllbnQoKTsKIAogICAgIFdlYkNv
cmU6OklEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9uVG9DbGllbnQo
KTsKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICAvLyBJ
REJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZQotICAgIHZpcnR1YWwgdm9pZCBkaWREZWxldGVE
YXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEFib3J0VHJhbnNhY3Rp
b24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJFcnJv
ciYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVPYmplY3RTdG9y
ZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERh
dGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJPYmplY3RTdG9y
ZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBv
dmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRGVsZXRlSW5kZXgoY29uc3QgV2Vi
Q29yZTo6SURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRQdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdldFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHRE
YXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdldENvdW50KGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRGVsZXRlUmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBvdmVycmlk
ZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBXZWJDb3JlOjpJ
REJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEl0ZXJh
dGVDdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVzdWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOwot
Ci0gICAgdmlydHVhbCB2b2lkIGZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoV2ViQ29yZTo6SURCU2Vy
dmVyOjpVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24mLCBjb25zdCBXZWJDb3JlOjpJREJSZXNv
dXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJz
aW9uKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlv
bihjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6SURCRXJyb3ImKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgV2ViQ29yZTo6SURCUmVz
b3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwg
dWludDY0X3QgbmV3VmVyc2lvbikgb3ZlcnJpZGUgZmluYWw7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD46OnJl
ZigpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmKCkgb3ZlcnJpZGUgeyBSZWZDb3VudGVkPFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudD46OmRlcmVmKCk7IH0KKyAgICB2b2lkIGRpZERlbGV0ZURh
dGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAg
ICB2b2lkIGRpZE9wZW5EYXRhYmFzZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3Zl
cnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRBYm9ydFRyYW5zYWN0aW9uKGNvbnN0IFdlYkNvcmU6
OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpJREJFcnJvciYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkQ29tbWl0VHJhbnNh
Y3Rpb24oY29uc3QgV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQkVycm9yJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBkaWRDcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBXZWJD
b3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRDbGVhck9i
amVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2b2lkIGRpZENyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBv
dmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpZERlbGV0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklE
QlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpZFB1dE9yQWRkKGNvbnN0
IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpZEdl
dFJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBkaWRHZXRDb3VudChjb25zdCBXZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCBkaWREZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVz
dWx0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkT3BlbkN1cnNvcihjb25zdCBX
ZWJDb3JlOjpJREJSZXN1bHREYXRhJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkaWRJdGVy
YXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKSBvdmVycmlkZSBmaW5hbDsK
KworICAgIHZvaWQgZmlyZVZlcnNpb25DaGFuZ2VFdmVudChXZWJDb3JlOjpJREJTZXJ2ZXI6OlVu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYgcmVxdWVzdElkZW50aWZpZXIsIHVpbnQ2NF90IHJlcXVlc3RlZFZlcnNpb24pIG92
ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBXZWJDb3Jl
OjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6SURCRXJyb3ImKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIG5vdGlmeU9wZW5EQlJl
cXVlc3RCbG9ja2VkKGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgcmVxdWVz
dElkZW50aWZpZXIsIHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24pIG92
ZXJyaWRlIGZpbmFsOworCisgICAgdm9pZCByZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8V2Vi
SURCQ29ubmVjdGlvblRvQ2xpZW50Pjo6cmVmKCk7IH0KKyAgICB2b2lkIGRlcmVmKCkgb3ZlcnJp
ZGUgeyBSZWZDb3VudGVkPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD46OmRlcmVmKCk7IH0KIAog
ICAgIC8vIE1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gV2ViUHJvY2VzcwogICAgIHZvaWQgZGVsZXRl
RGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKTsKQEAgLTEwOSw3ICsxMDks
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudChEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24mLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRl
bnRpZmllcik7CiAKLSAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBvdmVycmlkZSBmaW5hbDsKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAgICBSZWY8RGF0YWJhc2VUb1dl
YlByb2Nlc3NDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0N1c3RvbVByb3RvY29scy9DdXN0
b21Qcm90b2NvbE1hbmFnZXIuaAppbmRleCBiZjJiZDQ3MjA1Y2EwOGY5OTNmYmJjZjc1ZjRkZmIy
ZDYwOTQ4NTNlLi45YWY4YmE5ZDRiNDU5NDAzOTU0NmRhNGIzZDRkNTEzNDBlNjRhMjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9DdXN0b21Qcm90b2NvbHMvQ3Vz
dG9tUHJvdG9jb2xNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Q3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlci5oCkBAIC04OCw3ICs4OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIGRpZEZhaWxXaXRoRXJyb3IodWludDY0X3QgY3VzdG9tUHJvdG9jb2xJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGlkTG9hZERhdGEodWludDY0X3QgY3Vz
dG9tUHJvdG9jb2xJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCmluZGV4IGU2YTQ4
MGNkY2E5Y2I4MDdhYzM2ZTBmNWZmNWIzMTQ2NWU0NDdkN2IuLjJmMTcyZDg5NjA0MTdkMDdjOTIy
MjI4YTcxNmQ1MDUzOWE5Y2RlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5oCkBAIC0xMTUsOCArMTE1LDggQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgotICAgIHZpcnR1YWwgSVBDOjpD
b25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVycmlkZTsKKyAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAg
dWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRBdXRoZW50aWNh
dGlvbkNsaWVudC5oCmluZGV4IDljZmM3YzY5MzBiYWQ4OWUyMDAzNDRjNWRkYTEyNDhmOGM3OTIy
N2IuLjg2ZTMyZDQ4OTBmYmY4N2FhMmE0N2Q2YWQ3ZjkyZGFmMWJiM2MwMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZEF1dGhlbnRp
Y2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQuaApAQCAtNTMsMTQgKzUzLDE0IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgRG93bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudChEb3dubG9h
ZCopOwogCi0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ3JlZGVudGlhbChjb25zdCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjZWl2ZWRSZXF1ZXN0VG9Db250aW51ZVdpdGhv
dXRDcmVkZW50aWFsKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHJlY2VpdmVkUmVxdWVzdFRvUGVyZm9ybURlZmF1bHRIYW5kbGluZyhjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWNl
aXZlZENoYWxsZW5nZVJlamVjdGlvbihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xp
ZW50KCkgb3ZlcnJpZGUgeyByZWYoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXJlZkF1dGhlbnRp
Y2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBkZXJlZigpOyB9CisgICAgdm9pZCByZWNlaXZlZENy
ZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNlaXZlZFJlcXVlc3RU
b0NvbnRpbnVlV2l0aG91dENyZWRlbnRpYWwoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKGNvbnN0
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZWNlaXZlZFJlcXVlc3RUb1BlcmZvcm1EZWZhdWx0SGFuZGxpbmcoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY2VpdmVkQ2hhbGxl
bmdlUmVqZWN0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHJlZkF1dGhlbnRpY2F0aW9uQ2xpZW50KCkgb3ZlcnJpZGUgeyBy
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWZBdXRoZW50aWNhdGlvbkNsaWVudCgpIG92ZXJyaWRlIHsg
ZGVyZWYoKTsgfQogCiAgICAgRG93bmxvYWQqIG1fZG93bmxvYWQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5o
IGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5oCmluZGV4IGE1N2EyOTFjZTgwYzI0NWQxZDQ3YmE1ZmMxNjFlM2Q3NjBjZmZhZjQuLmRhMGIz
YTNkOTMwOGI4ZTU3MGFhZTgwMWEwNmUxODQ2YjkwNjM4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgK
QEAgLTUwLDE5ICs1MCwxOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6ICAgIAogICAgIC8vIE5ldHdv
cmtMb2FkQ2xpZW50LgotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBv
dmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTaG91bGRDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYpIG92ZXJyaWRlIHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlOjpObzsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkg
b3ZlcnJpZGUgeyB9OwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBm
aW5pc2hUaW1lKSBvdmVycmlkZSB7IH07Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5n
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQmVjb21lRG93bmxvYWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJl
Y3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKSBvdmVycmlkZTsKKyAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRl
IHsgcmV0dXJuIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlOjpObzsgfTsKKyAgICB2
b2lkIGRpZFJlY2VpdmVCdWZmZXIoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiwgaW50
IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEJlY29tZURvd25sb2FkKCkgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gTWVzc2Fn
ZVNlbmRlci4KLSAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkgb3ZlcnJpZGU7CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIG92ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtMb2FkPiBtX25ldHdvcmtMb2FkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZjM2
YTRmM2Q5NGVjMWM3YWJkM2Y2MTk0ZWNlMGJmNzBlOGU2ODY5Yi4uYzhlODUxMTE5ZWRiMzZkOTNm
ZDFmODUwODdiYTE4ZmI5MjlkNzk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC01
OCwxMiArNTgsMTIgQEAgcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyhJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9u
OjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUg
bG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6Ok5l
dHdvcms7IH0KLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3RlUHJvY2Vzc1R5cGUo
KSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29k
ZXI+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgSVBDOjpQcm9jZXNzVHlwZSBsb2Nh
bFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6TmV0d29y
azsgfQorICAgIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3RlUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7
IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCmluZGV4IGIyN2E0NTQ2OTIyYjMyYjJk
MWVhNjBhNDIwMjdhZjRmNzliNjczNjkuLmE4YzA2YmFhMjkwY2FiMDE2MDNkYmU1N2E5ZDk1ZTA5
ZWMyNmIyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aApAQCAtNjQsNDUgKzY0LDQ1IEBAIHB1YmxpYzoKICAgICBEb3dubG9hZElEIHBlbmRpbmdEb3du
bG9hZElEKCkgeyByZXR1cm4gbV90YXNrLT5wZW5kaW5nRG93bmxvYWRJRCgpOyB9CiAgICAgCiAg
ICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
TmV0d29ya1Nlc3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXIpIGZpbmFsIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYpIGZpbmFsIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNv
bWVEb3dubG9hZCgpIGZpbmFsIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0
YSh1aW50NjRfdCB0b3RhbEJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9T
ZW5kKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2FzQmxvY2tlZCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjYW5ub3RTaG93VVJMKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
cikgZmluYWwgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nl
c3Npb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFJlc3BvbnNlQ29tcGxldGlv
bkhhbmRsZXIpIGZpbmFsIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWwgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWwgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIGZpbmFsIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgdG90YWxCeXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvU2VuZCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3YXNCbG9ja2VkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBjYW5ub3RTaG93VVJMKCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICAv
LyBSZXNvdXJjZUhhbmRsZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3RB
c3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Up
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiwgdW5zaWduZWQsIGlu
dCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVCdWZmZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBkb3VibGUg
ZmluaXNoVGltZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdhc0Jsb2NrZWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2Fubm90U2hvd1VSTChXZWJDb3JlOjpSZXNvdXJj
ZUhhbmRsZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJD
b3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY2VpdmVkQ2FuY2VsbGF0aW9uKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlKiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBsb2FkaW5nU3luY2hy
b25vdXNYSFIoKSBvdmVycmlkZSB7IHJldHVybiBtX2NsaWVudC5pc1N5bmNocm9ub3VzKCk7IH0K
KyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdEFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTZW5kRGF0
YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
aW50IGVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVCdWZm
ZXIoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4sIGludCBlbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgZG91YmxlIGZpbmlzaFRpbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhc0Jsb2NrZWQo
V2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbm5vdFNob3dV
UkwoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVjZWl2ZWRDYW5jZWxsYXRpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJy
aWRlOworICAgIGJvb2wgdXNlc0FzeW5jQ2FsbGJhY2tzKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgbG9hZGluZ1N5bmNocm9ub3VzWEhSKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV9jbGllbnQuaXNTeW5jaHJvbm91cygpOyB9CiAKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9B
VVRIX0NBTExCQUNLKQotICAgIHZpcnR1YWwgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlQXN5bmMoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqLCBjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgVVNFKE5F
VFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Rh
dGFBcnJheSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5
KFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiwgQ0ZBcnJheVJlZikgb3ZlcnJpZGU7CisgICAgYm9v
bCBzdXBwb3J0c0RhdGFBcnJheSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFB
cnJheShXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQXJyYXlSZWYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbENhY2hlUmVzcG9u
c2VBc3luYyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYp
IG92ZXJyaWRlOwogI2Vsc2UKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENhY2hlUmVzcG9uc2VBc3lu
YyhXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSosIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsQ2FjaGVSZXNwb25zZUFzeW5jKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiwgTlNDYWNoZWRVUkxSZXNwb25zZSAqKSBvdmVycmlkZTsKICNlbmRpZgogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4
IGZkZmEwNDRjODViNWQ3YzIwM2E4ZmZjNWUzOWM2YWFmZTYzY2MzNjMuLmZhZmY2MWQwZmIzYmFi
Yjc2MjQ3MGVjY2YwYzBlZjc0OGM5NjNjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTE2LDM0ICsxMTYsMzQgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29y
a1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAotICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5h
dGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQg
cGxhdGZvcm1UZXJtaW5hdGUoKTsKIAogICAgIHZvaWQgbG93TWVtb3J5SGFuZGxlcihXZWJDb3Jl
OjpDcml0aWNhbCk7CiAgICAgdm9pZCBwbGF0Zm9ybUxvd01lbW9yeUhhbmRsZXIoV2ViQ29yZTo6
Q3JpdGljYWwpOwogCiAgICAgLy8gQ2hpbGRQcm9jZXNzCi0gICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3Qg
Q2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0
aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9u
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFRlcm1pbmF0ZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgaW5pdGlhbGl6ZVByb2Nlc3MoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05h
bWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmLCBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBpbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qKSBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZFRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6
UHJvY2Vzc1R5cGUgbG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJv
Y2Vzc1R5cGU6Ok5ldHdvcms7IH0KLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3Rl
UHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpVSTsgfQor
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpN
ZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICBJUEM6OlByb2Nl
c3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NU
eXBlOjpOZXR3b3JrOyB9CisgICAgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OlVJOyB9CiAKICAgICAvLyBEb3du
bG9hZE1hbmFnZXI6OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEb3dubG9hZCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0cm95RG93bmxvYWQoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiogZG93bmxvYWRQcm94eUNvbm5lY3Rpb24o
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgZG93bmxvYWRz
QXV0aGVudGljYXRpb25NYW5hZ2VyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVhdGVEb3du
bG9hZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRGVzdHJveURvd25sb2FkKCkgb3ZlcnJpZGU7
CisgICAgSVBDOjpDb25uZWN0aW9uKiBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpIG92ZXJyaWRl
OworICAgIEF1dGhlbnRpY2F0aW9uTWFuYWdlciYgZG93bmxvYWRzQXV0aGVudGljYXRpb25NYW5h
Z2VyKCkgb3ZlcnJpZGU7CiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICB2aXJ0dWFsIHZv
aWQgcGVuZGluZ0Rvd25sb2FkQ2FuY2VsZWQoRG93bmxvYWRJRCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwZW5kaW5nRG93bmxvYWRDYW5jZWxlZChEb3dubG9hZElEKSBvdmVycmlkZTsKICNlbmRpZgog
CiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCA5ZTBhZDgzYzZhZmM3OTU3
ZmZiOTMyNjgxODQ0NDU0MzUzN2M0ZmVjLi5kOTlkYzNhNjhlMTNjNDdhOTRmZDQ5MGFkOTllNjhm
MDYzNWFlOTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsMTYgKzg0LDE2IEBAIHB1YmxpYzoKICAgICBz
dHJ1Y3QgU3luY2hyb25vdXNMb2FkRGF0YTsKIAogICAgIC8vIE5ldHdvcmtMb2FkQ2xpZW50Lgot
ICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxT
ZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU2hvdWxkQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UgZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBp
bnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50
LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZTsKKyAgICB2
b2lkIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJD
b3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlkZTsKKyAgICBib29sIGlzU3luY2hyb25vdXMo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
ZGlyZWN0UmVzcG9uc2UpIG92ZXJyaWRlOworICAgIFNob3VsZENvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92
ZXJyaWRlOwogI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgdmlydHVhbCB2b2lkIGRpZEJl
Y29tZURvd25sb2FkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgpIG92
ZXJyaWRlOwogI2VuZGlmCiAgICAgCiAgICAgdm9pZCBkaWRDb252ZXJ0VG9Eb3dubG9hZCgpOwpA
QCAtMTAyLDggKzEwMiw4IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyKGNv
bnN0IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiwgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZWZQdHI8TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpEZWxheWVkUmVwbHk+JiYpOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyCi0gICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyOyB9CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92
ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KIAogI2lmIEVOQUJMRShORVRX
T1JLX0NBQ0hFKQogICAgIGJvb2wgY2FuVXNlQ2FjaGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAppbmRleCAzMjdmMmMzMDgwMDYxMjczNWU3Yjk1
M2FiYzBiMWM0ODZmMmU3YWZiLi5kMjJmYzlkNjczZWM5MWZhMDNmMWIyNDE1NmZlOTMyZjdiYzJi
YzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9SZW1vdGVOZXR3
b3JraW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL1JlbW90
ZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIC8vIEZJ
WE1FOiBSZW1vdmUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBhbmQgdXNlIFNlc3Npb25UcmFja2Vy
LgogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oV2ViQ29yZTo6
U2Vzc2lvbklEKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CisgICAgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0OyB9CiAKIHByaXZhdGU6CiAgICAg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KQpAQCAtNTIsMTUgKzUy
LDE1IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlk
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ZhbGlk
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBzZXRMb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKGJvb2wgdmFsdWUpIHsg
bV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkID0gdmFsdWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERh
dGEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VBcHBsaWNhdGlv
bklkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNv
bnN0IG92ZXJyaWRlOworICAgIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgp
IGNvbnN0IG92ZXJyaWRlOworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0
aW9uQXVkaXREYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0
aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IG92
ZXJyaWRlOwogI2VuZGlmCiAKICAgICBXZWJDb3JlOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCmluZGV4IDFkZWVjNzJlZDc0YjY2NjFmODhk
YTZhMDYyMmI0OGNmYjljNDEzOTkuLmIyNGY5Yzg1ZTg0NjE2ZTljNTlhNDYxYjA3MzIyZmY2NjE0
MWUxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oCkBAIC01MSwxNiArNTEs
MTYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIE5ldHdvcmtMb2FkQ2xpZW50LgotICAg
IHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YSh1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTZW50LCB1
bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNv
bnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwg
Ym9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0
UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25z
ZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQnVmZmVyKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVk
IGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNl
bnQpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUFzeW5jKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlIHsg
fQorICAgIGJvb2wgaXNTeW5jaHJvbm91cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdm9pZCB3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RS
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KSBvdmVycmlkZTsKKyAgICBTaG91bGRDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSBkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUJ1ZmZlcihSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZh
aWxMb2FkaW5nKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQotICAgIHZpcnR1YWwgdm9pZCBkaWRCZWNvbWVEb3dubG9hZCgp
IG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGRpZEJlY29tZURv
d25sb2FkKCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKICAg
ICB2b2lkIGRpZENvbXBsZXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvRGF0YVJlZmVyZW5jZS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0RhdGFS
ZWZlcmVuY2UuaAppbmRleCBlNjgwNmIwNzQxM2FkMmNlMjk4OWU5NDI4OWI5ZDE4ODAzYTkyN2Qz
Li4yYmYyODllN2ViMTdlZjY3OGJmYzFiZmZhMzViMGQ1NWJkNjE1YzY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEoKSBjb25zdCA9IGRlbGV0ZTsKICAgICBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yKCkgY29uc3QgPSBkZWxldGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggOGI1ZmJhOWIwMGY1
ZTI1YzBmZDY4ZWI1MDVhODM2NmFmNWUzNDU0NS4uNzJjZmQ4OTQ2MzJjOGY4ZTM2MjVkNDMxMjll
Yjc5ODI3ZTQwMzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC04Myw0MSArODMsNDEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHBhaW50KCk7CiAKICAgICAvLyBQbHVnaW5Db250cm9sbGVyCi0gICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU3RyaW5nIHVzZXJBZ2VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBsb2Fk
VVJMKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SFRUUEhl
YWRlck1hcCYgaGVhZGVyRmllbGRzLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGh0dHBCb2R5LCBi
b29sIGFsbG93UG9wdXBzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVTdHJl
YW1Mb2FkKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsU3RyZWFtTG9hZCh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGNhbmNlbE1hbnVhbFN0cmVhbUxvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIE5QT2Jq
ZWN0KiB3aW5kb3dTY3JpcHROUE9iamVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTlBPYmpl
Y3QqIHBsdWdpbkVsZW1lbnROUE9iamVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBl
dmFsdWF0ZShOUE9iamVjdCosIGNvbnN0IFN0cmluZyYgc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQq
IHJlc3VsdCwgYm9vbCBhbGxvd1BvcHVwcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFBsdWdpbklzUGxheWluZ0F1ZGlvKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEluaXRpYWxpemVQbHVnaW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bFRvSW5pdGlhbGl6ZVBsdWdpbigpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHVzZXJBZ2VudCgpIG92
ZXJyaWRlOworICAgIHZvaWQgbG9hZFVSTCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0YXJnZXQs
IGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcywgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBodHRwQm9keSwgYm9vbCBhbGxvd1BvcHVwcykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjb250aW51ZVN0cmVhbUxvYWQodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOworICAgIHZv
aWQgY2FuY2VsU3RyZWFtTG9hZCh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjYW5jZWxNYW51YWxTdHJlYW1Mb2FkKCkgb3ZlcnJpZGU7CisgICAgTlBPYmplY3QqIHdpbmRv
d1NjcmlwdE5QT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgTlBPYmplY3QqIHBsdWdpbkVsZW1lbnRO
UE9iamVjdCgpIG92ZXJyaWRlOworICAgIGJvb2wgZXZhbHVhdGUoTlBPYmplY3QqLCBjb25zdCBT
dHJpbmcmIHNjcmlwdFN0cmluZywgTlBWYXJpYW50KiByZXN1bHQsIGJvb2wgYWxsb3dQb3B1cHMp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGx1Z2luSXNQbGF5aW5nQXVkaW8oYm9vbCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpIG92ZXJyaWRlOworICAg
IHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEluaXRp
YWxpemVQbHVnaW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4oKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBw
bHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRDb21wbGV4VGV4dElucHV0U3RhdGUoUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0
YXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQm
IGNvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGx1Z2lu
Rm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENv
bXBsZXhUZXh0SW5wdXRTdGF0ZShQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpIG92ZXJyaWRl
OworICAgIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmIGNvbXBvc2l0aW5nUmVuZGVyU2Vy
dmVyUG9ydCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGZsb2F0IGNvbnRlbnRz
U2NhbGVGYWN0b3IoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBwcm94aWVzRm9yVVJM
KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JV
UkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzTXV0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lzTXV0ZWQ7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZv
KGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmlu
ZyYgcGFzc3dvcmQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJv
bURlc3RydWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdp
bkZyb21EZXN0cnVjdGlvbigpIG92ZXJyaWRlOworICAgIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0
b3IoKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgcHJveGllc0ZvclVSTChjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKKyAgICBTdHJpbmcgY29va2llc0ZvclVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBvdmVycmlkZTsKKyAgICBib29sIGlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNNdXRlZDsgfQorICAgIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZv
KGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmlu
ZyYgcGFzc3dvcmQpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvdGVjdFBsdWdpbkZyb21EZXN0cnVj
dGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9u
KCkgb3ZlcnJpZGU7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgdmlydHVhbCB1
aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3
aW5kb3dJRCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luVmlzaWJp
bGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92ZXJyaWRl
OworICAgIHVpbnQ2NF90IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIG92ZXJyaWRlOworICAgIHZv
aWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3
aW5kb3dJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxpdHlEaWRD
aGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsKICNlbmRp
ZgogICAgIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCmluZGV4IDFjYzRiZjcxYTlmOTBmOGJhNDIxZDNhOGEy
MDRmMjQzYTRhOTVmZTQuLjliZTViNGE0YTJkZjg1ODlkN2ZkNDRkY2ZlNDA1ZTdhMTZjNTYzMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCkBAIC03
NywyMiArNzcsMjIgQEAgcHJpdmF0ZToKICAgICB+UGx1Z2luUHJvY2VzcygpOwogCiAgICAgLy8g
Q2hpbGRQcm9jZXNzCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENo
aWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVT
YW5kYm94KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRi
b3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkVGVybWluYXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplUHJvY2Vzcyhj
b25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGluaXRpYWxpemVQcm9jZXNzTmFtZShjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNv
bnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFRlcm1pbmF0ZSgp
IG92ZXJyaWRlOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vzcyhjb25zdCBDaGls
ZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKIAogI2lmIFVTRShBUFBLSVQpCi0g
ICAgdmlydHVhbCB2b2lkIHN0b3BSdW5Mb29wKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wUnVu
TG9vcCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
SW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6UGx1Z2luOyB9Ci0gICAgdmlydHVhbCBJ
UEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBD
OjpQcm9jZXNzVHlwZTo6VUk7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsK
KyAgICBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVy
biBJUEM6OlByb2Nlc3NUeXBlOjpQbHVnaW47IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90
ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6VUk7IH0K
IAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJv
Y2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAt
MTA0LDkgKzEwNCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvckhv
c3ROYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdE5hbWVzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKIAogICAgIC8vIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lckNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBhdWRpb0hhcmR3YXJlRGlkQmVjb21lQWN0aXZlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKSBvdmVycmlkZSB7IH0KKyAgICB2
b2lkIGF1ZGlvSGFyZHdhcmVEaWRCZWNvbWVBY3RpdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGF1
ZGlvSGFyZHdhcmVEaWRCZWNvbWVJbmFjdGl2ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgYXVkaW9P
dXRwdXREZXZpY2VDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9CiAKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24uaAppbmRleCBiYjMzMTdjOTM1Y2E0NzU3YjE3YTIxN2ViZjJkM2I5YmJiNzE1NTc0
Li4xOGJlMDA4MjRhNzdmNDczYTYwOWZjNDdjYWQ0ZjQzNzhmMjYyYmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC02
NSwxMiArNjUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVy
UHJveHkoUGx1Z2luQ29udHJvbGxlclByb3h5Kik7CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246
OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSBs
b2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6UGx1
Z2luOyB9Ci0gICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVy
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIElQQzo6UHJvY2Vzc1R5cGUgbG9jYWxQ
cm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OlBsdWdpbjsg
fQorICAgIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3RlUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJl
dHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oCmluZGV4IGNmMDA3OWJhMmQ5YjYwYjIzMWIwYTQ5ZWY4ODU0NmI5Yzg3MjQxNTIu
LjJiMDhiZjJlZjNhODEyNDgwNGUzYTgzZTM0YzcyYjA2NzI5MmNmNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMjUzLDcgKzI1Myw3IEBAIHByb3RlY3RlZDoKICAg
ICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBBUElUeXBlOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
QVBJVHlwZTsgfQogCiAjaWYgREVMRUdBVEVfUkVGX0NPVU5USU5HX1RPX0NPQ09BCiAgICAgdm9p
ZCogb3BlcmF0b3IgbmV3KHNpemVfdCBzaXplKSB7IHJldHVybiBuZXdPYmplY3Qoc2l6ZSwgQVBJ
VHlwZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaAppbmRleCBjNzE1YzQzNjU4NzY0MzJlNzQ1ZmU2OTg1MDcyN2Qx
NTgzOTQ5NDU4Li5hOWE3Mjc4YmYyNjFlZjAxMjk5ZDVhZTczN2QyNTI0Y2ZjYzhiN2Y2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lz
dHJ5LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RS
ZWdpc3RyeS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBpbnZva2VN
ZXRob2QoY29uc3QgUmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FzeW5jUmVxdWVzdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Fz
eW5jUmVxdWVzdC5oCmluZGV4IDYwOTE2NGNiOGIxM2QyYjhhZjYxYzhlMGQ2M2UyMjU3ZTg3NWE0
NTEuLjVmMzI3YzQ5NjllY2ViODk5YThlZGUwY2U5ZTBmYzMxNTc4N2I3OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1JlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQXN5bmNSZXF1ZXN0LmgKQEAgLTkwLDcgKzkwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgQVNTRVJUKG1fY29tcGxldGlvbkhhbmRsZXIpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhckNvbXBsZXRpb25IYW5kbGVyKCkgb3ZlcnJpZGUKKyAgICB2b2lkIGNsZWFyQ29tcGxl
dGlvbkhhbmRsZXIoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxl
ciA9IG51bGxwdHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDY5NWRkYjhh
OWMyMDRkOGVjOWRiMjRkZGJkMTFhM2M4ZGM3Y2I5ZWUuLmVhZTZhYjY1MjUzYmFhMjE5MTE2NDI3
YzZmN2QyZTcyODhkMDFiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTkyLDcgKzky
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAg
IGJvb2wgdHJ5VXNlQ2VydGlmaWNhdGVJbmZvRm9yQ2hhbGxlbmdlKGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2VXaXRoU2FuZGJveEV4dGVuc2lvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKaW5kZXggNzg3MjllYTdlOTI5NWMw
ZThhODcxZDcyZDEyMjI3ZDIzZWIxZmFhOC4uN2FlOGQyYTZmNTRhNGQ5NThiZWE3NmFjNzA0MzA0
ZmIxNmUyNWE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Jsb2JEYXRhRmls
ZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9uLmgKQEAgLTQzLDgg
KzQzLDggQEAgcHJpdmF0ZToKICAgICBCbG9iRGF0YUZpbGVSZWZlcmVuY2VXaXRoU2FuZGJveEV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4p
OwogICAgIHZpcnR1YWwgfkJsb2JEYXRhRmlsZVJlZmVyZW5jZVdpdGhTYW5kYm94RXh0ZW5zaW9u
KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmV2b2tlRmlsZUFjY2VzcygpIG92ZXJyaWRlOworICAgIHZvaWQg
cHJlcGFyZUZvckZpbGVBY2Nlc3MoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJldm9rZUZpbGVBY2Nl
c3MoKSBvdmVycmlkZTsKIAogICAgIFJlZlB0cjxTYW5kYm94RXh0ZW5zaW9uPiBtX3NhbmRib3hF
eHRlbnNpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJv
Y2Vzcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NoaWxkUHJvY2Vzcy5oCmluZGV4IDZiMTJj
MzYzNTQ4ODQzMDk0MGFkMTVjMDhiZWIzNTY0ZjAxMzM4MzcuLjgyZjFkZjk4MDA4MGM1N2U5NDhi
NWZlMmQ2OTVkMTgzNjRhZDYyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
aGlsZFByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ2hpbGRQcm9jZXNzLmgK
QEAgLTk4LDEyICs5OCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgc3RvcE5TQXBw
UnVuTG9vcCgpOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgotICAg
IHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBv
dmVycmlkZTsKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
b3ZlcnJpZGU7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgc2h1dERvd24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlLmgKaW5kZXggOTgwMjYyNjJhZTY0ZjA3OTQ3OTlkMjljNGU5ZDFiZjlhODNiNmZj
OS4uMTY2YzBhMWM3ZGU4ZWRhZjkwODQ4ZTY3NDk1ZDQwZDJkZDA5Nzk2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC02NSw5ICs2NSw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNvbW1pdFRpbGVPcGVyYXRpb25zKFdlYkNvcmU6OlRleHR1cmVNYXBwZXImKTsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXImLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGZsb2F0IGJvcmRlcldp
ZHRoLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVwYWludENvdW50
ZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYsIGludCByZXBhaW50Q291bnQsIGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRyYXdCb3JkZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYsIGNvbnN0IFdlYkNvcmU6
OkNvbG9yJiwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNv
bnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
cmF3UmVwYWludENvdW50ZXIoV2ViQ29yZTo6VGV4dHVyZU1hcHBlciYsIGludCByZXBhaW50Q291
bnQsIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBDb29yZGluYXRlZEJhY2tpbmdTdG9yZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oCmluZGV4IDY4YWFiZmU0MGM0ZGY4MTk3ZDE2ZmJkNjJiOGFmZmE1ZTljMjc5
NjAuLmRhN2U5Mzk4ZGFlOGFlNGUyZTNiZjgxY2RhMjcyMjdkMjk3NWY2YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQs
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CiAKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1NfVEhSRUFERUQpCi0gICAgdmlydHVhbCB2b2lkIG9uTmV3QnVmZmVyQXZhaWxhYmxl
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBvbk5ld0J1ZmZlckF2YWlsYWJsZSgpIG92ZXJyaWRlOwog
I2VuZGlmCiAKICAgICAvLyBSZW5kZXIgcXVldWUgY2FuIGJlIGFjY2Vzc2VkIG9ueSBmcm9tIG1h
aW4gdGhyZWFkIG9yIHVwZGF0ZVBhaW50Tm9kZSBjYWxsIHN0YWNrIQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ29vcmRpbmF0ZWRTdXJm
YWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29y
ZGluYXRlZFN1cmZhY2UuaAppbmRleCA4YTE4ZjYwNzY5NmJmYTBiNzBjZGEyYzBkYjc4NDc5NmFl
NDg2NmE3Li43ZTYxMWM4ZDY2NDdiMTdkOTk1YjhmMGIzZTZlOTU4Zjc2NDNhMDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDb29yZGlu
YXRlZFN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDb29yZGluYXRlZFN1cmZhY2UuaApAQCAtNzEsMTAgKzcxLDEwIEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgfldlYkNvb3JkaW5hdGVkU3VyZmFjZSgpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpDb29y
ZGluYXRlZFN1cmZhY2U6OkNsaWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnRUb1N1cmZh
Y2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6
Q2xpZW50Kikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAgdmlydHVh
bCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
c291cmNlT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0
cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSBvdmVycmlkZTsKICNlbmRp
ZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1cmZh
Y2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmgKaW5kZXggMjQ3MjUxZjI4
NWFhY2Q2NzIyMGZjMjU1NDUxNjFlZjk0YWE1MzNiOC4uMzQxODRlY2RhMzFlMzA3MDk4MTAzOGVl
ZDA1NWMxNTBlMzZkNmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90
aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNvb3JkaW5hdGVkU3VyZmFjZS5oCkBAIC0zOSw4
ICszOSw4IEBAIHB1YmxpYzoKICAgICAvLyBDcmVhdGUgYSBuZXcgVGhyZWFkU2FmZUNvb3JkaW5h
dGVkU3VyZmFjZSBhbmQgYWxsb2NhdGUgZWl0aGVyIGEgR3JhcGhpY3NTdXJmYWNlIG9yIGEgSW1h
Z2VCdWZmZXIgYXMgYmFja2luZy4KICAgICBzdGF0aWMgUmVmPFRocmVhZFNhZmVDb29yZGluYXRl
ZFN1cmZhY2U+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1N1cmZhY2Uo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6Q2xp
ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUb1RleHR1cmUoUGFzc1JlZlB0
cjxXZWJDb3JlOjpCaXRtYXBUZXh0dXJlPiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdGFyZ2V0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc291cmNlT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2
b2lkIHBhaW50VG9TdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpDb29y
ZGluYXRlZFN1cmZhY2U6OkNsaWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgY29weVRvVGV4dHVy
ZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzb3VyY2VPZmZzZXQpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgogICAgIFRocmVhZFNhZmVDb29yZGluYXRlZFN1cmZhY2UoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbWFnZUJ1ZmZlcj4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1Ro
cmVhZGVkQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5oCmluZGV4IDRhNzg5
ZmQxNDNmNDgxYjNlY2NkMTIxOTllNTQ1MjYzYzczZjgwNTMuLjExMTFiZmZlYTMxYWJkMTQ4YWU1
OWM1MTQyYzk3Yjg0ZGEzZTg3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmgKQEAgLTgxLDE0ICs4MSwxNCBAQCBwcml2
YXRlOgogICAgIFRocmVhZGVkQ29tcG9zaXRvcihDbGllbnQqKTsKIAogICAgIC8vIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZUNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9y
ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpZXdwb3J0KCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgcHVyZ2VCYWNraW5nU3Rv
cmVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHVwZGF0ZVZpZXdwb3J0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRTY3JvbGxP
ZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KSBv
dmVycmlkZTsKIAogICAgIHZvaWQgcmVuZGVyTGF5ZXJUcmVlKCk7CiAgICAgdm9pZCBzY2hlZHVs
ZURpc3BsYXlJbW1lZGlhdGVseSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaXNpYmxl
UmVjdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlVmlzaWJsZVJlY3QoKSBvdmVycmlk
ZTsKIAogICAgIGJvb2wgZW5zdXJlR0xDb250ZXh0KCk7CiAgICAgV2ViQ29yZTo6R0xDb250ZXh0
KiBnbENvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21w
aWxlZENvbnRlbnRFeHRlbnNpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24uaAppbmRleCAyOWNiMTA2ZGU1NGY0YTJjNmE0N2FlNTQxN2U4NDlk
YzcyZDI2NTI1Li41M2RkNmZiNDc0MDJjOGQ5YmJkZWRjYzBhNzU0Y2JmMjgwYzZlNDVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lv
bi5oCkBAIC00NCwxNSArNDQsMTUgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb21waWxl
ZENvbnRlbnRFeHRlbnNpb24oV2ViQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uRGF0YSYmKTsKIAot
ICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2Rl
KiBmaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdW5zaWduZWQgZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGVMZW5ndGgoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3Ro
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGRvbWFpbkZpbHRlcnNCeXRlY29kZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgZG9tYWluRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRG
QUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHVuc2lnbmVkIGZpbHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlTGVuZ3RoKCkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlKiBmaWx0ZXJzV2l0aERvbWFpbnNCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlOworICAg
IHVuc2lnbmVkIGZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgY29uc3QgV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBk
b21haW5GaWx0ZXJzQnl0ZWNvZGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBkb21h
aW5GaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0
dWFsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0
ZSogYWN0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdW5zaWduZWQgYWN0aW9u
c0xlbmd0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRFeHRl
bnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0ZSogYWN0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHVuc2lnbmVkIGFjdGlvbnNMZW5ndGgoKSBjb25zdCBvdmVycmlkZTsKICAgICAKICAgICBX
ZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhIG1fZGF0YTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgKaW5kZXggMTBjZmZjZTU1
NWM2MmQyMTc5ODdkMzY1ZmQ0NTA2NWVmNzQxOTZkYS4uZWE1Y2VhMTdjYzYwY2Y4MTIxYTBhNzc1
ZjVkMjMzZTI5ODlhMjc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlNR
TGl0ZURhdGFiYXNlVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKFdlYlByb2Nlc3MmKTsKIAogICAgIC8vIFdlYkNv
cmU6OlNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVn
aW5GaXJzdFRyYW5zYWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlz
aExhc3RUcmFuc2FjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEJlZ2luRmlyc3RUcmFu
c2FjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTGFzdFRyYW5zYWN0aW9uKCkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBoeXN0ZXJlc2lzVXBkYXRlZChXZWJDb3Jl
OjpIeXN0ZXJlc2lzU3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9TZWNJdGVtU2hpbS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TZWNJdGVtU2hpbS5o
CmluZGV4IDI5ODE4MmZkM2ZkZjhhYTRjYmQ0MjYwZjZiNGY5MTc3NWVjYmEyYjguLmNhMGQ2NDk4
MGQ3ZmRiZWZmYjE4NjZmOGFkMWZlMjE3NjE2NDg0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvU2VjSXRlbVNoaW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1NlY0l0ZW1TaGltLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICBTZWNJdGVt
U2hpbSgpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgc2VjSXRlbVJlc3BvbnNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2VjSXRl
bVJlc3BvbnNlRGF0YSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAppbmRleCBhZTA4YTJh
ZDU2ZWY3ZWFlYzdiOWUzNDMzMzczNWRmNjA2NjdhYzQ1Li41ZmNiNWZiM2U2MWYwNzlhYWE3MTM2
ODA2OTJkYWMzMTRkNGI1N2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKQEAgLTE3OSw3
ICsxNzksNyBAQCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGNvbXBpbGVkVG9GaWxlKFN0cmluZyYm
IGpzb24sIGNvbnN0IFN0cmluZyYgZmluYWxGaWxlUGF0aAogICAgICAgICAgICAgQVNTRVJUKCFt
ZXRhRGF0YS5kb21haW5GaWx0ZXJzQnl0ZWNvZGVTaXplKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHdyaXRlRmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGUo
VmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQorICAgICAgICB2b2lkIHdy
aXRlRmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5
dGVjb2RlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZmlsdGVy
c1dpdGhEb21haW5CeXRlY29kZVdyaXR0ZW4pOwogICAgICAgICAgICAgQVNTRVJUKCFtX2RvbWFp
bkZpbHRlcnNCeXRlY29kZVdyaXR0ZW4pOwpAQCAtMTg3LDIwICsxODcsMjAgQEAgc3RhdGljIHN0
ZDo6ZXJyb3JfY29kZSBjb21waWxlZFRvRmlsZShTdHJpbmcmJiBqc29uLCBjb25zdCBTdHJpbmcm
IGZpbmFsRmlsZVBhdGgKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUuZGF0
YSgpLCBieXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHdyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVj
b2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQorICAgICAgICB2b2lkIHdyaXRlRmlsdGVyc1dpdGhE
b21haW5zQnl0ZWNvZGUoVmVjdG9yPERGQUJ5dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZG9tYWluRmlsdGVyc0J5dGVjb2RlV3Jp
dHRlbik7CiAgICAgICAgICAgICBtX2ZpbHRlcnNXaXRoRG9tYWluQnl0ZWNvZGVXcml0dGVuICs9
IGJ5dGVjb2RlLnNpemUoKTsKICAgICAgICAgICAgIHdyaXRlVG9GaWxlKERhdGEoYnl0ZWNvZGUu
ZGF0YSgpLCBieXRlY29kZS5zaXplKCkpKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHdyaXRlRG9tYWluRmlsdGVyc0J5dGVjb2RlKFZlY3RvcjxERkFCeXRlY29k
ZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCB3cml0ZURvbWFpbkZpbHRlcnNC
eXRlY29kZShWZWN0b3I8REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fZG9tYWluRmlsdGVyc0J5dGVjb2RlV3JpdHRlbiArPSBieXRlY29k
ZS5zaXplKCk7CiAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGJ5dGVjb2RlLmRhdGEoKSwg
Ynl0ZWNvZGUuc2l6ZSgpKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVBY3Rpb25zKFZlY3RvcjxTZXJpYWxpemVkQWN0aW9uQnl0ZT4mJiBhY3Rpb25zKSBvdmVycmlk
ZQorICAgICAgICB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8U2VyaWFsaXplZEFjdGlvbkJ5dGU+
JiYgYWN0aW9ucykgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKCFtX2Zp
bHRlcnNXaXRob3V0RG9tYWluc0J5dGVjb2RlV3JpdHRlbik7CiAgICAgICAgICAgICBBU1NFUlQo
IW1fZmlsdGVyc1dpdGhEb21haW5CeXRlY29kZVdyaXR0ZW4pOwpAQCAtMjEwLDcgKzIxMCw3IEBA
IHN0YXRpYyBzdGQ6OmVycm9yX2NvZGUgY29tcGlsZWRUb0ZpbGUoU3RyaW5nJiYganNvbiwgY29u
c3QgU3RyaW5nJiBmaW5hbEZpbGVQYXRoCiAgICAgICAgICAgICB3cml0ZVRvRmlsZShEYXRhKGFj
dGlvbnMuZGF0YSgpLCBhY3Rpb25zLnNpemUoKSkpOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoKSBvdmVycmlkZQorICAgICAgICB2b2lkIGZpbmFs
aXplKCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgbV9tZXRhRGF0YS5hY3Rpb25z
U2l6ZSA9IG1fYWN0aW9uc1dyaXR0ZW47CiAgICAgICAgICAgICBtX21ldGFEYXRhLmZpbHRlcnNX
aXRob3V0RG9tYWluc0J5dGVjb2RlU2l6ZSA9IG1fZmlsdGVyc1dpdGhvdXREb21haW5zQnl0ZWNv
ZGVXcml0dGVuOwpAQCAtMzk5LDcgKzM5OSw3IEBAIGNvbnN0IHN0ZDo6ZXJyb3JfY2F0ZWdvcnkm
IHVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVFcnJvckNhdGVnb3J5KCkKICAgICAgICAgICAgIHJl
dHVybiAidXNlciBjb250ZW50IGV4dGVuc2lvbiBzdG9yZSI7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIG1lc3NhZ2UoaW50IGVycm9yQ29kZSkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZShpbnQgZXJyb3JDb2RlKSBjb25zdCBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFVzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yPihlcnJvckNvZGUpKSB7CiAgICAgICAgICAgICBjYXNl
IFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU6OkVycm9yOjpMb29rdXBGYWlsZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IGJjNGJkZTgxMTFl
N2M0Y2IwZWFmMTgzODg2MDg1MTNmYzMxZDg0NTIuLmRhOWFkMDM3OGE0N2FlYjdiN2I0MWNmYTZi
ZTNlZTgyZmUwZjBjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2wKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBuYXZpZ2F0aW9uRGF0YVN0
b3JlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWROYXZp
Z2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIFdlYlBh
Z2VQcm94eSYgcGFnZSwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgbmF2aWdhdGlvbkRh
dGFTdG9yZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgV0tDb250ZXh0U2V0
SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlz
dG9yeUNsCiAgICAgICAgICAgICBtX2NsaWVudC5kaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb25EYXRh
LmdldCgpKSwgdG9BUEkoJmZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVByb3h5
JiBmcmFtZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgICAgICAgICBtX2Ns
aWVudC5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEko
JnBhZ2UpLCB0b1VSTFJlZihzb3VyY2VVUkwuaW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRpb25V
UkwuaW1wbCgpKSwgdG9BUEkoJmZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Qo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRQZXJmb3JtU2VydmVyUmVkaXJl
Y3QoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMLCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTMzLDcgKzEzMyw3IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgICAgICAgICBt
X2NsaWVudC5kaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9B
UEkoJnBhZ2UpLCB0b1VSTFJlZihzb3VyY2VVUkwuaW1wbCgpKSwgdG9VUkxSZWYoZGVzdGluYXRp
b25VUkwuaW1wbCgpKSwgdG9BUEkoJmZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBXZWJGcmFtZVByb3h5JiBmcmFtZSkgb3Zl
cnJpZGUKKyAgICAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoV2ViUHJvY2Vzc1Bvb2wm
IHByb2Nlc3NQb29sLCBXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNv
bnN0IFN0cmluZyYgdXJsLCBXZWJGcmFtZVByb3h5JiBmcmFtZSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRVcGRhdGVIaXN0b3J5VGl0bGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHZvaWQgV0tDb250ZXh0U2V0
SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlz
dG9yeUNsCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRVcGRhdGVIaXN0b3J5VGl0bGUodG9BUEko
JnByb2Nlc3NQb29sKSwgdG9BUEkoJnBhZ2UpLCB0b0FQSSh0aXRsZS5pbXBsKCkpLCB0b1VSTFJl
Zih1cmwuaW1wbCgpKSwgdG9BUEkoJmZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwb3B1bGF0ZVZpc2l0ZWRMaW5rcyhX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgcG9wdWxh
dGVWaXNpdGVkTGlua3MoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKSBvdmVycmlkZQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnBvcHVsYXRlVmlzaXRlZExpbmtzKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdLQ29udGV4
dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4
dEhpc3RvcnlDbAogICAgICAgICAgICAgbV9jbGllbnQucG9wdWxhdGVWaXNpdGVkTGlua3ModG9B
UEkoJnByb2Nlc3NQb29sKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBhZGRzVmlzaXRlZExpbmtzKCkgY29uc3Qgb3ZlcnJpZGUK
KyAgICAgICAgYm9vbCBhZGRzVmlzaXRlZExpbmtzKCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnBvcHVsYXRlVmlzaXRlZExpbmtzOwogICAg
ICAgICB9CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWQKICAgICAg
ICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERv
d25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkU3Rh
cnQoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0
YXJ0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFdL
Q29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBX
S0NvbnRleHREb3dubG9hZAogICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnQodG9BUEkocHJv
Y2Vzc1Bvb2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5
KiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2Fk
UHJveHkqIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIFdLQ29udGV4dFNldERv
d25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3du
bG9hZAogICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9j
ZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25z
ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBXS0Nv
bnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tD
b250ZXh0RG93bmxvYWQKICAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSh0
b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShBUEk6OlVSTFJl
c3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQ
cm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIHVp
bnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDcsNyAr
MjA3LDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWQKICAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVEYXRhKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIGxl
bmd0aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShXZWJQcm9jZXNzUG9v
bCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpIG92ZXJyaWRlCisgICAgICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZv
aWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNv
bnN0IFdLQ29udGV4dERvd25sb2FkCiAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkocHJvY2Vzc1Bvb2wpLCB0b0FQSShkb3du
bG9hZFByb3h5KSwgdG9BUEkobWltZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgU3RyaW5nIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93
bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYg
YWxsb3dPdmVyd3JpdGUpIG92ZXJyaWRlCisgICAgICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25s
b2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFs
bG93T3ZlcndyaXRlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQogICAgICAgICAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIFdLQ29udGV4dFNl
dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRE
b3dubG9hZAogICAgICAgICAgICAgcmV0dXJuIHRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgp
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKICAgICAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9h
ZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0RG93bmxvYWQK
ICAgICAgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKHByb2Nlc3NQ
b29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKHBhdGguaW1wbCgpKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2goV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9h
ZFByb3h5KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCog
cHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2Fk
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3dubG9hZAog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEko
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2ws
IERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
YWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdL
Q29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBX
S0NvbnRleHREb3dubG9hZAogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbCh0b0FQSShwcm9j
ZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJvciksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNz
UG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpIG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFdLQ29udGV4dFNldERv
d25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHREb3du
bG9hZAogICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKHRvQVBJKHByb2Nlc3NQb29sKSwg
dG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJv
Y2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KSBvdmVy
cmlkZQorICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCogcHJvY2Vz
c1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5k
ZXggZDhlNTc2M2UyMjRmZGQ2ZTU3YWI3MWMyYjQ1ZmRhYjY1YmFjMzEyYi4uNTE4YWQzYWFiMDMz
MWVmNWMzZjA3NTAzYWVjMTg5ZWViYWUwMDc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VD
b250ZXh0TWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlQ29udGV4dE1l
bnVDbAogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgVmVj
dG9yPFJlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBwcm9wb3NlZE1lbnVWZWN0
b3IsIFZlY3RvcjxSZWZQdHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgY3VzdG9tTWVu
dSwgY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIGJvb2wgZ2V0Q29udGV4dE1lbnVGcm9t
UHJvcG9zZWRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJL
aXQ6OldlYkNvbnRleHRNZW51SXRlbT4+JiBwcm9wb3NlZE1lbnVWZWN0b3IsIFZlY3RvcjxSZWZQ
dHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW0+PiYgY3VzdG9tTWVudSwgY29uc3QgV2ViSGl0
VGVzdFJlc3VsdERhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZ2V0Q29udGV4
dE1lbnVGcm9tUHJvcG9zZWRNZW51ICYmICFtX2NsaWVudC5nZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnVfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGN1
c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVkKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbURhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgY3Vz
dG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBXZWJD
b250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5jdXN0b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZCkKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC04NDgsNyArODQ4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
Q29udGV4dE1lbnVDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRN
ZW51Q2wKICAgICAgICAgICAgIG1fY2xpZW50LmN1c3RvbUNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KHRvQVBJKCZwYWdlKSwgdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoaXRlbURhdGEp
LnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBzaG93Q29udGV4dE1lbnUoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgbWVudUxvY2F0aW9uLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNv
bnRleHRNZW51SXRlbT4+JiBtZW51SXRlbXNWZWN0b3IpIG92ZXJyaWRlCisgICAgICAgIGJvb2wg
c2hvd0NvbnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIG1lbnVMb2NhdGlvbiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+
PiYgbWVudUl0ZW1zVmVjdG9yKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LnNob3dDb250ZXh0TWVudSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlQ29udGV4dE1lbnVDbGllbnQo
V0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUNvbnRleHRNZW51Q2wKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGhpZGVDb250
ZXh0TWVudShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIGJvb2wgaGlkZUNv
bnRleHRNZW51KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5oaWRlQ29udGV4dE1lbnUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtODk3LDcgKzg5Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3Ry
aW5nKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QpIG92ZXJy
aWRlCisgICAgICAgIHZvaWQgZGlkRmluZFN0cmluZyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50MzJf
dCBtYXRjaENvdW50LCBpbnQzMl90KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZEZpbmRTdHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTA1LDcgKzkwNSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGllbnRCYXNlKiB3a0NsCiAgICAgICAgICAgICBtX2Ns
aWVudC5kaWRGaW5kU3RyaW5nKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1wbCgpKSwgbWF0
Y2hDb3VudCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFpbFRvRmluZFN0
cmluZyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3RyaW5nKSBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWxUb0ZpbmRTdHJpbmcp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTEzLDcgKzkxMyw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUZpbmRDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRDbGll
bnRCYXNlKiB3a0NsCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsVG9GaW5kU3RyaW5nKHRv
QVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNo
ZXMoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0
Y2hDb3VudCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3QgbWF0Y2hDb3Vu
dCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDb3Vu
dFN0cmluZ01hdGNoZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTM1LDcgKzkzNSw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUZpbmRNYXRjaGVzQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVm
LCBjb25zdCBXS1BhZ2VGaW5kTWF0Y2hlc0NsCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBpbmRleCkgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0Y2hSZWN0
cywgaW50MzJfdCBpbmRleCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRGaW5kU3RyaW5nTWF0Y2hlcykKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC05NTYsNyArOTU2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlRmluZE1hdGNoZXNDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUZpbmRNYXRjaGVzQ2wKICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZEZpbmRTdHJpbmdNYXRjaGVzKHRvQVBJKHBhZ2UpLCB0b0FQSShzdHJpbmcuaW1w
bCgpKSwgdG9BUEkoQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUobWF0Y2hlcykpLnB0cigpKSwg
aW5kZXgsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdChXZWJQYWdlUHJveHkqIHBhZ2Us
IFdlYkltYWdlKiBpbWFnZSwgaW50MzJfdCBpbmRleCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBk
aWRHZXRJbWFnZUZvck1hdGNoUmVzdWx0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViSW1hZ2UqIGlt
YWdlLCBpbnQzMl90IGluZGV4KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZEdldEltYWdlRm9yTWF0Y2hSZXN1bHQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtOTg4LDcgKzk4OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
QVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAg
ICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpA
QCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQ
STo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDA0
LDcgKzEwMDQsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgICAgICBtX2NsaWVu
dC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0b0FQ
SSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWls
UHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJG
cmFtZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJh
bWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAxMiw3ICsxMDEyLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VM
b2FkZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZFdpdGhFcnJvckZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEko
ZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6TmF2aWdhdGlvbiosIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpO
YXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSkKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VM
b2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJh
c2UqCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUodG9BUEkoJnBh
Z2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
QVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAg
ICB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0x
MDI4LDcgKzEwMjgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgICAgICBtX2Ns
aWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZm
cmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRG
b3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5h
dmlnYXRpb24qLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwMzYsNyArMTAzNiw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxv
YWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFz
ZSoKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSh0b0FQSSgmcGFn
ZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZFdpdGhF
cnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQ
STo6TmF2aWdhdGlvbiosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWxM
b2FkV2l0aEVycm9yRm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA0NCw3
ICsxMDQ0LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdl
UmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQu
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSks
IHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBB
UEk6Ok5hdmlnYXRpb24qLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUs
IEFQSTo6TmF2aWdhdGlvbiosIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHRv
QVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodHlwZSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV2ViUGFnZVBy
b3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEwNjAsNyArMTA2MCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEko
dGl0bGUuaW1wbCgpKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZp
cnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZpcnN0
TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTA2OCw3ICsxMDY4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAg
ICAgICAgbV9jbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJ
KCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlM
YXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZv
ckZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwNzYsNyArMTA3Niw3IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZExheW91dChXZWJQYWdlUHJveHkmIHBhZ2UsIExheW91dE1p
bGVzdG9uZXMgbWlsZXN0b25lcykgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRMYXlvdXQoV2Vi
UGFnZVByb3h5JiBwYWdlLCBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkTGF5b3V0KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTEwODQsNyArMTA4NCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxv
YWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFz
ZSoKICAgICAgICAgICAgIG1fY2xpZW50LmRpZExheW91dCh0b0FQSSgmcGFnZSksIHRvV0tMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCBudWxscHRyLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1l
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2Fk
ZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQuZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAg
ICAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUnVuSW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTEwMCw3ICsxMTAwLDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQuZGlkUnVuSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAg
ICAgICB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0xMTA4LDcgKzExMDgsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVu
dEJhc2UqCiAgICAgICAgICAgICBtX2NsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSh0b0FQSSgm
cGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSkgb3Zl
cnJpZGUKKyAgICAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
SW5GcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJQcm90
ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNl
SW5GcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTE2LDcgKzExMTYs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQu
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUodG9BUEkoJnBhZ2Up
LCB0b0FQSSgmZnJhbWUpLCB0b0FQSShwcm90ZWN0aW9uU3BhY2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTExMjQsNyArMTEyNCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAg
ICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUodG9B
UEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnRQcm9ncmVzcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTMyLDcgKzExMzIsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNs
aWVudEJhc2UqCiAgICAgICAgICAgICBtX2NsaWVudC5kaWRTdGFydFByb2dyZXNzKHRvQVBJKCZw
YWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VQcm9ncmVzcyhXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZVByb2dy
ZXNzKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNDAsNyArMTE0MCw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
TG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgIG1fY2xpZW50LmRpZENoYW5nZVByb2dyZXNz
KHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hQcm9ncmVzcyhXZWJQYWdlUHJveHkmIHBhZ2Up
IG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5JiBw
YWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZp
bmlzaFByb2dyZXNzKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNDgsNyArMTE0OCw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlz
aFByb2dyZXNzKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZl
KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQmVj
b21lVW5yZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNTYsNyArMTE1Niw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVy
Q2xpZW50QmFzZSoKICAgICAgICAgICAgIG1fY2xpZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmUodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYlBh
Z2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNl
KgogICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUodG9BUEko
JnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2Fk
ZXJDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKHRvQVBJ
KCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWZQdHI8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4+IHJlbW92ZWRJdGVtcykgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtKiBhZGRlZEl0ZW0sIFZlY3RvcjxSZWZQdHI8V2ViQmFja0ZvcndhcmRMaXN0SXRl
bT4+IHJlbW92ZWRJdGVtcykgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTE5MCw3ICsxMTkwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAgICAgICAg
ICAgbV9jbGllbnQuZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KHRvQVBJKCZwYWdlKSwgdG9BUEko
YWRkZWRJdGVtKSwgdG9BUEkocmVtb3ZlZEl0ZW1zQXJyYXkuZ2V0KCkpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZEtl
ZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKSBvdmVycmlkZQorICAg
ICAgICBib29sIHNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJL
aXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBp
dGVtKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNob3Vs
ZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTExOTgsMzcgKzExOTgsMzcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9h
ZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNl
KgogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZEtlZXBDdXJyZW50QmFja0Zvcndh
cmRMaXN0SXRlbUluTGlzdCh0b0FQSSgmcGFnZSksIHRvQVBJKGl0ZW0pLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGl0ZW0sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCB3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBpdGVtLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0pCiAgICAgICAgICAgICAgICAgbV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtKHRvQVBJKCZwYWdlKSwgdG9BUEkoaXRlbSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQ
STo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUK
KyAgICAgICAgUmVmUHRyPEFQSTo6RGF0YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94
eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHBhZ2UucHJv
Y2VzcygpLnByb2Nlc3NQb29sKCkuY2xpZW50KCkuY29weVdlYkNyeXB0b01hc3RlcktleSgmcGFn
ZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbihXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJy
aWRlCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbihXZWJQYWdlUHJveHkm
IHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5uYXZp
Z2F0aW9uR2VzdHVyZURpZEJlZ2luKQogICAgICAgICAgICAgICAgIG1fY2xpZW50Lm5hdmlnYXRp
b25HZXN0dXJlRGlkQmVnaW4odG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlV2ls
bEVuZChXZWJQYWdlUHJveHkmIHBhZ2UsIGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiBpdGVtKSBvdmVycmlkZQorICAgICAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJl
V2lsbEVuZChXZWJQYWdlUHJveHkmIHBhZ2UsIGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiBpdGVtKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
bV9jbGllbnQubmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKQogICAgICAgICAgICAgICAgIG1fY2xp
ZW50Lm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh0b0FQSSgmcGFnZSksIHdpbGxOYXZpZ2F0ZSwg
dG9BUEkoJml0ZW0pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKFdlYlBhZ2VQcm94eSYg
cGFnZSwgYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pIG92
ZXJyaWRlCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoV2ViUGFnZVByb3h5
JiBwYWdlLCBib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50Lm5hdmlnYXRpb25H
ZXN0dXJlRGlkRW5kKQogICAgICAgICAgICAgICAgIG1fY2xpZW50Lm5hdmlnYXRpb25HZXN0dXJl
RGlkRW5kKHRvQVBJKCZwYWdlKSwgd2lsbE5hdmlnYXRlLCB0b0FQSSgmaXRlbSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6RGljdGlvbmFyeSogcGx1Z2luSW5mb3JtYXRpb24pIG92
ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXZWJQYWdlUHJv
eHkmIHBhZ2UsIEFQSTo6RGljdGlvbmFyeSogcGx1Z2luSW5mb3JtYXRpb24pIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCiAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3Jt
YXRpb25NSU1FVHlwZUtleSgpKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CkBAIC0xMjQw
LDcgKzEyNDAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgICAgICAgICAgbV9j
bGllbnQucGx1Z2luRGlkRmFpbCh0b0FQSSgmcGFnZSksIGtXS0Vycm9yQ29kZUNhbm5vdExvYWRQ
bHVnSW4sIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRCbG9ja0luc2VjdXJlUGx1
Z2luVmVyc2lvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6RGljdGlvbmFyeSogcGx1Z2luSW5m
b3JtYXRpb24pIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZl
cnNpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0
aW9uKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucGx1Z2lu
RGlkRmFpbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKQogICAgICAgICAgICAgICAgIG1fY2xpZW50
LnBsdWdpbkRpZEZhaWxfZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIGtXS0Vy
cm9yQ29kZUluc2VjdXJlUGx1Z0luVmVyc2lvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdl
dDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKSksIHRvQVBJKHBs
dWdpbkluZm9ybWF0aW9uLT5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uQnVuZGxl
SWRlbnRpZmllcktleSgpKSksIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8QVBJOjpTdHJp
bmc+KHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpKSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CkBAIC0xMjQ5LDcgKzEyNDksNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2Fk
ZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2Uq
CiAgICAgICAgICAgICAgICAgbV9jbGllbnQucGx1Z2luRGlkRmFpbCh0b0FQSSgmcGFnZSksIGtX
S0Vycm9yQ29kZUluc2VjdXJlUGx1Z0luVmVyc2lvbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24p
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xpY3koV2ViUGFnZVByb3h5JiBw
YWdlLCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCBBUEk6
OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uLCBTdHJpbmcmIHVuYXZhaWxhYmlsaXR5RGVz
Y3JpcHRpb24pIG92ZXJyaWRlCisgICAgICAgIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcGx1Z2lu
TG9hZFBvbGljeShXZWJQYWdlUHJveHkmIHBhZ2UsIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3Vy
cmVudFBsdWdpbkxvYWRQb2xpY3ksIEFQSTo6RGljdGlvbmFyeSogcGx1Z2luSW5mb3JtYXRpb24s
IFN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbikgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgV0tTdHJpbmdSZWYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbk91dCA9IDA7
CiAgICAgICAgICAgICBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGxvYWRQb2xpY3kgPSBjdXJyZW50
UGx1Z2luTG9hZFBvbGljeTsKQEAgLTEyNjksNyArMTI2OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50
QmFzZSoKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJM
RShXRUJHTCkKLSAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xM
b2FkUG9saWN5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IG92
ZXJyaWRlCisgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExvYWRQb2xpY3ko
V2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJpbmcmIHVybCkgY29uc3Qgb3ZlcnJpZGUKICAg
ICAgICAgewogICAgICAgICAgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IGxvYWRQb2xpY3kg
PSBXZWJHTEFsbG93Q3JlYXRpb247CiAKQEAgLTEyNzksNyArMTI3OSw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVy
Q2xpZW50QmFzZSoKICAgICAgICAgICAgIHJldHVybiBsb2FkUG9saWN5OwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMTG9h
ZFBvbGljeShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCBvdmVy
cmlkZQorICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMTG9hZFBv
bGljeShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBv
bGljeSA9IFdlYkdMQWxsb3dDcmVhdGlvbjsKIApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQ
b2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92
ZXJyaWRlCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5n
RnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBS
ZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICYm
ICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsK
ICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xMzM5LDcgKzEzMzksNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdL
UGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
bmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRv
biksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVlc3QucHRyKCkp
LCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNv
bnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYm
IGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKSB7
CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTM1MSw3ICsxMzUxLDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiks
IHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlz
dGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisg
ICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNw
b25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hv
d01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MCAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpIHsKICAgICAgICAgICAgICAg
ICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVu
dEJhc2UqCiAgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
dG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShyZXNwb25zZS5wdHIoKSksIHRvQVBJ
KHJlcXVlc3QucHRyKCkpLCBjYW5TaG93TUlNRVR5cGUsIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9saWN5KFdlYlBhZ2VQcm94
eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgdW5hYmxlVG9J
bXBsZW1lbnRQb2xpY3koV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC51bmFibGVUb0ltcGxlbWVu
dFBvbGljeSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xNjc5LDcgKzE2NzksNyBAQCB2
b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdl
VUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQ
cm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogaW5pdGlhdGluZ0ZyYW1lLCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29u
c3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhKSBvdmVycmlkZQor
ICAgICAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJv
eHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGluaXRpYXRpbmdGcmFtZSwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgb3ZlcnJpZGUKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2UpIHsKICAgICAg
ICAgICAgICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBwYWdlLT5jb25maWd1cmF0aW9uKCkuY29w
eSgpOwpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHNob3dQYWdlKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBzaG93
UGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9jbGllbnQuc2hvd1BhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcz
NSw3ICsxNzM1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xp
ZW50LnNob3dQYWdlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5mdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBXS1BhZ2VT
ZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFz
ZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lu
bGluZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgY2xvc2UoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmNsb3NlKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE3NTEsNyArMTc1MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAg
ICAgICAgICBtX2NsaWVudC5jbG9zZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXS0ZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCB0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiBwYWdlLCBXS0ZvY3VzRGlyZWN0aW9uIGRp
cmVjdGlvbikgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC50
YWtlRm9jdXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc1OSw3ICsxNzU5LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnRha2VGb2N1cyh0
b0FQSShwYWdlKSwgZGlyZWN0aW9uLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFdlYlBhZ2VQcm94eSogcGFnZSkgb3Zl
cnJpZGUKKyAgICAgICAgdm9pZCBmb2N1cyhXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZm9jdXMpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTc2Nyw3ICsxNzY3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQK
ICAgICAgICAgICAgIG1fY2xpZW50LmZvY3VzKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoV2Vi
UGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICB2b2lkIHVuZm9jdXMoV2ViUGFnZVBy
b3h5KiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LnVuZm9jdXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc3NSw3ICsxNzc1LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnVuZm9jdXModG9B
UEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0
KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0QWxlcnQpIHsKICAgICAg
ICAgICAgICAgICBSZWZQdHI8UnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI+IGxpc3Rl
bmVyID0gUnVuSmF2YVNjcmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xODAxLDcgKzE4MDEsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3
a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFNl
Y3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlPcmlnaW5EYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBydW5KYXZh
U2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
V2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW5EYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJ1bkphdmFTY3Jp
cHRDb25maXJtKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3JpcHRDb25maXJt
UmVzdWx0TGlzdGVuZXI+IGxpc3RlbmVyID0gUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0
ZW5lcjo6Y3JlYXRlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAgLTE4MjgsNyArMTgy
OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNj
cmlwdFByb21wdChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHZvaWQg
cnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luRGF0YSwgc3RkOjpmdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KSB7CiAg
ICAgICAgICAgICAgICAgUmVmUHRyPFJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSBSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXI6OmNyZWF0ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xODYxLDcgKzE4NjEsNyBAQCB2b2lkIFdLUGFn
ZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRC
YXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RyaW5nKCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c1RleHQoV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRleHQpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgc2V0
U3RhdHVzVGV4dChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zZXRTdGF0dXNUZXh0KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4NjksNyArMTg2OSw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJh
c2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBtX2NsaWVudC5zZXRTdGF0dXNUZXh0KHRvQVBJKHBh
Z2UpLCB0b0FQSSh0ZXh0LmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2Vi
UGFnZVByb3h5KiBwYWdlLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgZGF0YSwgV2ViRXZl
bnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqIHBhZ2Us
IGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBkYXRhLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1v
ZGlmaWVycywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50ICYmICFtX2NsaWVu
dC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE4ODcsNyArMTg4Nyw3IEBAIHZvaWQgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdr
Q2xpZW50CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYlBhZ2VQ
cm94eSogcGFnZSwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5VbmF2YWlsYWJp
bGl0eVJlYXNvbiwgQVBJOjpEaWN0aW9uYXJ5KiBwbHVnaW5JbmZvcm1hdGlvbikgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5
KiBwYWdlLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uLCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uKSBvdmVycmlkZQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gPT0ga1dL
UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25QbHVnaW5NaXNzaW5nKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKG1fY2xpZW50Lm1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjApCkBAIC0xOTE3LDg3ICsxOTE3LDg3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50
CiAgICAgICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaW1wbGVtZW50c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICAgICAgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxlS2V5RXZlbnQoKSBj
b25zdCBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuZGlk
Tm90SGFuZGxlS2V5RXZlbnQ7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
Tm90SGFuZGxlS2V5RXZlbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiBldmVudCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWROb3RIYW5kbGVLZXlF
dmVudChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2
ZW50KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZE5v
dEhhbmRsZUtleUV2ZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZE5vdEhhbmRsZUtleUV2ZW50KHRvQVBJKHBhZ2UpLCBldmVudC5uYXRpdmVFdmVu
dCgpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCBib29sIGltcGxlbWVudHNEaWROb3RIYW5kbGVXaGVlbEV2ZW50KCkgY29uc3Qgb3ZlcnJp
ZGUKKyAgICAgICAgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxlV2hlZWxFdmVudCgpIGNvbnN0
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5kaWROb3RI
YW5kbGVXaGVlbEV2ZW50OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5v
dEhhbmRsZVdoZWVsRXZlbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBOYXRpdmVXZWJXaGVl
bEV2ZW50JiBldmVudCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWROb3RIYW5kbGVXaGVlbEV2
ZW50KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkTm90SGFu
ZGxlV2hlZWxFdmVudCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2Ns
aWVudC5kaWROb3RIYW5kbGVXaGVlbEV2ZW50KHRvQVBJKHBhZ2UpLCBldmVudC5uYXRpdmVFdmVu
dCgpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCBib29sIHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkgb3Zl
cnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC50b29sYmFyc0FyZVZp
c2libGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICByZXR1cm4g
bV9jbGllbnQudG9vbGJhcnNBcmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJz
QXJlVmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGUKKyAg
ICAgICAgdm9pZCBzZXRUb29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5KiBwYWdlLCBib29s
IHZpc2libGUpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
c2V0VG9vbGJhcnNBcmVWaXNpYmxlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIG1fY2xpZW50LnNldFRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgdmlzaWJsZSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBtZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKKyAgICAg
ICAgYm9vbCBtZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5tZW51QmFySXNWaXNpYmxlKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50Lm1l
bnVCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVudUJhcklzVmlzaWJsZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBzZXRN
ZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNldE1lbnVCYXJJc1Zpc2li
bGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jbGllbnQuc2V0TWVu
dUJhcklzVmlzaWJsZSh0b0FQSShwYWdlKSwgdmlzaWJsZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzdGF0dXNCYXJJc1Zpc2li
bGUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICBib29sIHN0YXR1c0Jhcklz
VmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuc3RhdHVzQmFySXNWaXNpYmxlKQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnN0YXR1c0JhcklzVmlzaWJs
ZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNCYXJJc1Zpc2libGUoV2ViUGFnZVByb3h5KiBw
YWdlLCBib29sIHZpc2libGUpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgc2V0U3RhdHVzQmFySXNW
aXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNldFN0YXR1c0JhcklzVmlzaWJsZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5zZXRTdGF0dXNCYXJJ
c1Zpc2libGUodG9BUEkocGFnZSksIHZpc2libGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNpemFibGUoV2ViUGFnZVBy
b3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICBib29sIGlzUmVzaXphYmxlKFdlYlBhZ2VQcm94
eSogcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5p
c1Jlc2l6YWJsZSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIHJl
dHVybiBtX2NsaWVudC5pc1Jlc2l6YWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRJc1Jlc2l6YWJs
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIGJvb2wgcmVzaXphYmxlKSBvdmVycmlkZQorICAgICAgICB2
b2lkIHNldElzUmVzaXphYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCByZXNpemFibGUpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2V0SXNSZXNpemFi
bGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jbGllbnQuc2V0SXNS
ZXNpemFibGUodG9BUEkocGFnZSksIHJlc2l6YWJsZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dGcmFtZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWUpIG92ZXJyaWRlCisgICAgICAg
IHZvaWQgc2V0V2luZG93RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBGbG9hdFJlY3Qm
IGZyYW1lKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNl
dFdpbmRvd0ZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwMDUsNyArMjAwNSw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBtX2NsaWVudC5zZXRXaW5k
b3dGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBGbG9hdFJlY3Qgd2luZG93RnJhbWUo
V2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICBGbG9hdFJlY3Qgd2luZG93RnJh
bWUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmdldFdpbmRvd0ZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybiBGbG9h
dFJlY3QoKTsKQEAgLTIwMTMsMTIgKzIwMTMsMTIgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQK
ICAgICAgICAgICAgIHJldHVybiB0b0Zsb2F0UmVjdChtX2NsaWVudC5nZXRXaW5kb3dGcmFtZSh0
b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Qg
b3ZlcnJpZGUKKyAgICAgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBj
b25zdCBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQucnVu
QmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjYgfHwgbV9jbGll
bnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94
eSogcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZQorICAgICAgICB2b2lkIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChXZWJLaXQ6
OldlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1lc3NhZ2UsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSogZnJhbWUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQu
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyPiBsaXN0ZW5lciA9IFJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVhdGUoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwpAQCAtMjAzNSw3ICsyMDM1LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tD
bGllbnQKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRTY3JvbGwoV2ViUGFnZVByb3h5KiBwYWdlKSBv
dmVycmlkZQorICAgICAgICB2b2lkIHBhZ2VEaWRTY3JvbGwoV2ViUGFnZVByb3h5KiBwYWdlKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnBhZ2VEaWRTY3Jv
bGwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjA0Myw3ICsyMDQzLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnBhZ2VEaWRTY3JvbGwodG9B
UEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSogcGFnZSwg
V2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJl
bnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1
bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSwgc3RkOjpmdW5jdGlvbjx2b2lkICh1bnNp
Z25lZCBsb25nIGxvbmcpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9yaWdpblVzYWdl
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcg
bG9uZyBleHBlY3RlZFVzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9u
Zyk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGN1cnJlbnRRdW90YSk7CkBAIC0yMDUzLDcgKzIwNTMsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlD
bGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobV9jbGll
bnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRhYmFzZURpc3Bs
YXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBjdXJyZW50
RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQ
cm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBv
dmVycmlkZQorICAgICAgICBib29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqIHBhZ2UsIFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KiBsaXN0ZW5lcikgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5ydW5PcGVuUGFuZWwpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA2Miw3ICsyMDYyLDcgQEAgdm9pZCBXS1BhZ2VTZXRQ
YWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSog
d2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpTZWN1cml0eU9y
aWdpbiogb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkqIHBlcm1pc3Np
b25SZXF1ZXN0KSBvdmVycmlkZQorICAgICAgICBib29sIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBm
cmFtZSwgQVBJOjpTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHkqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA3MSw3ICsyMDcx
LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJh
bWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdFByb3h5JiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBk
ZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFE
b2N1bWVudE9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdp
biwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94eSYgcGVybWlzc2lvblJlcXVlc3QpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMjA4MCw3ICsyMDgwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGNo
ZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9y
aWdpbiwgQVBJOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVXNlck1l
ZGlhUGVybWlzc2lvbkNoZWNrUHJveHkmIHJlcXVlc3QpIG92ZXJyaWRlCisgICAgICAgIGJvb2wg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6U2VjdXJpdHlPcmlnaW4mIHVzZXJNZWRpYURvY3VtZW50
T3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbERvY3VtZW50T3JpZ2luLCBVc2Vy
TWVkaWFQZXJtaXNzaW9uQ2hlY2tQcm94eSYgcmVxdWVzdCkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5jaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmln
aW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA4OSw3ICsyMDg5LDcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFn
ZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiBwYWdlLCBBUEk6OlNlY3VyaXR5
T3JpZ2luKiBvcmlnaW4sIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KiBwZXJtaXNzaW9u
UmVxdWVzdCkgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZ2UsIEFQSTo6U2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1
ZXN0KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIwOTksNyArMjA5OSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJ
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xp
ZW50CiAgICAgICAgIH0KIAogICAgICAgICAvLyBQcmludGluZy4KLSAgICAgICAgdmlydHVhbCBm
bG9hdCBoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSkgb3ZlcnJpZGUKKyAgICAgICAgZmxvYXQgaGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFn
ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9jbGllbnQuaGVhZGVySGVpZ2h0KQogICAgICAgICAgICAgICAgIHJldHVybiAwOwpA
QCAtMjEwNyw3ICsyMTA3LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xpZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAg
IHJldHVybiBtX2NsaWVudC5oZWFkZXJIZWlnaHQodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
ZmxvYXQgZm9vdGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUpIG92ZXJyaWRlCisgICAgICAgIGZsb2F0IGZvb3RlckhlaWdodChXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmZvb3RlckhlaWdodCkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsK
QEAgLTIxMTUsNyArMjExNSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAg
ICByZXR1cm4gbV9jbGllbnQuZm9vdGVySGVpZ2h0KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgZHJhd0hlYWRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpIG92ZXJyaWRlCisgICAgICAgIHZvaWQg
ZHJhd0hlYWRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZHJhd0hlYWRlcikKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMTIzLDcgKzIxMjMsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAgICAgICAgICAg
bV9jbGllbnQuZHJhd0hlYWRlcih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShyZWN0
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBkcmF3Rm9vdGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBkcmF3Rm9vdGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kcmF3Rm9vdGVyKQogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTIxMzEsNyArMjEzMSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAg
ICBtX2NsaWVudC5kcmF3Rm9vdGVyKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHJl
Y3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHByaW50RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBm
cmFtZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBwcmludEZyYW1lKFdlYlBhZ2VQcm94eSogcGFn
ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9jbGllbnQucHJpbnRGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0y
MTM5LDEyICsyMTM5LDEyIEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBt
X2NsaWVudC5wcmludEZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVu
TW9kYWwoKSBjb25zdCBvdmVycmlkZQorICAgICAgICBib29sIGNhblJ1bk1vZGFsKCkgY29uc3Qg
b3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnJ1bk1vZGFs
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKFdlYlBhZ2VQcm94
eSogcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBydW5Nb2RhbChXZWJQYWdlUHJveHkqIHBh
Z2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVuTW9k
YWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE1Miw3ICsyMTUyLDcgQEAgdm9pZCBX
S1BhZ2VTZXRQYWdlVUlDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVVJQ2xp
ZW50QmFzZSogd2tDbGllbnQKICAgICAgICAgICAgIG1fY2xpZW50LnJ1bk1vZGFsKHRvQVBJKHBh
Z2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6OkRhdGEqIGRhdGEp
IG92ZXJyaWRlCisgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihX
ZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIEFQ
STo6RGF0YSogZGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTIxNjAsNyArMjE2MCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAg
ICAgICAgICBtX2NsaWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRvQVBJKHBh
Z2UpLCB0b0FQSShzdWdnZXN0ZWRGaWxlbmFtZS5pbXBsKCkpLCB0b0FQSShtaW1lVHlwZS5pbXBs
KCkpLCB0b1VSTFJlZihvcmlnaW5hdGluZ1VSTFN0cmluZy5pbXBsKCkpLCB0b0FQSShkYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBwaW5uZWRTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisg
ICAgICAgIHZvaWQgcGlubmVkU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnBpbm5lZFN0YXRlRGlk
Q2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxNjgsNyArMjE2OCw3IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VV
SUNsaWVudEJhc2UqIHdrQ2xpZW50CiAgICAgICAgICAgICBtX2NsaWVudC5waW5uZWRTdGF0ZURp
ZENoYW5nZSh0b0FQSSgmcGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoV2ViUGFn
ZVByb3h5JiBwYWdlKSBvdmVycmlkZQorICAgICAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlkQ2hh
bmdlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5pc1BsYXlpbmdBdWRpb0RpZENoYW5nZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudAogICAg
ICAgICAgICAgbV9jbGllbnQuaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UodG9BUEkoJnBhZ2UpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENsaWNrQXV0b0ZpbGxCdXR0b24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok9iamVj
dCogdXNlckluZm8pIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkQ2xpY2tBdXRvRmlsbEJ1dHRv
bihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6T2JqZWN0KiB1c2VySW5mbykgb3ZlcnJpZGUKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDbGlja0F1dG9GaWxsQnV0dG9u
KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIxODUsNyArMjE4NSw3IEBAIHZvaWQgV0tQ
YWdlU2V0UGFnZVVJQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VVSUNsaWVu
dEJhc2UqIHdrQ2xpZW50CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSogbWV0YWRhdGEpIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJNZWRpYVNlc3Npb25NZXRhZGF0YSogbWV0YWRhdGEpIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQubWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRD
aGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjIwOCwxNDAgKzIyMDgsMTQwIEBA
IHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNv
bnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBSZWY8
V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiBu
YXZpZ2F0aW9uQWN0aW9uLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+
JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmbmF2aWdhdGlvbkFj
dGlvbiksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2
aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJLaXQ6OldlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShX
ZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVz
cG9uc2UsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5l
ciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2UodG9BUEkoJnBhZ2UpLCB0b0FQSSgmbmF2aWdhdGlvblJlc3BvbnNl
KSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0UHJvdmlzaW9uYWxO
YXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50
LmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdh
dGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
V2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGYWlsUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uKSwgdG9BUEko
ZXJyb3IpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TmF2aWdhdGlvbihXZWJQYWdl
UHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFn
ZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRDb21taXROYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1fY2xpZW50LmRpZENvbW1pdE5hdmlnYXRpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0
aW9uKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV2ViUGFnZVBy
b3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
RmluaXNoTmF2aWdhdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBt
X2NsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlv
biksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZEZhaWxOYXZpZ2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZhaWxOYXZpZ2F0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlv
biksIHRvQVBJKGVycm9yKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgc3ViZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJpdHlP
cmlnaW5EYXRhLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBzdWJmcmFtZSwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbkRhdGEsIEFQSTo6TmF2aWdhdGlvbiogbmF2
aWdhdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFt
ZSh0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKHN1YmZyYW1lLCBzZWN1cml0eU9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSkucHRy
KCkpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVu
dExvYWQoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hEb2N1
bWVudExvYWQoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24s
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRGaW5pc2hEb2N1bWVudExvYWQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoRG9jdW1lbnRMb2FkKHRvQVBJKCZw
YWdlKSwgdG9BUEkobmF2aWdhdGlvbiksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBXZWJLaXQ6OlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBl
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbiogbmF2
aWdhdGlvbiwgV2ViS2l0OjpTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bih0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShuYXZpZ2F0aW9uVHlwZSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdl
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVz
KSBvdmVycmlkZQorICAgICAgICB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYlBh
Z2VQcm94eSYgcGFnZSwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnJlbmRlcmluZ1Byb2dy
ZXNzRGlkQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xp
ZW50LnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKHRvQVBJKCZwYWdlKSwgcGFnZVJlbmRlcmlu
Z1Byb2dyZXNzRXZlbnRzKG1pbGVzdG9uZXMpLCBudWxscHRyLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlBy
b3RlY3Rpb25TcGFjZSogcHJvdGVjdGlvblNwYWNlKSBvdmVycmlkZQorICAgICAgICBib29sIGNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViUGFnZVByb3h5JiBwYWdlLCBX
ZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSkgb3ZlcnJpZGUKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHJldHVy
biBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRvQVBJKCZw
YWdlKSwgdG9BUEkocHJvdGVjdGlvblNwYWNlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQYWdlUHJveHkmIHBhZ2UsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBvdmVycmlkZQorICAgICAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQYWdlUHJveHkmIHBhZ2Us
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9BUEkoJnBh
Z2UpLCB0b0FQSShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNo
KFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jh
c2goV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LndlYlByb2Nlc3NEaWRDcmFzaCkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBtX2NsaWVudC53ZWJQcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBhZ2UpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBS
ZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5JiBwYWdlKSBv
dmVycmlkZQorICAgICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2Vi
UGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmNvcHlXZWJDcnlwdG9NYXN0ZXJLZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYodG9JbXBsKG1fY2xpZW50LmNvcHlX
ZWJDcnlwdG9NYXN0ZXJLZXkodG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5OYXZpZ2F0aW9u
R2VzdHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkQmVn
aW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRCZWdpbk5h
dmlnYXRpb25HZXN0dXJlKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbmROYXZpZ2F0aW9uR2VzdHVy
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJLaXQ6OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mIGl0ZW0pIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkRW5kTmF2aWdh
dGlvbkdlc3R1cmUoV2ViUGFnZVByb3h5JiBwYWdlLCBib29sIHdpbGxOYXZpZ2F0ZSwgV2ViS2l0
OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSBvdmVycmlkZQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEVuZE5hdmlnYXRpb25HZXN0dXJlKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEVuZE5hdmlnYXRpb25HZXN0
dXJlKHRvQVBJKCZwYWdlKSwgd2lsbE5hdmlnYXRlID8gdG9BUEkoJml0ZW0pIDogbnVsbHB0ciwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB3aWxsRW5kTmF2aWdhdGlvbkdlc3R1cmUoV2ViUGFnZVByb3h5JiBwYWdlLCBib29sIHdp
bGxOYXZpZ2F0ZSwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSBvdmVycmlk
ZQorICAgICAgICB2b2lkIHdpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZShXZWJQYWdlUHJveHkmIHBh
Z2UsIGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0
ZW0pIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbEVu
ZE5hdmlnYXRpb25HZXN0dXJlKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1fY2xpZW50LndpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSh0b0FQSSgmcGFnZSksIHdpbGxOYXZp
Z2F0ZSA/IHRvQVBJKCZpdGVtKSA6IG51bGxwdHIsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdChXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHZvaWQg
ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdChXZWJQYWdlUHJveHkmIHBhZ2UpIG92
ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVtb3ZlTmF2
aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzQ5
LDcgKzIzNDksNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICB9CiAgICAgICAg
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgICAgICB2aXJ0dWFsIFBsdWdp
bk1vZHVsZUxvYWRQb2xpY3kgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZChXZWJQYWdlUHJveHkm
IHBhZ2UsIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIEFQ
STo6RGljdGlvbmFyeSogcGx1Z2luSW5mb3JtYXRpb24sIFN0cmluZyYgdW5hdmFpbGFiaWxpdHlE
ZXNjcmlwdGlvbikgb3ZlcnJpZGUKKyAgICAgICAgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBkZWNp
ZGVQb2xpY3lGb3JQbHVnaW5Mb2FkKFdlYlBhZ2VQcm94eSYgcGFnZSwgUGx1Z2luTW9kdWxlTG9h
ZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5KiBwbHVnaW5J
bmZvcm1hdGlvbiwgU3RyaW5nJiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uKSBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBXS1N0cmluZ1JlZiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0
aW9uT3V0ID0gMDsKICAgICAgICAgICAgIFBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgbG9hZFBvbGlj
eSA9IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9QYWdlTG9hZFN0YXRlT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvUGFnZUxvYWRTdGF0ZU9ic2VydmVyLmgKaW5kZXggYzAx
ZjkwMzdhM2ZlYTY3ZDMxYjM1OWU1Y2RjNDI0MWNjZWIzYmZlYy4uOTVlOWJhMmFkYTliNGJiZTgw
NDNjY2RhYjFhZjNjYjAzYjhiY2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9QYWdlTG9hZFN0YXRlT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1BhZ2VMb2FkU3RhdGVPYnNlcnZlci5oCkBAIC0zOSw3MSAr
MzksNzEgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2ls
bENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5n
KCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFttX29iamVjdCB3aWxsQ2hhbmdlVmFsdWVGb3JL
ZXk6QCJsb2FkaW5nIl07CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlzTG9h
ZGluZygpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgW21fb2JqZWN0IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAibG9hZGluZyJd
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQor
ICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFttX29i
amVjdCB3aWxsQ2hhbmdlVmFsdWVGb3JLZXk6QCJ0aXRsZSJdOwogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZSgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDaGFuZ2VUaXRs
ZSgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBbbV9vYmplY3QgZGlkQ2hhbmdlVmFsdWVGb3JL
ZXk6QCJ0aXRsZSJdOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlQWN0aXZl
VVJMKCkgb3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgW21fb2JqZWN0IHdpbGxDaGFuZ2VWYWx1ZUZvcktleTptX2FjdGl2ZVVS
TEtleS5nZXQoKV07CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFjdGl2ZVVS
TCgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgW21fb2JqZWN0IGRpZENoYW5nZVZhbHVlRm9yS2V5Om1fYWN0aXZlVVJMS2V5
LmdldCgpXTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1
cmVDb250ZW50KCkgb3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29u
dGVudCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBbbV9vYmplY3Qgd2lsbENoYW5nZVZhbHVl
Rm9yS2V5OkAiaGFzT25seVNlY3VyZUNvbnRlbnQiXTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQorICAgIHZvaWQgZGlk
Q2hhbmdlSGFzT25seVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgW21f
b2JqZWN0IGRpZENoYW5nZVZhbHVlRm9yS2V5OkAiaGFzT25seVNlY3VyZUNvbnRlbnQiXTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNzKCkgb3Zl
cnJpZGUKKyAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBbbV9vYmplY3Qgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiZXN0aW1hdGVk
UHJvZ3Jlc3MiXTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVk
UHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jlc3Mo
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgW21fb2JqZWN0IGRpZENoYW5nZVZhbHVlRm9yS2V5
OkAiZXN0aW1hdGVkUHJvZ3Jlc3MiXTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENo
YW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VD
YW5Hb0JhY2soKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUNhbkdv
Rm9yd2FyZCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDYW5Hb0Zv
cndhcmQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtS
ZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwg
dm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
d2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlkQ2hhbmdlQ2Fu
R29CYWNrKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29Gb3J3YXJkKCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3ZlcnJp
ZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZSB7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJy
aWRlCisgICAgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBbbV9vYmplY3Qgd2lsbENoYW5nZVZhbHVlRm9yS2V5OkAiX3dlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUiXTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
V2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDaGFuZ2VXZWJQ
cm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFttX29iamVjdCBk
aWRDaGFuZ2VWYWx1ZUZvcktleTpAIl93ZWJQcm9jZXNzSXNSZXNwb25zaXZlIl07CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCA2Zjg1MzdhYTc4NzY1ODMxZDg1YWQ4NGIyMDA3NTc4MzM1NGFjZTljLi45ZTRmZDY5YzQ0NzAw
MmYyMGIyYjllZTZhZDVlMWE5YWMyYjA1YThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMzU0MSw3ICszNTQxLDcgQEAgLSAodm9p
ZClfc2V0SW5wdXREZWxlZ2F0ZTooaWQgPF9XS0lucHV0RGVsZWdhdGU+KWlucHV0RGVsZWdhdGUK
IAogICAgICAgICB2aXJ0dWFsIH5Gb3JtQ2xpZW50KCkgeyB9CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxTdWJtaXRGb3JtKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiBzb3VyY2VGcmFtZSwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxXVEY6OlN0cmluZywgV1RGOjpTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFJlZjxXZWJLaXQ6OldlYkZvcm1TdWJtaXNzaW9uTGlzdGVu
ZXJQcm94eT4mJiBsaXN0ZW5lcikgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCB3aWxsU3VibWl0Rm9y
bShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYgc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpT
dHJpbmcsIFdURjo6U3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBSZWY8V2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk+JiYgbGlzdGVu
ZXIpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh1c2VyRGF0YSAmJiB1c2Vy
RGF0YS0+dHlwZSgpICE9IEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKCF1c2VyRGF0YSB8fCB1c2VyRGF0YS0+dHlwZSgpID09IEFQSTo6T2JqZWN0OjpU
eXBlOjpEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdl
Q2xpZW50SW1wbC5oCmluZGV4IDdhZjJiOWI2Y2NjYjk5ZmIzZWQ5NWRiODZiNDU1M2YxNjUxOTQ2
MmMuLmU3OTFiNGJlMTQ5NjA5YWU0OTM3ODFkNmY5N2U3ZTVjZWYzZTI3NWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaApAQCAtNTQs
NTMgKzU0LDUzIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBQYWdlQ2xpZW50Ci0gICAg
dmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0Fy
ZWFQcm94eSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGxheVZpZXcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2Nyb2xsVmlldygpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbFZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFNjcm9sbChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmll
d1Zpc2libGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQo
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0
IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
QWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhblVuZG9SZWRv
KFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0
IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qg
cm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBjb25zdCBDb250ZXh0TWVudUNv
bnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNwbGF5VmlldygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2Ny
b2xsVmlldygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzY3JvbGxWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHNjcm9sbE9mZnNldCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgc2Nyb2xsT3JpZ2luLCBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1Zp
ZXdXaW5kb3dBY3RpdmUoKSBvdmVycmlkZTsKKyAgICBib29sIGlzVmlld0ZvY3VzZWQoKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzVmlld1Zpc2libGUoKSBvdmVycmlkZTsKKyAgICBib29sIGlzVmll
d0luV2luZG93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdl
Q2xvc2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBX
VEY6OlN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1v
dmVzKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29t
bWFuZHMoKSBvdmVycmlkZTsKKyAgICBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5k
b09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5
OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
d2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+
IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2VyRGF0
YSYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2Vy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvciwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHNl
bGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2aXJ0dWFsIHZvaWQg
c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGRyYWdJbWFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWcoY29uc3QgV2Vi
Q29yZTo6RHJhZ0RhdGEmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlKSBv
dmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZUFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExv
YWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVx
dWVzdChEb3dubG9hZFByb3h5Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkRm9yTWFp
bkZyYW1lKCkgb3ZlcnJpZGUgeyB9CiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9u
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMTA5LDQwICsxMDksNDAgQEAgcHJpdmF0
ZToKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAvLyBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRnVsbFNjcmVlbk1hbmFnZXIo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsU2NyZWVuKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBleGl0RnVsbFNjcmVlbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBiZWdhbkVu
dGVyRnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFt
ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBjbG9zZUZ1bGxTY3JlZW5NYW5hZ2VyKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Z1bGxTY3Jl
ZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGVudGVyRnVsbFNjcmVlbigpIG92ZXJyaWRlOworICAg
IHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2FuRW50ZXJGdWxs
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdhbkV4aXRGdWxs
U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlk
QmVnaW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVXaWxs
RW5kKGJvb2wsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCwgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2
aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdhdGlvbkdl
c3R1cmVXaWxsRW5kKGJvb2wsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJvb2wsIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mKSBvdmVycmlkZTsKKyAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJl
U25hcHNob3QoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKFNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvck1haW5G
cmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1h
aW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkgb3ZlcnJpZGU7CiAKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29u
c3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50Jiwg
Ym9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFu
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWZWaWV3
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmVmlldygpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVmVmlldygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVyZWZWaWV3KCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkgb3ZlcnJpZGUg
eyB9CisgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSBvdmVycmlkZSB7IH0KIAog
I2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikKLSAgICB2aXJ0dWFsIGJvb2wgZGVj
aWRlUG9saWN5Rm9ySW5zdGFsbE1pc3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdChJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0Jikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Np
b25SZXF1ZXN0KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QmKSBv
dmVycmlkZTsKICNlbmRpZgogCiAgICAgLy8gTWVtYmVycyBvZiBQYWdlQ2xpZW50SW1wbCBjbGFz
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29s
b3JDaG9vc2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xv
ckNob29zZXIuaAppbmRleCBmMmJmMzVlZGYwYjEwNjA4YTJhNDU5ODFkZGIxZWE4MTUxYmM0ZGI3
Li4wZGM5NzYyYzY3NWFhN2FjMzEwNWY1YTA2ZDMzOWM1ZDE3ZDAyMzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb2xvckNob29zZXIuaApA
QCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYktpdENvbG9yQ2hvb3Nl
cihXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dDb2xvclBp
Y2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQg
Y29sb3JDaG9vc2VyUmVxdWVzdEZpbmlzaGVkKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqLCBX
ZWJLaXRDb2xvckNob29zZXIqKTsKICAgICBzdGF0aWMgdm9pZCBjb2xvckNob29zZXJSZXF1ZXN0
UkdCQUNoYW5nZWQoV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCosIEdQYXJhbVNwZWMqLCBXZWJL
aXRDb2xvckNob29zZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFBvbGljeUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRQb2xpY3lDbGllbnQuY3BwCmluZGV4IDJkNGVhYzViM2Y4NzcwY2MwOTM1
ZjExMGRlNDQwMjIwMWNmODQ1YWIuLmM4ZGRhN2Q5N2QyNzE4MDE1YTMyNjU4NjVjYTU5OTUwZjY4
NWZhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFBvbGljeUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UG9saWN5Q2xpZW50LmNwcApAQCAtMzgsMTkgKzM4LDE5IEBAIHB1YmxpYzoKICAgICB9
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViRnJhbWVQcm94eSogLypvcmlnaW5hdGlu
Z0ZyYW1lKi8sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgLypvcmlnaW5hbFJlcXVl
c3QqLywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZWY8V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogLyp1c2VyRGF0
YSovKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJGcmFtZVByb3h5KiAvKm9yaWdpbmF0aW5nRnJhbWUq
LywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiAvKm9yaWdpbmFsUmVxdWVzdCovLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlZjxXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiAvKnVzZXJEYXRhKi8pIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdFBvbGljeURlY2lzaW9uPiBkZWNp
c2lvbiA9IGFkb3B0R1JlZih3ZWJraXROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25DcmVhdGUobmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGxpc3RlbmVyLnB0cigpKSk7CiAgICAgICAgIHdl
YmtpdFdlYlZpZXdNYWtlUG9saWN5RGVjaXNpb24obV93ZWJWaWV3LCBXRUJLSVRfUE9MSUNZX0RF
Q0lTSU9OX1RZUEVfTkFWSUdBVElPTl9BQ1RJT04sIGRlY2lzaW9uLmdldCgpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+
JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiAvKnVzZXJEYXRhKi8pIG92ZXJyaWRlCisgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQ
cm94eSYsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJ
OjpPYmplY3QqIC8qdXNlckRhdGEqLykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8
V2ViS2l0UG9saWN5RGVjaXNpb24+IGRlY2lzaW9uID0gYWRvcHRHUmVmKHdlYmtpdE5ld1dpbmRv
d1BvbGljeURlY2lzaW9uQ3JlYXRlKG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFt
ZU5hbWUsIGxpc3RlbmVyLnB0cigpKSk7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdNYWtlUG9saWN5
RGVjaXNpb24obV93ZWJWaWV3LCBXRUJLSVRfUE9MSUNZX0RFQ0lTSU9OX1RZUEVfTkVXX1dJTkRP
V19BQ1RJT04sIGRlY2lzaW9uLmdldCgpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogLyp1c2VyRGF0YSov
KSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgY2FuU2hv
d01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBB
UEk6Ok9iamVjdCogLyp1c2VyRGF0YSovKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0
cjxXZWJLaXRQb2xpY3lEZWNpc2lvbj4gZGVjaXNpb24gPSBhZG9wdEdSZWYod2Via2l0UmVzcG9u
c2VQb2xpY3lEZWNpc2lvbkNyZWF0ZShyZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBl
LCBsaXN0ZW5lci5wdHIoKSkpOwogICAgICAgICB3ZWJraXRXZWJWaWV3TWFrZVBvbGljeURlY2lz
aW9uKG1fd2ViVmlldywgV0VCS0lUX1BPTElDWV9ERUNJU0lPTl9UWVBFX1JFU1BPTlNFLCBkZWNp
c2lvbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRVSUNsaWVudC5jcHAKaW5kZXggMGRlZmM4MTJkNGE1NTljYjY5NGE3YWJlMTFhZmM3NmE4
ZGJhYjliMC4uZGM4ZTkxMjU0NmU3MzlhMTNmMDdlZjU0NDFlNTEwZTgxMTc4YmJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNw
cApAQCAtNDUsMzUgKzQ1LDM1IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OldpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhKSBvdmVycmlkZQorICAgIFBhc3NSZWZQdHI8V2Vi
UGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMm
IHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdFVSSVJlcXVl
c3Q+IHJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0VVJJUmVxdWVzdENyZWF0ZUZvclJlc291cmNl
UmVxdWVzdChyZXNvdXJjZVJlcXVlc3QpKTsKICAgICAgICAgV2ViS2l0TmF2aWdhdGlvbkFjdGlv
biBuYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QuZ2V0KCksIG5hdmlnYXRpb25BY3Rpb25EYXRhKTsK
ICAgICAgICAgcmV0dXJuIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKG1fd2ViVmlldywgd2lu
ZG93RmVhdHVyZXMsICZuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2hvd1BhZ2UoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGUKKyAgICB2b2lkIHNob3dQYWdlKFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UmVhZHlU
b1Nob3dQYWdlKG1fd2ViVmlldyk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlKFdl
YlBhZ2VQcm94eSopIG92ZXJyaWRlCisgICAgdm9pZCBjbG9zZShXZWJQYWdlUHJveHkqKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld0Nsb3NlUGFnZShtX3dlYlZpZXcpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFu
ZGxlcikgb3ZlcnJpZGUKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkq
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRB
bGVydChtX3dlYlZpZXcsIG1lc3NhZ2UudXRmOCgpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2Vi
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4g
Y29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmly
bShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJv
b2wpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShtX3dlYlZpZXcsIG1l
c3NhZ2UudXRmOCgpKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRQ
cm9tcHQoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+IGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZQorICAgIHZvaWQgcnVuSmF2YVNjcmlwdFByb21wdChXZWJQYWdlUHJv
eHkqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBX
ZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBDU3RyaW5nIHJlc3VsdCA9IHdlYmtpdFdlYlZpZXdSdW5KYXZhU2Ny
aXB0UHJvbXB0KG1fd2ViVmlldywgbWVzc2FnZS51dGY4KCksIGRlZmF1bHRWYWx1ZS51dGY4KCkp
OwogICAgICAgICBpZiAocmVzdWx0LmlzTnVsbCgpKSB7CkBAIC04NCw2NSArODQsNjUgQEAgcHJp
dmF0ZToKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3RyaW5nOjpmcm9tVVRGOChyZXN1bHQu
ZGF0YSgpKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENv
bmZpcm1QYW5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29sIGNh
blJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2Vi
UGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5Kiwgc3RkOjpm
dW5jdGlvbjx2b2lkIChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgdm9p
ZCBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5Kiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEJlZm9yZVVubG9hZENvbmZpcm0obV93ZWJWaWV3
LCBtZXNzYWdlLnV0ZjgoKSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudChXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYg
ZGF0YSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGUKKyAgICB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSosIGNvbnN0
IFdlYkhpdFRlc3RSZXN1bHREYXRhJiBkYXRhLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVy
cywgQVBJOjpPYmplY3QqKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld01v
dXNlVGFyZ2V0Q2hhbmdlZChtX3dlYlZpZXcsIGRhdGEsIHRvR2RrTW9kaWZpZXJzKG1vZGlmaWVy
cykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB0b29sYmFyc0FyZVZpc2libGUoV2ViUGFn
ZVByb3h5Kikgb3ZlcnJpZGUKKyAgICBib29sIHRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJv
eHkqKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIHdlYmtpdF93aW5kb3dfcHJvcGVy
dGllc19nZXRfdG9vbGJhcl92aXNpYmxlKHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3Bl
cnRpZXMobV93ZWJWaWV3KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJz
QXJlVmlzaWJsZShXZWJQYWdlUHJveHkqLCBib29sIHZpc2libGUpIG92ZXJyaWRlCisgICAgdm9p
ZCBzZXRUb29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5KiwgYm9vbCB2aXNpYmxlKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2luZG93UHJvcGVydGllc1NldFRvb2xiYXJWaXNp
YmxlKHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMobV93ZWJWaWV3KSwgdmlz
aWJsZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIG1lbnVCYXJJc1Zpc2libGUoV2ViUGFn
ZVByb3h5Kikgb3ZlcnJpZGUKKyAgICBib29sIG1lbnVCYXJJc1Zpc2libGUoV2ViUGFnZVByb3h5
Kikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVybiB3ZWJraXRfd2luZG93X3Byb3BlcnRp
ZXNfZ2V0X21lbnViYXJfdmlzaWJsZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0
aWVzKG1fd2ViVmlldykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNZW51QmFySXNW
aXNpYmxlKFdlYlBhZ2VQcm94eSosIGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHNl
dE1lbnVCYXJJc1Zpc2libGUoV2ViUGFnZVByb3h5KiwgYm9vbCB2aXNpYmxlKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgd2Via2l0V2luZG93UHJvcGVydGllc1NldFRvb2xiYXJWaXNpYmxlKHdl
YmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMobV93ZWJWaWV3KSwgdmlzaWJsZSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHN0YXR1c0JhcklzVmlzaWJsZShXZWJQYWdlUHJv
eHkqKSBvdmVycmlkZQorICAgIGJvb2wgc3RhdHVzQmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSop
IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gd2Via2l0X3dpbmRvd19wcm9wZXJ0aWVz
X2dldF9zdGF0dXNiYXJfdmlzaWJsZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0
aWVzKG1fd2ViVmlldykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNCYXJJ
c1Zpc2libGUoV2ViUGFnZVByb3h5KiwgYm9vbCB2aXNpYmxlKSBvdmVycmlkZQorICAgIHZvaWQg
c2V0U3RhdHVzQmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSosIGJvb2wgdmlzaWJsZSkgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNTZXRTdGF0dXNiYXJWaXNp
YmxlKHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMobV93ZWJWaWV3KSwgdmlz
aWJsZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGlzUmVzaXphYmxlKFdlYlBhZ2VQcm94
eSopIG92ZXJyaWRlCisgICAgYm9vbCBpc1Jlc2l6YWJsZShXZWJQYWdlUHJveHkqKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgcmV0dXJuIHdlYmtpdF93aW5kb3dfcHJvcGVydGllc19nZXRfcmVz
aXphYmxlKHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMobV93ZWJWaWV3KSk7
CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHNldElzUmVzaXphYmxlKFdlYlBhZ2VQcm94eSos
IGJvb2wgcmVzaXphYmxlKSBvdmVycmlkZQorICAgIHZvaWQgc2V0SXNSZXNpemFibGUoV2ViUGFn
ZVByb3h5KiwgYm9vbCByZXNpemFibGUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICB3ZWJraXRX
aW5kb3dQcm9wZXJ0aWVzU2V0UmVzaXphYmxlKHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3By
b3BlcnRpZXMobV93ZWJWaWV3KSwgcmVzaXphYmxlKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0V2luZG93RnJhbWUoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBmcmFtZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZnJhbWUpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnkgPSBXZWJDb3JlOjpJbnRSZWN0KGZyYW1lKTsKICAgICAg
ICAgd2Via2l0V2luZG93UHJvcGVydGllc1NldEdlb21ldHJ5KHdlYmtpdF93ZWJfdmlld19nZXRf
d2luZG93X3Byb3BlcnRpZXMobV93ZWJWaWV3KSwgJmdlb21ldHJ5KTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkqKSBvdmVy
cmlkZQorICAgIFdlYkNvcmU6OkZsb2F0UmVjdCB3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkqKSBv
dmVycmlkZQogICAgIHsKICAgICAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5ID0geyAwLCAwLCAw
LCAwIH07CiAgICAgICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2
ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKQEAgLTE1Myw1NCArMTUzLDU0IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoZ2VvbWV0cnkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCB1bnNpZ25lZCBsb25nIGxvbmcgLypjdXJyZW50UXVvdGEqLywgdW5zaWduZWQgbG9u
ZyBsb25nIC8qY3VycmVudE9yaWdpblVzYWdlKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmN1cnJl
bnREYXRhYmFzZVVzYWdlKi8sIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmV4cGVjdGVkVXNhZ2UqLywg
c3RkOjpmdW5jdGlvbjx2b2lkICh1bnNpZ25lZCBsb25nIGxvbmcpPiBjb21wbGV0aW9uSGFuZGxl
cikgb3ZlcnJpZGUKKyAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYsIHVuc2lnbmVkIGxvbmcgbG9uZyAvKmN1cnJlbnRRdW90YSovLCB1bnNpZ25l
ZCBsb25nIGxvbmcgLypjdXJyZW50T3JpZ2luVXNhZ2UqLywgdW5zaWduZWQgbG9uZyBsb25nIC8q
Y3VycmVudERhdGFiYXNlVXNhZ2UqLywgdW5zaWduZWQgbG9uZyBsb25nIC8qZXhwZWN0ZWRVc2Fn
ZSovLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+IGNvbXBsZXRpb25I
YW5kbGVyKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxv
bmcgbG9uZyBkZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEyMDQ7IC8vIDUgTUIKICAgICAgICAg
Ly8gRklYTUU6IFByb3ZpZGUgQVBJIGZvciB0aGlzLgogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihkZWZhdWx0UXVvdGEpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqIHBh
cmFtZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBvdmVy
cmlkZQorICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkq
LCBXZWJPcGVuUGFuZWxQYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzLCBXZWJPcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lclByb3h5KiBsaXN0ZW5lcikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8
V2ViS2l0RmlsZUNob29zZXJSZXF1ZXN0PiByZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEZpbGVD
aG9vc2VyUmVxdWVzdENyZWF0ZShwYXJhbWV0ZXJzLCBsaXN0ZW5lcikpOwogICAgICAgICB3ZWJr
aXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KG1fd2ViVmlldywgcmVxdWVzdC5nZXQoKSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQ
b2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSosIFdlYkZy
YW1lUHJveHkqLCBBUEk6OlNlY3VyaXR5T3JpZ2luKiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5KiBwZXJtaXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICBib29sIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHkqIHBlcm1pc3Npb25SZXF1ZXN0KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1Jl
ZlB0cjxXZWJLaXRHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiBnZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RDcmVhdGUocGVybWlzc2lvblJlcXVlc3QpKTsKICAgICAgICAgd2Via2l0V2ViVmlld01ha2VQ
ZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZpZXcsIFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1QoZ2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5nZXQoKSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6U2VjdXJpdHlP
cmlnaW4mIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLCBBUEk6OlNlY3VyaXR5T3JpZ2luJiB0b3BM
ZXZlbERvY3VtZW50T3JpZ2luLCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdFByb3h5JiBwZXJt
aXNzaW9uUmVxdWVzdCkgb3ZlcnJpZGUKKyAgICBib29sIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbiwgQVBJOjpTZWN1cml0eU9yaWdp
biYgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbiwgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RQcm94
eSYgcGVybWlzc2lvblJlcXVlc3QpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdl
YktpdFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0PiB1c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCA9IGFkb3B0R1JlZih3ZWJraXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdENyZWF0ZShwZXJt
aXNzaW9uUmVxdWVzdCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4sIHRvcExldmVsRG9jdW1lbnRP
cmlnaW4pKTsKICAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dl
YlZpZXcsIFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1QodXNlck1lZGlhUGVybWlzc2lvblJlcXVl
c3QuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCBi
b29sIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQ
cm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCogcGVybWlzc2lvblJlcXVlc3QpIG92ZXJyaWRlCisgICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqLCBBUEk6OlNlY3VyaXR5
T3JpZ2luKiwgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Npb25SZXF1ZXN0
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXROb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdD4gbm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QgPSBhZG9wdEdSZWYo
d2Via2l0Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RDcmVhdGUocGVybWlzc2lvblJlcXVl
c3QpKTsKICAgICAgICAgd2Via2l0V2ViVmlld01ha2VQZXJtaXNzaW9uUmVxdWVzdChtX3dlYlZp
ZXcsIFdFQktJVF9QRVJNSVNTSU9OX1JFUVVFU1Qobm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIHByaW50RnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJy
aWRlCisgICAgdm9pZCBwcmludEZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqIGZy
YW1lKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0V2ViVmlld1ByaW50RnJhbWUobV93
ZWJWaWV3LCBmcmFtZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgY2FuUnVuTW9kYWwoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcnVuTW9k
YWwoV2ViUGFnZVByb3h5Kikgb3ZlcnJpZGUKKyAgICB2b2lkIHJ1bk1vZGFsKFdlYlBhZ2VQcm94
eSopIG92ZXJyaWRlCiAgICAgewogICAgICAgICB3ZWJraXRXZWJWaWV3UnVuQXNNb2RhbChtX3dl
YlZpZXcpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5n
ZShXZWJQYWdlUHJveHkmKSBvdmVycmlkZQorICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFu
Z2UoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHdlYmtpdFdlYlZpZXdJ
c1BsYXlpbmdBdWRpb0NoYW5nZWQobV93ZWJWaWV3KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IDBhYTFiMzhh
MjljZmU5MGU4YTNkYTMzMGI2MDhmYThkZTcwODI4MWQuLjk2ZmUxZmMyOWE2NWQyYjZlNTk4MGUw
ZjEwODUwNDBhNzYwMTRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yNDEsNjEgKzI0MSw2MSBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkg
b3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgZ19vYmplY3RfZnJlZXplX25vdGlmeShHX09CSkVDVChtX3dlYlZpZXcpKTsKICAg
ICB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlCisgICAg
dm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgd2Via2l0
V2ViVmlld1NldElzTG9hZGluZyhtX3dlYlZpZXcsIGdldFBhZ2UobV93ZWJWaWV3KS0+cGFnZUxv
YWRTdGF0ZSgpLmlzTG9hZGluZygpKTsKICAgICAgICAgZ19vYmplY3RfdGhhd19ub3RpZnkoR19P
QkpFQ1QobV93ZWJWaWV3KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VU
aXRsZSgpIG92ZXJyaWRlCisgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoKSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgZ19vYmplY3RfZnJlZXplX25vdGlmeShHX09CSkVDVChtX3dlYlZpZXcpKTsK
ICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKKyAgICB2
b2lkIGRpZENoYW5nZVRpdGxlKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fd2ViVmlldy0+
cHJpdi0+dGl0bGUgPSBnZXRQYWdlKG1fd2ViVmlldyktPnBhZ2VMb2FkU3RhdGUoKS50aXRsZSgp
LnV0ZjgoKTsKICAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1fd2ViVmlldyksICJ0
aXRsZSIpOwogICAgICAgICBnX29iamVjdF90aGF3X25vdGlmeShHX09CSkVDVChtX3dlYlZpZXcp
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJy
aWRlCisgICAgdm9pZCB3aWxsQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGdfb2JqZWN0X2ZyZWV6ZV9ub3RpZnkoR19PQkpFQ1QobV93ZWJWaWV3KSk7CiAgICAgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZQorICAgIHZvaWQg
ZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fd2ViVmlldy0+
cHJpdi0+YWN0aXZlVVJJID0gZ2V0UGFnZShtX3dlYlZpZXcpLT5wYWdlTG9hZFN0YXRlKCkuYWN0
aXZlVVJMKCkudXRmOCgpOwogICAgICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1QobV93ZWJW
aWV3KSwgInVyaSIpOwogICAgICAgICBnX29iamVjdF90aGF3X25vdGlmeShHX09CSkVDVChtX3dl
YlZpZXcpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUhhc09ubHlTZWN1
cmVDb250ZW50KCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUhhc09u
bHlTZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlSGFzT25s
eVNlY3VyZUNvbnRlbnQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENoYW5nZUhhc09ubHlT
ZWN1cmVDb250ZW50KCkgb3ZlcnJpZGUgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5n
ZUVzdGltYXRlZFByb2dyZXNzKCkgb3ZlcnJpZGUKKyAgICB2b2lkIHdpbGxDaGFuZ2VFc3RpbWF0
ZWRQcm9ncmVzcygpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBnX29iamVjdF9mcmVlemVfbm90
aWZ5KEdfT0JKRUNUKG1fd2ViVmlldykpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlRXN0aW1hdGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ2hhbmdlRXN0aW1h
dGVkUHJvZ3Jlc3MoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgZ19vYmplY3Rfbm90aWZ5KEdf
T0JKRUNUKG1fd2ViVmlldyksICJlc3RpbWF0ZWQtbG9hZC1wcm9ncmVzcyIpOwogICAgICAgICBn
X29iamVjdF90aGF3X25vdGlmeShHX09CSkVDVChtX3dlYlZpZXcpKTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92ZXJyaWRl
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2
ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNS
ZXNwb25zaXZlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29CYWNrKCkg
b3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIHdpbGxDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGRpZENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgd2lsbENoYW5n
ZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENo
YW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHdp
bGxDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENoYW5n
ZUNlcnRpZmljYXRlSW5mbygpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgd2lsbENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZENoYW5nZVdlYlBy
b2Nlc3NJc1Jlc3BvbnNpdmUoKSBvdmVycmlkZSB7IH0KIAogICAgIFdlYktpdFdlYlZpZXcqIG1f
d2ViVmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA3MGViOTIyYjMxYTFkMTY4YzY4
MWIwZTVkYTc2YmFiZTRkZGViMjY5Li4zNWY3NjNjMmRiMzdkOGY0MjQxZGM0Y2Q4Njg0MGM4N2Jk
ZDFkMzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTY0LDE2ICs2NCwxNiBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAvLyBJbnNwZWN0b3I6OlJlbW90
ZUF1dG9tYXRpb25UYXJnZXQgQVBJCi0gICAgdmlydHVhbCBTdHJpbmcgbmFtZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkZW50aWZpZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hNZXNzYWdlRnJvbVJlbW90ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsKiwg
Ym9vbCBpc0F1dG9tYXRpY0Nvbm5lY3Rpb24gPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgbmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2Vzc2lvbklkZW50
aWZpZXI7IH0KKyAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21SZW1vdGUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVu
ZENoYW5uZWwqLCBib29sIGlzQXV0b21hdGljQ29ubmVjdGlvbiA9IGZhbHNlKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpc2Nvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwqKSBvdmVycmlk
ZTsKICNlbmRpZgogCiAgICAgLy8gSW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNo
ZXJIYW5kbGVyIEFQSQotICAgIHZpcnR1YWwgdm9pZCBnZXRXaW5kb3dzKEluc3BlY3Rvcjo6RXJy
b3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6QnJvd3NpbmdXaW5kb3c+PiYgb3V0X3dpbmRvd3MpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93KEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VXaW5kb3coSW5zcGVjdG9yOjpFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5faGFuZGxlKSBvdmVycmlkZTsKKyAgICB2b2lkIGdl
dFdpbmRvd3MoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpCcm93c2luZ1dpbmRv
dz4+JiBvdXRfd2luZG93cykgb3ZlcnJpZGU7CisgICAgdm9pZCBvcGVuV2luZG93KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsb3NlV2luZG93KEluc3BlY3Rv
cjo6RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGluX2hhbmRsZSkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6QXV0b21hdGlvblNlc3Npb25DbGllbnQ+
IG1fY2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NoaWxkUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHku
aAppbmRleCA3NTIwNzVhMmM1NDZjZjJhOTIwMWE4MGEyY2QxNDc1NjNhMmU1YTEzLi5hMmMzN2E3
MjBhZjhmNDI3M2JhYzk1Y2UwMDdhZjdmYzU0NzkyMzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ2hpbGRQcm9jZXNzUHJveHkuaApAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAK
IHByb3RlY3RlZDoKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9u
OjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOwogCiAg
ICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlv
bkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL0F1dG9tYXRpb25DbGll
bnQuaAppbmRleCAzN2YwZTRkMzBjN2I2NGI1NGM0MTNiYzBkNmVhNTUwYjVjYjk3MDE2Li5kYTUy
MzQ1M2ZjODVhY2E0ZDE2NTcwOGFjNDYxODRiNjQ5MTgxZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9BdXRvbWF0aW9uQ2xpZW50LmgKQEAgLTQ2LDEyICs0Niwx
MiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gQVBJOjpBdXRvbWF0aW9uQ2xpZW50Ci0g
ICAgdmlydHVhbCBib29sIGFsbG93c1JlbW90ZUF1dG9tYXRpb24oV2ViUHJvY2Vzc1Bvb2wqKSBv
dmVycmlkZSB7IHJldHVybiByZW1vdGVBdXRvbWF0aW9uQWxsb3dlZCgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29s
KiwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgYm9vbCBh
bGxvd3NSZW1vdGVBdXRvbWF0aW9uKFdlYlByb2Nlc3NQb29sKikgb3ZlcnJpZGUgeyByZXR1cm4g
cmVtb3RlQXV0b21hdGlvbkFsbG93ZWQoKTsgfQorICAgIHZvaWQgZGlkUmVxdWVzdEF1dG9tYXRp
b25TZXNzaW9uKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZGVudGlmaWVyKSBvdmVycmlkZTsKIAogICAgIC8vIFJlbW90ZUluc3BlY3Rvcjo6Q2xpZW50Ci0g
ICAgdmlydHVhbCBib29sIHJlbW90ZUF1dG9tYXRpb25BbGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBTdHJpbmcm
IHNlc3Npb25JZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICBib29sIHJlbW90ZUF1dG9tYXRpb25B
bGxvd2VkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0QXV0b21hdGlvblNlc3Np
b24oY29uc3QgU3RyaW5nJiBzZXNzaW9uSWRlbnRpZmllcikgb3ZlcnJpZGU7CiAKICAgICBXS1By
b2Nlc3NQb29sICptX3Byb2Nlc3NQb29sOwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tBdXRvbWF0
aW9uRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL0F1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAppbmRleCA3MzgyZWUzNTJi
YTJhZGJmMTZjODIzN2VlNWQwZjc2NGE2Yjc1ODg4Li5lODRkOGY4MjAwOTI1YWI2ZTg2ODM0ZDA1
ZmFiZGQ5ZjQ0MjBkYjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvQXV0b21hdGlvblNlc3Npb25DbGllbnQuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3ROZXdXaW5kb3coV2ViS2l0OjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbiopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWREaXNjb25uZWN0RnJv
bVJlbW90ZShXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uICopIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVxdWVzdE5ld1dpbmRvdyhXZWJLaXQ6OldlYkF1dG9tYXRpb25TZXNzaW9uKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWREaXNjb25uZWN0RnJvbVJlbW90ZShXZWJLaXQ6OldlYkF1dG9t
YXRpb25TZXNzaW9uICopIG92ZXJyaWRlOwogCiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0F1dG9t
YXRpb25TZXNzaW9uRGVsZWdhdGU+PiBtX2RlbGVnYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmluZGV4
IDcyYjRjOGU4OThkZjQ4Yjc1OWE5NzM4YzM3NDRjMWY3NzQyYTE1YTkuLmUyMmI4ZTEyZDY4NWRi
ODU0MDllMzcwZDFiYjNhODk4NjNmMmUzNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCkBAIC00OCw5ICs0
OCw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBGcm9tIEFQSTo6RGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVz
dWx0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNN
ZXNzYWdlKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUpIG92
ZXJyaWRlOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViUGFnZVBy
b3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKIAogICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3
OwogICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPj4gbV9k
ZWxlZ2F0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAppbmRleCBkYWUzNTQzYTJjYTM0MmU2ZGU3MTlhZDE4NmRiOTczMjhjMzAyNGJhLi4w
NmI1MmYzZDZhYTBmN2JlYWJhZDA4OTExNTU2YTc1ZDdjNDMwZGUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBAIC04NiwzMyArODYs
MzMgQEAgcHJpdmF0ZToKICAgICAgICAgfk5hdmlnYXRpb25DbGllbnQoKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihX
ZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0
Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZy
YW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXZWJQ
YWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24q
LCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5JiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcykgb3ZlcnJpZGU7Ci0KLSAgICAgICAgdmly
dHVhbCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViUGFnZVBy
b3h5JiwgV2ViUHJvdGVjdGlvblNwYWNlKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUGFnZVByb3h5JiwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdlYlBh
Z2VQcm94eSYpIG92ZXJyaWRlOwotCi0gICAgICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6RGF0YT4g
d2ViQ3J5cHRvTWFzdGVyS2V5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJvcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVBy
b3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEluU3ViZnJhbWVXaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGRpZENvbW1pdE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExv
YWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlk
ZTsKKyAgICAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkRmFp
bE5hdmlnYXRpb25XaXRoRXJyb3IoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6
TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oV2ViUGFn
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQ
STo6T2JqZWN0Kikgb3ZlcnJpZGU7CisKKyAgICAgICAgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZShXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKSBvdmVycmlk
ZTsKKworICAgICAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
V2ViUGFnZVByb3h5JiwgV2ViUHJvdGVjdGlvblNwYWNlKikgb3ZlcnJpZGU7CisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgcHJvY2Vzc0Rp
ZEJlY29tZVJlc3BvbnNpdmUoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKKwor
ICAgICAgICBSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJLZXkoV2ViUGFnZVByb3h5
Jikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKKyAgICAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBRdWlja0xvb2tEb2N1bWVudERhdGEmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+
JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2UmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
JiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2UoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBSZWY8V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRl
OwogCiAgICAgICAgIE5hdmlnYXRpb25TdGF0ZSYgbV9uYXZpZ2F0aW9uU3RhdGU7CiAgICAgfTsK
QEAgLTEyMywzNSArMTIzLDM1IEBAIHByaXZhdGU6CiAgICAgICAgIH5IaXN0b3J5Q2xpZW50KCk7
CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWROYXZpZ2F0
ZVdpdGhOYXZpZ2F0aW9uRGF0YShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtQ2xpZW50
UmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0
cmluZyYpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybVNlcnZlclJl
ZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRs
ZShXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoV2Vi
UGFnZVByb3h5JiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYpIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmLCBjb25zdCBX
VEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV1RGOjpTdHJpbmcmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRVcGRhdGVI
aXN0b3J5VGl0bGUoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYpIG92ZXJyaWRlOwogICAgICAgICAKICAgICAgICAgTmF2aWdhdGlvblN0YXRlJiBt
X25hdmlnYXRpb25TdGF0ZTsKICAgICB9OwogCiAgICAgLy8gUGFnZUxvYWRTdGF0ZTo6T2JzZXJ2
ZXIKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUlzTG9hZGluZygpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbENoYW5nZVRpdGxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZVRpdGxlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVV
UkwoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWN0aXZlVVJMKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVudCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJlQ29udGVu
dCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRXN0aW1hdGVkUHJvZ3Jl
c3MoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDYW5Hb0JhY2soKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUNhbkdvRm9yd2FyZCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbENoYW5nZU5ldHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNlcnRpZmljYXRlSW5mbygpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlV2ViUHJvY2Vzc0lzUmVzcG9uc2l2ZSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25z
aXZlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdlSXNMb2FkaW5nKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRDaGFuZ2VJc0xvYWRpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VBY3RpdmVVUkwoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZENoYW5nZUFjdGl2ZVVSTCgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbENoYW5nZUhhc09ubHlT
ZWN1cmVDb250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VIYXNPbmx5U2VjdXJl
Q29udGVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbENoYW5nZUVzdGltYXRlZFByb2dyZXNz
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VFc3RpbWF0ZWRQcm9ncmVzcygpIG92ZXJy
aWRlOworICAgIHZvaWQgd2lsbENoYW5nZUNhbkdvQmFjaygpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkQ2hhbmdlQ2FuR29CYWNrKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2FuR29G
b3J3YXJkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VDYW5Hb0ZvcndhcmQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VOZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdlQ2VydGlmaWNhdGVJbmZvKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRDaGFuZ2VDZXJ0aWZpY2F0ZUluZm8oKSBvdmVycmlkZTsKKyAgICB2b2lkIHdp
bGxDaGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRD
aGFuZ2VXZWJQcm9jZXNzSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7CiAKICAgICBXS1dlYlZpZXcg
Km1fd2ViVmlldzsKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+ID4g
bV9uYXZpZ2F0aW9uRGVsZWdhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUuaAppbmRleCA5ZGVmMTc4OTg3YjI2OTFkMDZkYmE4N2ExNjM2NTc3MDUyNGJhZmFi
Li4yMGRmMTJiZDBlN2U3MTI4MWU5N2I5N2Y0MGE5YzJkNTAwZTNkNzQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJp
dmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEFQSTo6Q29udGV4dE1lbnVDbGllbnQK
LSAgICAgICAgdmlydHVhbCBSZXRhaW5QdHI8TlNNZW51PiBtZW51RnJvbVByb3Bvc2VkTWVudShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5TTWVudSAqLCBjb25zdCBXZWJLaXQ6OldlYkhpdFRlc3RS
ZXN1bHREYXRhJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgUmV0YWluUHRyPE5T
TWVudT4gbWVudUZyb21Qcm9wb3NlZE1lbnUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOU01lbnUg
KiwgY29uc3QgV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0RGF0YSYsIEFQSTo6T2JqZWN0Kikgb3Zl
cnJpZGU7CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwogICAgIH07CkBAIC03
NiwyNiArNzYsMjYgQEAgcHJpdmF0ZToKIAogICAgIHByaXZhdGU6CiAgICAgICAgIC8vIEFQSTo6
VUlDbGllbnQKLSAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5
PiBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBjbG9zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKFdlYktpdDo6V2ViUGFnZVByb3h5
Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4
aXRGdWxsc2NyZWVuKFdlYktpdDo6V2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0o
V2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25z
dCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lk
IChjb25zdCBXVEY6OlN0cmluZyYpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2Vi
RnJhbWVQcm94eSosIEFQSTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXVEY6OlN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcg
bG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2luVXNhZ2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBl
Y3RlZFVzYWdlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKHVuc2lnbmVkIGxvbmcgbG9uZyk+KSBvdmVy
cmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2lu
UXVvdGEoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIHN0ZDo6ZnVuY3Rp
b248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJpbnRGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSopIG92ZXJyaWRlOworICAgICAgICBQYXNzUmVmUHRyPFdl
YktpdDo6V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93
RmVhdHVyZXMmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJikgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgY2xvc2UoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAg
ICAgICAgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRFbnRlckZ1bGxzY3JlZW4oV2ViS2l0OjpX
ZWJQYWdlUHJveHkqKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSopIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRBbGVydChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgc3Rk
OjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBX
VEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBydW5KYXZhU2NyaXB0UHJvbXB0KFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYs
IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgV1RGOjpTdHJpbmcmKT4gY29tcGxldGlvbkhhbmRs
ZXIpIG92ZXJyaWRlOworICAgICAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdl
UHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5z
aWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRVc2FnZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGV4cGVjdGVkVXNhZ2UsIHN0ZDo6ZnVuY3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBs
b25nKT4pIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3Jp
Z2luUXVvdGEoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAodW5zaWduZWQgbG9uZyBsb25nKT4gY29tcGxldGlvbkhhbmRsZXIpIG92ZXJy
aWRlOworICAgICAgICB2b2lkIHByaW50RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkqKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCiAjaWYgSEFW
RShBUFBfTElOS1MpCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJbmNsdWRlQXBwTGlua0Fj
dGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopIG92ZXJyaWRlOworICAg
ICAgICBib29sIHNob3VsZEluY2x1ZGVBcHBMaW5rQWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZh
dGVkRWxlbWVudEluZm8gKikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICAgICAgdmlydHVhbCBSZXRh
aW5QdHI8TlNBcnJheT4gYWN0aW9uc0ZvckVsZW1lbnQoX1dLQWN0aXZhdGVkRWxlbWVudEluZm8g
KiwgUmV0YWluUHRyPE5TQXJyYXk+IGRlZmF1bHRBY3Rpb25zKSBvdmVycmlkZTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIoKSBvdmVycmlkZTsKKyAgICAgICAgUmV0YWluUHRyPE5TQXJyYXk+
IGFjdGlvbnNGb3JFbGVtZW50KF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICosIFJldGFpblB0cjxO
U0FycmF5PiBkZWZhdWx0QWN0aW9ucykgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZGlkTm90SGFu
ZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOworICAgICAg
ICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKSBvdmVycmlkZTsK
ICNlbmRpZgotICAgICAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgaW1h
Z2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3Zl
cnJpZGU7CiAKICAgICAgICAgVUlEZWxlZ2F0ZSYgbV91aURlbGVnYXRlOwogICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29j
b2EubW0KaW5kZXggNDE2NTI0N2M5ZTg4YmQzOTg1Mjc0OGIwMGY3MzI4MTIzMmFiZDhiMy4uOWJi
MDcwMDk2OWNlZjhiMTdhMmEyN2Q1N2VjMjA5NzdmYmYxZDgzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAt
NDEsNyArNDEsNyBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6OnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVHJhbnNmb3JtT2JqZWN0KGlkIG9iamVj
dCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBzaG91bGRUcmFuc2Zvcm1PYmplY3QoaWQg
b2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAgICAgICB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAg
ICAgICAgICAgIGlmIChkeW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZT4o
b2JqZWN0KSkKQEAgLTUzLDcgKzUzLDcgQEAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4gV2ViUHJv
Y2Vzc1Byb3h5Ojp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKE9iakNPYmplY3RHcmEKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmV0YWlu
UHRyPGlkPiB0cmFuc2Zvcm1PYmplY3QoaWQgb2JqZWN0KSBjb25zdCBvdmVycmlkZQorICAgICAg
ICBSZXRhaW5QdHI8aWQ+IHRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRl
CiAgICAgICAgIHsKICNpZiBXS19BUElfRU5BQkxFRAogICAgICAgICAgICAgaWYgKGF1dG8qIGhh
bmRsZSA9IGR5bmFtaWNfb2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3Qp
KSB7CkBAIC03OSw3ICs3OSw3IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3NQ
cm94eTo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhPYmpDT2JqZWN0R3JhCiBSZWZQdHI8T2Jq
Q09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
T2JqQ09iamVjdEdyYXBoJiBvYmplY3RHcmFwaCkKIHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIg
ZmluYWwgOiBPYmpDT2JqZWN0R3JhcGg6OlRyYW5zZm9ybWVyIHsKLSAgICAgICAgdmlydHVhbCBi
b29sIHNob3VsZFRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCisgICAg
ICAgIGJvb2wgc2hvdWxkVHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUK
ICAgICAgICAgewogI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgICAgICAgICBpZiAoZHluYW1pY19v
YmpjX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyPihvYmplY3QpKQpAQCAtOTEsNyAr
OTEsNyBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXMoT2JqQ09iamVjdEdyYQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHRyYW5zZm9ybU9i
amVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIFJldGFpblB0cjxpZD4gdHJh
bnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogI2lmIFdL
X0FQSV9FTkFCTEVECiAgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IGR5bmFtaWNf
b2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcj4ob2JqZWN0KSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkuaAppbmRleCA3MWEwZThmYTBmZTE4MDA3YjlhNWM4NDUyOGVkM2Nl
ZTI3YjNkZmJmLi5iYjU0NDc3N2ZmMDkzMTI4YzE4MTU3ZjNhZWZjYjU4ZmRmOTg2OGYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC03NiwzMCArNzYsMzAgQEAgcHJpdmF0ZToK
ICAgICB9CiAKICAgICAvLyBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbAotICAgIHZpcnR1YWwgdm9p
ZCBwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHRvZ2dsZVBsYXlTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBiZWdpblNjcnViYmluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbmRTY3J1
YmJpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvVGltZShkb3VibGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdGb3J3YXJkKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGJlZ2luU2Nhbm5pbmdCYWNrd2FyZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9MYXllckZyYW1l
KFdlYkNvcmU6OkZsb2F0UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVv
TGF5ZXJHcmF2aXR5KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
bGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNW
aXNpYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwbGF5KCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYXVzZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBiZWdpblNjcnViYmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgZW5kU2Ny
dWJiaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWVrVG9UaW1lKGRvdWJsZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBmYXN0U2Vlayhkb3VibGUgdGltZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBiZWdp
blNjYW5uaW5nRm9yd2FyZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnaW5TY2FubmluZ0JhY2t3
YXJkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbmRTY2FubmluZygpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJh
bWUoV2ViQ29yZTo6RmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvTGF5ZXJH
cmF2aXR5KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWxlY3RBdWRpb01lZGlh
T3B0aW9uKHVpbnQ2NF90KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbGVjdExlZ2libGVNZWRpYU9w
dGlvbih1aW50NjRfdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNoYW5nZWQo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVy
cmlkZTsKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gV2Vi
VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0dXBG
dWxsc2NyZWVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEVudGVyRnVsbHNjcmVl
bigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFNldHVwRnVsbHNjcmVlbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRW50
ZXJGdWxsc2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRFeGl0RnVsbHNjcmVlbigpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpIG92ZXJyaWRlOwogCiAgICAgV2ViVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV9jb250
ZXh0SWQ7CkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgV2Vi
VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0OwogCiAgICAgZXhwbGljaXQgV2ViVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8UmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dD4sIFJlZlB0cjxQbGF0Zm9ybVdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZT4+IE1vZGVsSW50ZXJmYWNlVHVwbGU7CiAgICAgTW9kZWxJ
bnRlcmZhY2VUdXBsZSBjcmVhdGVNb2RlbEFuZEludGVyZmFjZSh1aW50NjRfdCBjb250ZXh0SWQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
aW5kZXggNDY1NTQyM2Y2ODVlYWQ2ZmRmZDQ3NmY0NzA5OTIyNWI2NGY1MWVjZC4uOGYyODY2N2M4
Y2FmOGE2MzE2NjM1N2IwZDlmZmVlZjY1NGVmMjQ4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC00OSwxNyArNDksMTcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKTsKICAg
ICBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2NlbmUuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVW
aWV3cG9ydCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVWaWV3cG9ydCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVuZGVyTmV4
dEZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJ
RCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
bW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBvZmZzZXQpIG92ZXJyaWRlOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0
ZShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4pOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAg
Q29vcmRpbmF0ZWREcmF3aW5nQXJlYVByb3h5KiBtX2RyYXdpbmdBcmVhUHJveHk7CiAgICAgUmVm
UHRyPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4gbV9zY2VuZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaApp
bmRleCA3ODU3ZDQ2YjBhMTNiYjdmYzlhYmExMjBjYzdkY2MxOGEyMWVlOWNmLi44NzdiMzU4NmUy
MTNjMjI1NjRkZDVkMDYzZTI1Njk3YjEzZTg0OWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oCkBAIC01
OSwxNSArNTksMTUgQEAgcHJpdmF0ZToKICAgICBEYXRhYmFzZVByb2Nlc3NQcm94eShXZWJQcm9j
ZXNzUG9vbCopOwogCiAgICAgLy8gQ2hpbGRQcm9jZXNzUHJveHkKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rpb24m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9jZXNzV2lsbFNodXREb3duKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGll
bnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9z
ZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUgbG9jYWxQcm9jZXNzVHlwZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OlVJOyB9Ci0gICAgdmlydHVhbCBJUEM6
OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQ
cm9jZXNzVHlwZTo6RGF0YWJhc2U7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUlu
dmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3Nh
Z2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlk
ZTsKKyAgICBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJl
dHVybiBJUEM6OlByb2Nlc3NUeXBlOjpVSTsgfQorICAgIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3Rl
UHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpEYXRhYmFz
ZTsgfQogCiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKIApAQCAtNzgsNyArNzgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaW5pc2hMYXVuY2hp
bmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgcGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6
TGF1bmNoT3B0aW9ucyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDlkMTMxODE3MThhNjEyOTYzMDQzOTQwM2M1MzMz
ZGQwM2Q5ZjJiY2QuLjViZjBmNzQzNzUyODM2YzA1ZjRlZDMzNjQ3Y2RlOGEyZmVlZTk4NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCkBAIC03Myw4ICs3Myw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgRG93bmxvYWRQcm94
eShEb3dubG9hZFByb3h5TWFwJiwgV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkU3RhcnQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Ry
YXdpbmdBcmVhUHJveHkuaAppbmRleCA3OTczZGYxYTFjYTBkYjY4Y2IzZmU3ZDgwZGNiYjQxZjA2
ODU2MTVmLi45YTllM2JhOTlkMTdmMGE3Y2E4ZDU5Mzg0YzljNzRjMGQ0NzQ2MjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTExMCw3ICsxMTAs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3Njcm9sbE9mZnNldDsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2l6ZURp
ZENoYW5nZSgpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVh
UHJveHlJbXBsLmgKaW5kZXggMjRkYTY2YTY1ZTMyY2ViODA3NTkzNzRmMzFhZTg0YThhYjJhMWQ0
NC4uYzU2NzMxMzc3YWU3ODJhNjc1NmZlODMzY2U0OGEwMTEyNTFkZTU3YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHlJbXBsLmgKQEAgLTUzLDIzICs1
MywyMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNv
bXBvc2l0aW5nKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5z
dXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOwogCiBwcml2YXRlOgog
ICAgIC8vIERyYXdpbmdBcmVhUHJveHkKLSAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZSgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgc2l6ZURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBzZXRCYWNraW5nU3RvcmVJc0Rpc2NhcmRhYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB3YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZUlzRGlzY2FyZGFibGUoYm9vbCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB3YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKSBvdmVycmlkZTsK
IAogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZSh1
aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBVcGRhdGVJbmZvJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJh
Y2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mLCBjb25zdCBMYXllclRyZWVDb250
ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgVXBkYXRlSW5mbyYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXllclRyZWVDb250ZXh0
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mLCBjb25zdCBMYXllclRyZWVD
b250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50
NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBVcGRhdGVJbmZvJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5n
U3RvcmVTdGF0ZUlELCBjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3Rv
cmVTdGF0ZUlEKSBvdmVycmlkZTsKIAogICAgIHZvaWQgaW5jb3Jwb3JhdGVVcGRhdGUoY29uc3Qg
VXBkYXRlSW5mbyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2Vu
ZXJpY0NhbGxiYWNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VuZXJpY0NhbGxiYWNr
LmgKaW5kZXggODRjZTNkZTA0MDg1YTJmNGQ5N2NiMGM1MWIzYWNiZDZlOTViYjI0MS4uNmZmZWVi
MWFlMzgwZDliODhkMzQzM2I5ODFjMmM1M2Y4MDcxY2IwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0dlbmVyaWNDYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9HZW5lcmljQ2FsbGJhY2suaApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKCk7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGUoRXJyb3IgZXJyb3IgPSBFcnJvcjo6VW5rbm93bikgb3ZlcnJp
ZGUgZmluYWwKKyAgICB2b2lkIGludmFsaWRhdGUoRXJyb3IgZXJyb3IgPSBFcnJvcjo6VW5rbm93
bikgb3ZlcnJpZGUgZmluYWwKICAgICB7CiAgICAgICAgIGlmICghbV9jYWxsYmFjaykKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3
b3JrL0N1c3RvbVByb3RvY29scy9DdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29s
TWFuYWdlclByb3h5LmgKaW5kZXggNjYwMGEyNzdmMmVmMjgxNzA2YmFiMjkxNGZhN2NjYmNjOTMw
Y2ZiYi4uZmE0OWQ2MGVhZDk4YTEyZWU0YjIyNjE0Y2NkNTYzODA5NjE3NDJlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3Rv
bVByb3RvY29sTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL0N1c3RvbVByb3RvY29sTWFuYWdlclByb3h5LmgKQEAgLTUz
LDcgKzUzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2Vp
dmVyCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIENoaWxkUHJvY2Vzc1Byb3h5KiBtX2NoaWxkUHJvY2Vzc1Byb3h5OwogICAgIFdlYlByb2Nl
c3NQb29sJiBtX3Byb2Nlc3NQb29sOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29sUmVx
dWVzdE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9zb3VwL1dlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RNYW5hZ2VyLmgKaW5kZXgg
ZTE0MzA2YTM4NjM0YzFmODVlODQ3Mzc5NjJlZWZhOWQ4ZTk1MGM2ZS4uMzZjOWVkNWRmYTQzYmY1
NjM5ZGQ0YWViOGQxYjJhNDQyZDY3YmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL3NvdXAvV2ViU291cEN1c3RvbVByb3RvY29s
UmVxdWVzdE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9D
dXN0b21Qcm90b2NvbHMvc291cC9XZWJTb3VwQ3VzdG9tUHJvdG9jb2xSZXF1ZXN0TWFuYWdlci5o
CkBAIC03MCwxMCArNzAsMTAgQEAgcHJpdmF0ZToKICAgICBXZWJTb3VwQ3VzdG9tUHJvdG9jb2xS
ZXF1ZXN0TWFuYWdlcihXZWJQcm9jZXNzUG9vbCopOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBs
ZW1lbnQKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJv
Y2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOworICAgIHZvaWQgcmVmV2Vi
Q29udGV4dFN1cHBsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1
cHBsZW1lbnQoKSBvdmVycmlkZTsKIAogICAgIFdlYlNvdXBDdXN0b21Qcm90b2NvbFJlcXVlc3RN
YW5hZ2VyQ2xpZW50IG1fY2xpZW50OwogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmVnaXN0ZXJlZFNj
aGVtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMGZmM2ExNGIzMDkyZDNhODk2MDM3MDVlMmEwYTBhM2Qz
ZmE4ODVmNy4uZjMxMjBlNmZkODBhNjZkYzU5N2NjMjNmNDYyYmY0OGQyZmVjMzkwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtNzgsOSArNzgsOSBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzUHJv
eHkoV2ViUHJvY2Vzc1Bvb2wmKTsKIAogICAgIC8vIENoaWxkUHJvY2Vzc1Byb3h5Ci0gICAgdmly
dHVhbCB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25z
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1dpbGxTaHV0RG93
bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMo
UHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb25u
ZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9j
ZXNzV2lsbFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJik7
CiAgICAgdm9pZCBuZXR3b3JrUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CkBAIC05
MywxMiArOTMsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNldEFzc2VydGlvblN0YXRlKEFz
c2VydGlvblN0YXRlKSBvdmVycmlkZTsKIAogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJv
Y2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpVSTsgfQotICAg
IHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6Ok5ldHdvcms7IH0KKyAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NU
eXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6VUk7IH0KKyAgICBJUEM6
OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQ
cm9jZXNzVHlwZTo6TmV0d29yazsgfQogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZv
aWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgbG9nU2FtcGxlZERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25z
dCBTdHJpbmcmIHZhbHVlKTsKIAogICAgIC8vIFByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNv
bm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTGF1bmNo
aW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJp
ZGU7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggMDJhMjI2OWU1ODI0NzJkODk1ODcz
NmYzMTA4ZGQ1YTI5YWI3ZmI2Ni4uNDRmNDZhOTBmY2RhYzYzY2FhY2FmMDE1MWYyNWIzNmEzZGRi
N2ZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTc3LDkg
Kzc3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmlj
YXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAotICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9j
ZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBv
dmVycmlkZTsKIAogICAgIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyIG1fcHJvdmlkZXI7CiAgICAg
Ly8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5v
dGlmaWNhdGlvbiBJRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBiNDNiNzgzNTNlNzUxNjViYWVjY2IxNTUyNGE2
ZDFlNjYxYjM5ZTdmLi4xMTIyZmYzZWIzYTNmOGJiMGQ4MTk5YmQ0Y2VjMjZhYTViMDgxYjcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaApAQCAtMTAxLDIzICsxMDEsMjMgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQ
bHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Qcm9j
ZXNzQXR0cmlidXRlcyYsIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpM
YXVuY2hPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwbGF0Zm9ybUdldExhdW5jaE9wdGlv
bnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpD
b25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkT3JG
YWlsZWRUb0xhdW5jaCgpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVl
X3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQ
Qzo6UHJvY2Vzc1R5cGUgbG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6
UHJvY2Vzc1R5cGU6OlVJOyB9Ci0gICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVBy
b2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6UGx1Z2luOyB9
CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
TmFtZSkgb3ZlcnJpZGU7CisgICAgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6VUk7IH0KKyAgICBJUEM6OlByb2Nl
c3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNz
VHlwZTo6UGx1Z2luOyB9CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAotICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGlu
ZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRl
OwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50JiwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nVHJlZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKaW5kZXggY2IxZTkzMGNi
YWI2NmJmNzkwZmYzNzkzOWI5ZTA3NTBiOTY4OGJlYi4uZWYzN2FjN2E5NWEyZWE2MTkxNjkyMDY1
Mjg3MDkyNmQ0Yjc2NzViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Nj
cm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdUcmVlLmgKQEAgLTQxLDMwICs0MSwzMCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVTY3JvbGxpbmdUcmVlPiBjcmVhdGUoUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSYpOwogICAgIHZpcnR1YWwgflJlbW90ZVNjcm9sbGlu
Z1RyZWUoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ1RyZWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBFdmVudFJlc3VsdCB0cnlU
b0hhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ1RyZWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CisgICAgRXZlbnRSZXN1bHQgdHJ5VG9IYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlOwogCiAgICAgY29uc3Qg
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSYgc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGlu
Z05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIFdlYkNv
cmU6OlNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24gPSBXZWJDb3JlOjpTeW5jU2Nyb2xs
aW5nTGF5ZXJQb3NpdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGluZ1Ry
ZWVOb2RlUmVxdWVzdHNTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCByZXByZXNlbnRzUHJvZ3JhbW1h
dGljU2Nyb2xsKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xs
KFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Ny
b2xsUG9zaXRpb24sIFdlYkNvcmU6OlNldE9yU3luY1Njcm9sbGluZ0xheWVyUG9zaXRpb24gPSBX
ZWJDb3JlOjpTeW5jU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
Y3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgcmVwcmVzZW50
c1Byb2dyYW1tYXRpY1Njcm9sbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXJyZW50U25hcFBvaW50
SW5kaWNlc0RpZENoYW5nZShXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQsIHVuc2lnbmVkIGhvcml6
b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBSZW1vdGVTY3JvbGxpbmdUcmVlKFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkm
KTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVu
dFBoYXNlKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudFBoYXNlKSBvdmVycmlkZTsKKyAgICB2
b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIFdl
YkNvcmU6OkZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFBhbkdlc3R1cmUoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKSBv
dmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3QoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZSgpIG92
ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNjcm9sbGluZ1RyZWVOb2RlRGlkRW5kU2Nyb2xsKCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxpbmdUcmVl
Tm9kZT4gY3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZVR5cGUs
IFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlTm9kZT4gY3JlYXRlU2Nyb2xsaW5nVHJlZU5vZGUoV2ViQ29yZTo6
U2Nyb2xsaW5nTm9kZVR5cGUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCkgb3ZlcnJpZGU7CiAg
ICAgCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eSYgbV9zY3JvbGxpbmdDb29y
ZGluYXRvclByb3h5OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MuaAppbmRleCBiMzA4NmEyODYwZDczZDk4ZWM0YjYxNjEzYzZhMDY2
NmM2M2Q3ZGQyLi5mNmY0OTQ4ZWFjYmUxOWU4MzhhZmIxMjY5OTE2YTViYjlkMDA4Y2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5o
CkBAIC01MSwxOSArNTEsMTkgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmLCBXZWJDb3Jl
OjpTY3JvbGxpbmdOb2RlSUQpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUJlZm9yZUNoaWxk
cmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQmVmb3JlQ2hpbGRyZW4oY29uc3Qg
V2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRl
OwogICAgIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbigp
IGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24o
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0
aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNj
cm9sbExheWVyUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2UoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxlKSBvdmVy
cmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3Jv
bGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwor
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBkb3VibGUgc2NhbGUpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGZpeGVkUG9z
aXRpb25SZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBjdW11
bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVdoZWVsRXZl
bnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUgeyB9CisgICAg
dm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCYp
IG92ZXJyaWRlIHsgfQogCiAgICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKaW5kZXggYTBmMTc5MzEzNjdmZTJlNmE4
MzA5MTcyNWUxZjk2ZTZjMmNmMjJjYS4uMDYzMWRhNDYxMTg4NGFjMTkwYWNhNzI1MThjNTlhMTZi
MjgxY2M0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5oCkBAIC03NSw4ICs3NSw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU3Rv
cmFnZU1hbmFnZXIoY29uc3QgU3RyaW5nJiBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkpOwogCiAgICAg
Ly8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpNZXNzYWdlRW5jb2Rlcj4mIHJlcGx5RW5jb2Rlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNv
ZGVyPiYgcmVwbHlFbmNvZGVyKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBjcmVhdGVMb2NhbFN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaAppbmRleCA3NTUyOWU2MjEzN2ExMGRiMjBkYjk5Yjc4ZjdjMjE5YWY5ZWEwMWY4Li42
MGM4ZGUwZTBjYTg2NTE3MWQ1ZmUzYjc2OWRiODA4Y2NmODZjNGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtOTksNyArOTksNyBAQCBwdWJsaWM6CiAKIHBy
aXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9WaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggMDZhNGIyY2YzZjdmMDA0NjdiOWI0YjIwY2Y0YmZl
MGVkNDA5ZWI4My4uZThjNmU4NjA1OTFmMDgwMjFhMGQ0OWNlYzg2MzI2YjIxMjU4MWQ2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC01OCwxMSAr
NTgsMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAg
IC8vIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyCi0gICAgdmlydHVhbCB2b2lkIHdlYlByb2Nl
c3NXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24o
V2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3
ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpMaW5r
SGFzaCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5
TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFn
ZXJQcm94eS5oCmluZGV4IGM0Y2MzMjkyOGRkM2Y0ODY0ODk0YjRkOTkwYjg0Zjg2YWU5MzJjMzEu
LjY4NzMyODQ5ZjljODdlYWNkZWQwNWViZmVkNjFjYmVmZWFiYWU4ZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkJhdHRlcnlNYW5hZ2VyUHJveHkuaApAQCAtNTgsMTMg
KzU4LDEzIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViQmF0dGVyeU1hbmFnZXJQcm94eShX
ZWJQcm9jZXNzUG9vbCopOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2aXJ0
dWFsIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9j
ZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdl
YlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOworICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBsZW1l
bnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVy
cmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3RhcnRVcGRhdGluZygp
OwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBhMzY2NGJlNWFjNjYzMjYw
OTk2MmYxYzEzMWMwNzI1YzcxMWVkN2JmLi5hOTdlYzJhZDU4ZmZlYWUxNDExZjRjMDk2YzA1MjBm
OTRhNWFiMTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQ0LDEzICs0NCwxMyBAQCBwcml2YXRlOgogICAgIFdl
YkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Kik7CiAKICAgICAvLyBXZWJD
b25uZWN0aW9uCi0gICAgdmlydHVhbCBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHMoQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxB
UEk6Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZENvbm5lY3Rpb24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJ
OjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1ZhbGlk
Q29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
Ci0gICAgdmlydHVhbCBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIG92ZXJyaWRlOworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBvdmVycmlkZTsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IG92ZXJyaWRlOwogCiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBtX3Byb2Nlc3M7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IGUx
YWE1MjdiYmNiZDc3ZTljYzRjY2U4NDMxZDQzNTdlZTU3ZmIxOWQuLjdiYzJkNmU1MzIwZWEyOTg4
ZTE4OWEwYjhiNjVhMjgxZDM4MzEzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTg5LDE0ICs4OSwxNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY29va2llc0RpZENoYW5nZSgpOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1l
bnQKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ2xvc2UoTmV0d29ya1Byb2Nlc3NQcm94eSop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBwcm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOworICAgIHZvaWQg
cHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtQcm9jZXNzUHJveHkqKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXJlZldlYkNv
bnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHBlcnNpc3RIVFRQQ29va2llQWNjZXB0UG9saWN5
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZvcm1DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3Jt
Q2xpZW50LmgKaW5kZXggNjZmZWZlZDlkMzEzZTc4OGEwYjcxMWFiODdhNjBhODE5NDZkNTUzOS4u
ZjJhNmQ2N2VhN2YyNGNiMDMyYmVkODhkMGUwMjdjMTU4ZTgzMDg3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRm9ybUNsaWVudC5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIFdlYkZv
cm1DbGllbnQgOiBwdWJsaWMgQVBJOjpGb3JtQ2xpZW50LCBBUEk6OkNsaWVudDxXS1BhZ2VGb3Jt
Q2xpZW50QmFzZT4KIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJGb3JtQ2xpZW50KGNvbnN0IFdL
UGFnZUZvcm1DbGllbnRCYXNlKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFN1Ym1pdEZvcm0o
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBWZWN0
b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBSZWY8V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5PiYmKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJv
eHkmLCBXZWJGcmFtZVByb3h5JiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JiB0ZXh0RmllbGRWYWx1ZXMsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgUmVmPFdlYkZvcm1T
dWJtaXNzaW9uTGlzdGVuZXJQcm94eT4mJikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eS5oCmluZGV4IDg2NDUzMTc4MDI1OGY4Njc0OGI3ODg4Njk4OWUzZDg0MWMw
NDA5MTAuLjUzNzJiMTViOTc4NTQwZmFkOTQ5YTkzYjI2NjcwY2ZmZDBiNGZjMDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
aApAQCAtODEsOCArODEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYmVnYW5FbnRlckZ1bGxTY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmaW5hbEZyYW1lKTsKICAgICB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3JlZW4oY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
aW5hbEZyYW1lKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7
CiAgICAgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCogbV9jbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5o
CmluZGV4IGZhNTA4NDZhNWIzZDM1YTJkZWY2YTZlNmQyODQ1OWQ3MmQ0MGM2YWQuLjI1ZWRhOWI5
ZjYzMWI0YWFhZDM5NDYzMGQ2MTRjZTkzMjJlOTg0NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC02MCwxMyAr
NjAsMTMgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eShXZWJQcm9jZXNzUG9vbCopOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKLSAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc1Bvb2xEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBw
cm9jZXNzUG9vbERlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzc0RpZENsb3Nl
KFdlYlByb2Nlc3NQcm94eSopIG92ZXJyaWRlOworICAgIHZvaWQgcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBv
dmVycmlkZTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNVcGRhdGluZygp
IGNvbnN0IHsgcmV0dXJuICFtX3VwZGF0ZVJlcXVlc3RlcnMuaXNFbXB0eSgpOyB9CiAgICAgYm9v
bCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9oaWdoQWNjdXJhY3lS
ZXF1ZXN0ZXJzLmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkljb25E
YXRhYmFzZS5oCmluZGV4IDdkOGI2MDI1ZjNhOTRkZjU1YmQxNWQzMWUxZTQ0MzgyMmU5ZGVkNTMu
LmNmZjU0OTk2ODllMzc4OTM0ZjI3NWU1NzVhZjE3Y2I2NzRkNDE0NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJY29uRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSWNvbkRhdGFiYXNlLmgKQEAgLTkzLDE2ICs5MywxNiBAQCBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFdlYkljb25EYXRhYmFzZShXZWJQcm9jZXNzUG9vbCYpOwogCiAg
ICAgLy8gV2ViQ29yZTo6SWNvbkRhdGFiYXNlQ2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZElt
cG9ydEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRJbXBvcnRJY29uRGF0YUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVBbGxJY29ucygpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hVUkxJbXBvcnQoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEltcG9ydElj
b25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkSW1w
b3J0SWNvbkRhdGFGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZW1vdmVBbGxJY29ucygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoVVJMSW1w
b3J0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZSgpIG92ZXJyaWRlOwogCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbm90aWZ5SWNv
bkRhdGFSZWFkeUZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggY2ZmYTI2Njk4NzQ0ZmNlNjg0Yzc1
ODJhZmRmMWY0MmNkYjQ2YTJkZC4uMGRiNDQ4N2M4MjAyZmY5MGRjMTM3ZTdkOWFiMDZkNDI5MGU5
ZjJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmgK
QEAgLTE1OCw3ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWFnZXJseUNyZWF0ZUluc3Bl
Y3RvclBhZ2UoKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29k
ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2VQcm94eSog
cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdlKCk7CiAgICAgdm9pZCBwbGF0Zm9ybU9wZW4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJNZWRpYVNlc3Npb25Gb2N1
c01hbmFnZXIuaAppbmRleCBkM2JmZDQ1MTk4N2JiNjFjZmJmMDJkZDY0NTRmZGY3YWY4YmI0NTJj
Li5jYjc2MjNmZDQ0OTM3OGJlMzY4MTRmMzQ2NDBjNWFjYjM3YmI0ZWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTWVkaWFTZXNzaW9uRm9jdXNNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk1lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlci5o
CkBAIC01OSw4ICs1OSw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTWVkaWFTZXNzaW9u
Rm9jdXNNYW5hZ2VyKFdlYlByb2Nlc3NQb29sKik7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxl
bWVudAotICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVQ
bGF5YmFja0F0dHJpYnV0ZShXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclBsYXliYWNrQXR0cmli
dXRlLCBib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCmluZGV4IDQxYzgzNGY0YzQyNTQxNTI4ZGU5
MWRmYzI4OWZkMDkwYmQwMzA1ZmQuLjk1NTU3ZWQzZjRiZGMzNDI0ODMzNDYwMTAwMDIwYTYxMGIz
NzRhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKQEAgLTQ4LDkgKzQ4LDkgQEAgY2xhc3MgV2ViUGFn
ZURpYWdub3N0aWNMb2dnaW5nQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLUGFn
ZURpYWdub3N0aWMKIHB1YmxpYzoKICAgICBleHBsaWNpdCBXZWJQYWdlRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQoY29uc3QgV0tQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnRCYXNlKik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYlBhZ2VQcm94
eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViUGFnZVByb3h5KiwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcm
IHZhbHVlKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYlBhZ2VQ
cm94eSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbikg
b3ZlcnJpZGU7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUpIG92ZXJyaWRlOworICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViUGFnZVByb3h5KiwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDJhYjk5OGI0YjZhZjU5NDA1YWJjZTFhZTcz
MmZhOTM5MzBlZmEyOGMuLjliZTY1NjhlMjZiODcyNTBkNmU3ZTFmYjVmYTMyZTI0MjhiYTk1ZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkzNCw3ICs5MzQs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIC8vIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQK
LSAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1vdXNl
RG93bkV2ZW50KCkgb3ZlcnJpZGU7CisgICAgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5
UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0U3VwcHJl
c3NWaXNpYmlsaXR5VXBkYXRlcyhib29sIGZsYWcpOwogICAgIGJvb2wgc3VwcHJlc3NWaXNpYmls
aXR5VXBkYXRlcygpIHsgcmV0dXJuIG1fc3VwcHJlc3NWaXNpYmlsaXR5VXBkYXRlczsgfQpAQCAt
MTA3MCwxMCArMTA3MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRNb2NrTWVkaWFQbGF5YmFj
a1RhcmdldFBpY2tlclN0YXRlKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok1lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0OjpTdGF0ZSk7CiAKICAgICAvLyBXZWJNZWRpYVNlc3Npb25NYW5hZ2VyQ2xp
ZW50Ci0gICAgdmlydHVhbCB2b2lkIHNldFBsYXliYWNrVGFyZ2V0KHVpbnQ2NF90LCBSZWY8V2Vi
Q29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90LCBib29sKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
dWludDY0X3QsIGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjdXN0b21QbGF5YmFj
a0FjdGlvblNlbGVjdGVkKHVpbnQ2NF90KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBsYXliYWNr
VGFyZ2V0KHVpbnQ2NF90LCBSZWY8V2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldD4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1
aW50NjRfdCwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldCh1aW50NjRfdCwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjdXN0b21QbGF5YmFj
a0FjdGlvblNlbGVjdGVkKHVpbnQ2NF90KSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBk
aWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKQEAgLTExMDcsMTkgKzExMDcsMTkgQEAgcHJpdmF0
ZToKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4g
Z2VuZXJhdGVkIFdlYlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2Rl
ciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6
Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsK
IAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4sIHVuc2lnbmVkIG1lc3NhZ2VT
ZW5kRmxhZ3MpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBvdmVycmlkZTsKKyAgICBib29sIHNlbmRNZXNzYWdlKHN0
ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiwgdW5zaWduZWQgbWVzc2FnZVNlbmRG
bGFncykgb3ZlcnJpZGU7CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIG92ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50Ci0gICAgdmly
dHVhbCB2b2lkIHZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGlu
dDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRl
eHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgp
IG92ZXJyaWRlOworICAgIHZvaWQgdmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVu
dVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5k
ZXgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIHZvaWQgZmFpbGVk
VG9TaG93UG9wdXBNZW51KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmYWlsZWRUb1Nob3dQb3B1cE1l
bnUoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBkaWRDcmVhdGVNYWluRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCk7CkBAIC0xMjQwLDggKzEyNDAsOCBAQCBwcml2YXRlOgogCiAjaWYgRU5B
QkxFKElOUFVUX1RZUEVfQ09MT1IpCiAgICAgdm9pZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2Vi
Q29yZTo6Q29sb3ImIGluaXRpYWxDb2xvciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRDb2xvclBpY2tlcigpIG92ZXJyaWRlOworICAg
IHZvaWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEVuZENvbG9yUGlja2VyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQg
ZWRpdG9yU3RhdGVDaGFuZ2VkKGNvbnN0IEVkaXRvclN0YXRlJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5LmgKaW5kZXggNDk0YWFjOWY4MDk2ODc0Y2Mw
NTVmYmE4NDM3ZGU1MjY2N2ZhMjMwZi4uZGZjNzExNWE3Y2JlYmYxYzk1ZTU3YzcwZmRkY2EyM2I3
ZDAzZDE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9h
cmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFdlYlBhc3RlYm9h
cmRQcm94eSgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9p
ZCB3cml0ZVdlYkNvbnRlbnRUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdl
YkNvbnRlbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggMzc2MWNjMzMwMDk0ODg1NjllMjQ2OWVjMzc3YmRlY2U4Y2U5NTc3YS4uMjQwNDY0N2E0NDI2
OTNjYTQxYzhjMDkzYzQ1MDNjNGVlYmE1ZTZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKQEAgLTM4Myw4ICszODMsOCBAQCBwcml2YXRlOgogCiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
YlByb2Nlc3NQb29sTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVu
Y29kZXI+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0
ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgc3Rh
dGljIHZvaWQgbGFuZ3VhZ2VDaGFuZ2VkKHZvaWQqIGNvbnRleHQpOwogICAgIHZvaWQgbGFuZ3Vh
Z2VDaGFuZ2VkKCk7CkBAIC00MTQsNyArNDE0LDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIC8vIFBsdWdpbkluZm9TdG9yZUNsaWVudDoKLSAgICB2
aXJ0dWFsIHZvaWQgcGx1Z2luSW5mb1N0b3JlRGlkTG9hZFBsdWdpbnMoUGx1Z2luSW5mb1N0b3Jl
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBwbHVnaW5JbmZvU3RvcmVEaWRMb2FkUGx1Z2lucyhQbHVn
aW5JbmZvU3RvcmUqKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgUmVmPEFQSTo6UHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uPiBtX2NvbmZpZ3VyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGZiMDczMTUxYWJjZjAzM2IxYTUyMDUwZWQ2
ZjI2NzhkOWY2M2QzYzAuLmZkNWJjNWZiZjkwMTA1YTViMDQwMTdkNGYzZjk3OGI5ZjQ5NzA5NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC04
MDYsNyArODA2LDcgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqIG9iamUKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFRyYW5zZm9ybU9iamVjdChjb25zdCBB
UEk6Ok9iamVjdCYgb2JqZWN0KSBjb25zdCBvdmVycmlkZQorICAgICAgICBib29sIHNob3VsZFRy
YW5zZm9ybU9iamVjdChjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KSBjb25zdCBvdmVycmlkZQog
ICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKG9iamVjdC50eXBlKCkpIHsKICAgICAgICAg
ICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lSGFuZGxlOgpAQCAtODI2LDcgKzgyNiw3
IEBAIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKEFQSTo6T2JqZWN0KiBvYmplCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0KEFQSTo6
T2JqZWN0JiBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gdHJhbnNmb3JtT2JqZWN0KEFQSTo6T2JqZWN0JiBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAob2JqZWN0LnR5cGUoKSkgewogICAgICAgICAg
ICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWVIYW5kbGU6CkBAIC04NTgsNyArODU4LDcg
QEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHMoQVBJOjpPYmplY3QqIG9iamUKIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vz
c1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgc3RydWN0IFRyYW5zZm9ybWVyIGZpbmFsIDogVXNlckRhdGE6OlRyYW5zZm9ybWVyIHsK
LSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFRyYW5zZm9ybU9iamVjdChjb25zdCBBUEk6Ok9i
amVjdCYgb2JqZWN0KSBjb25zdCBvdmVycmlkZQorICAgICAgICBib29sIHNob3VsZFRyYW5zZm9y
bU9iamVjdChjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICBzd2l0Y2ggKG9iamVjdC50eXBlKCkpIHsKICAgICAgICAgICAgIGNh
c2UgQVBJOjpPYmplY3Q6OlR5cGU6OkZyYW1lOgpAQCAtODc0LDcgKzg3NCw3IEBAIFJlZlB0cjxB
UEk6Ok9iamVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQ
STo6T2JqZWN0KiBvYmplCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIFJlZlB0cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0KEFQSTo6T2JqZWN0JiBvYmpl
Y3QpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3Jt
T2JqZWN0KEFQSTo6T2JqZWN0JiBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHN3aXRjaCAob2JqZWN0LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBUEk6
Ok9iamVjdDo6VHlwZTo6RnJhbWU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKaW5kZXggMGUwZDMzZGRlNzAzMmIzYWJhOWZjYWYwNjIwNDcyZjY3M2FhNDlhOC4u
MzA1Yzg5YTNmN2U0ZDZlNTMzN2U3M2EyN2E5MGE0ZDQ3MGJiZDRiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMTU3LDEwICsxNTcsMTAgQEAgcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKIAog
ICAgIC8vIEZyb20gQ2hpbGRQcm9jZXNzUHJveHkKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TGF1bmNo
T3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVy
OjpMYXVuY2hPcHRpb25zJik7Ci0gICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25XaWxsT3BlbihJ
UEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc1dpbGxT
aHV0RG93bihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbm5lY3Rpb25X
aWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2Nlc3NXaWxs
U2h1dERvd24oSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgd2hl
biB0aGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQgb3Igd2Uga25vdyB0aGF0IGl0IHdpbGwgdGVy
bWluYXRlIHNvb24uCiAgICAgLy8gV2lsbCBwb3RlbnRpYWxseSBjYXVzZSB0aGUgV2ViUHJvY2Vz
c1Byb3h5IG9iamVjdCB0byBiZSBmcmVlZC4KQEAgLTE5NCwxOCArMTk0LDE4IEBAIHByaXZhdGU6
CiAKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIGZyaWVuZCBjbGFzcyBXZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVjdGlvbiYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgSVBD
OjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQ
cm9jZXNzVHlwZTo6VUk7IH0KLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3RlUHJv
Y2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KKyAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVz
c2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rp
b24mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgSVBDOjpQcm9jZXNz
VHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlw
ZTo6VUk7IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9CiAKICAgICAvLyBSZXNwb25zaXZl
bmVzc1RpbWVyOjpDbGllbnQKICAgICB2b2lkIGRpZEJlY29tZVVucmVzcG9uc2l2ZSgpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQmVjb21lUmVzcG9uc2l2ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2hhbmdlSXNSZXNwb25zaXZlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZUlzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbENoYW5n
ZUlzUmVzcG9uc2l2ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlSXNSZXNwb25zaXZl
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CiAgICAgdm9pZCBz
ZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseSgpIG92ZXJyaWRlOwpAQCAtMjE1LDcgKzIx
NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25T
dGF0ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudAotICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExhdW5jaGlu
ZyhQcm9jZXNzTGF1bmNoZXIqLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpIG92ZXJyaWRl
OwogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlByb2Nlc3NQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzUHJveHlNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmgKaW5kZXggNzM4NTY2MGQ2N2QyNDRmOTIy
YWNmNmZiMWFlNGM0ZjliOTIwZjZhMi4uZTczNWMwNWE3ZGNiYmU5NDk1MDhkY2Y1NjY2YjFlYmQ3
NTJlMGI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5
LmgKQEAgLTUwLDcgKzUwLDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJWaWJyYXRpb25Q
cm94eShXZWJQYWdlUHJveHkqKTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
dmlicmF0ZSh1aW50MzJfdCB2aWJyYXRpb25UaW1lKTsKICAgICB2b2lkIGNhbmNlbFZpYnJhdGlv
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggYzU4MjdhZmY3ZWJiNWE2NmQxNzRkZjlkM2YwZTRmMTkz
MGFiNDY0YS4uZjcwMjRkNjYyM2QyYzM0MGI0ZDI4NjkxZGYzMjBlZWRkMzc2Mjg1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCkBAIC04NiwxMiArODYsMTIgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJz
aXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24pOwogCiAgICAgLy8gV2ViUHJvY2Vzc0xpZmV0aW1l
T2JzZXJ2ZXIuCi0gICAgdmlydHVhbCB2b2lkIHdlYlBhZ2VXYXNBZGRlZChXZWJQYWdlUHJveHkm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoV2ViUGFnZVBy
b3h5Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdlYlByb2Nlc3NXaWxsT3BlbkNvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHdlYlBhZ2VXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUGFnZVByb3h5JiwgSVBD
OjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdlYlBhZ2VEaWRDbG9z
ZUNvbm5lY3Rpb24oV2ViUGFnZVByb3h5JiwgSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1By
b3h5JiwgSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRk
ZWQoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChX
ZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKKyAgICB2b2lkIHdlYlByb2Nlc3NXaWxsT3BlbkNvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJpZGU7CisgICAg
dm9pZCB3ZWJQYWdlV2lsbE9wZW5Db25uZWN0aW9uKFdlYlBhZ2VQcm94eSYsIElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbihXZWJQ
YWdlUHJveHkmLCBJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKKyAgICB2b2lkIHdlYlByb2Nl
c3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZWN0aW9uJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxh
dGZvcm1EZXN0cm95KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCmluZGV4IGQzMzI4N2Y4
Mjg4ODQyOGIzYWFkZjIzNWU1MDYyMjI5MjQ0NjJjMWIuLmEyOWFjYzlkOGIwYTg0MjMxZTk4YzFk
NDkzNGYxOTMwNWNiMjFkMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oCkBAIC0zOCwx
MiArMzgsMTIgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwoRXdrVmlldyopOwogICAgIHZpcnR1YWwgflBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3cG9ydFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGFnZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZXdwb3J0UG9z
aXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
UGFnZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkQ2hhbmdlVmlzaWJsZUNvbnRlbnRzKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICBFd2tWaWV3KiBtX3ZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYkNvbG9yUGlja2VyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYkNvbG9yUGlja2VyRWZsLmgKaW5kZXggMGI5ZWU0ZGYzNGJmY2Y5ZWI2NGMwM2QyZTU5MGM5
NTU1NGMyZjE4YS4uOGU2NjUxMDI1MTU2NDhjNmNjOGQ5YTQxZWEwNThjMTc4YjM5NWRjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb2xvclBpY2tlckVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViQ29sb3JQaWNrZXJFZmwuaApA
QCAtNDEsOSArNDEsOSBAQCBwdWJsaWM6CiAgICAgfQogICAgIH5XZWJDb2xvclBpY2tlckVmbCgp
IHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGVuZFBpY2tlcigpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRTZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNob3dDb2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYp
IG92ZXJyaWRlOworICAgIHZvaWQgZW5kUGlja2VyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRT
ZWxlY3RlZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
aG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZGlkQ2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaAppbmRl
eCAyMTE2ZjUzZmExNWJjZjNiNTRmOGZjYjRhNWJhYTEyMDljMGE5MjY0Li45MjgwNmRiYmZkM2U2
MmZlMWI0Y2ZhMzMzNTE0MDAyMjRhZjgwNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRNZW51UHJveHlFZmwuaApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgfldlYkNvbnRleHRNZW51UHJveHlFZmwoKTsKIAogcHJpdmF0ZToKLSAg
ICB2aXJ0dWFsIHZvaWQgc2hvdygpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvdygpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzaG93Q29udGV4dE1lbnUoKTsKICAgICB2b2lkIGhpZGVDb250ZXh0TWVu
dSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCBhNzc2Y2ZiYjZi
OGVlYjQ0NGZjMTM2MWE0YjM2YWU1M2Y3YjFiYjBhLi44ODc3MWNlNDE4ODBlZWRjOGJkODYzYzM4
YTA1MDM5NmM0MjU1YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApA
QCAtMTUyLDExNyArMTUyLDExNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBk
aXBTaXplKCkgY29uc3Q7CiAKICAgICAvLyBQYWdlQ2xpZW50Ci0gICAgdmlydHVhbCBzdGQ6OnVu
aXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpIG92ZXJy
aWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5n
QXJlYVByb3h5KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWV3
TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaXNwbGF5VmlldygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGxheVZpZXco
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5TY3JvbGxWaWV3KCkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2Nyb2xs
VmlldygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzY3JvbGxWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CisgICAgdm9pZCByZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYsIGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2
aWV3U2l6ZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzVmlld1dpbmRvd0FjdGl2
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKKyAgICBib29sIGlzVmlld1dpbmRvd0Fj
dGl2ZSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIG92ZXJyaWRlOworICAg
IGJvb2wgaXNWaWV3VmlzaWJsZSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNWaWV3SW5XaW5kb3co
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcHJvY2Vzc0RpZEV4
aXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHByZWZl
cmVuY2VzRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5n
ZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgdG9vbFRpcENoYW5nZWQo
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29s
IHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDb21taXRM
b2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKSBvdmVycmlkZTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19N
VUxUSVBST0NFU1MpCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbmRl
ckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluZFpvb21h
YmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94
eSopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNv
bnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJz
b3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNv
bnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5
PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuVW5k
b1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7Cisg
ICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94
eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhckFs
bEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuVW5kb1JlZG8oV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpG
bG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNw
YWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQmLCBib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGRvbmVXaXRoS2V5RXZl
bnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wpIG92ZXJyaWRlOwogI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCi0gICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChj
b25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRl
OworICAgIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQm
LCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJv
eHkmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVw
TWVudVByb3h5KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShDT05URVhUX01F
TlVTKQotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFdlYkNvbnRleHRNZW51UHJveHk+IGNy
ZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5JiwgY29uc3QgQ29udGV4dE1lbnVDb250
ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJpZGU7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvbnRleHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5
JiwgY29uc3QgQ29udGV4dE1lbnVDb250ZXh0RGF0YSYsIGNvbnN0IFVzZXJEYXRhJikgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQotICAgIHZpcnR1YWwg
UmVmUHRyPFdlYkNvbG9yUGlja2VyPiBjcmVhdGVDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqLCBj
b25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsK
KyAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYp
IG92ZXJyaWRlOworICAgIHZvaWQgd2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
KSBvdmVycmlkZSB7IH0KIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5Q2xpZW50JiBmdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0
YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZSBmaW5hbCB7IH0KKyAgICB2b2lk
IGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRl
IGZpbmFsIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4o
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5k
KGJvb2wsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCwgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVu
ZCgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNu
YXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpIG92ZXJyaWRlIHsgfQorICAgIHZv
aWQgbmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKGJvb2wsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJvb2wsIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIG5hdmlnYXRpb25H
ZXN0dXJlRGlkRW5kKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlv
blNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZSB7IH0KKyAgICB2b2lk
IGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSBvdmVycmlkZSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUo
KSBvdmVycmlkZSBmaW5hbCB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvck1h
aW5GcmFtZSgpIG92ZXJyaWRlIGZpbmFsIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9h
ZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKSBv
dmVycmlkZSBmaW5hbCB7IH0KKyAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvck1haW5GcmFtZSgpIG92ZXJyaWRlIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRmluaXNoTG9h
ZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkRmFpbExvYWRG
b3JNYWluRnJhbWUoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JNYWluRnJhbWUoU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlIGZp
bmFsIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUJhY2tncm91bmRDb2xvcigpIG92
ZXJyaWRlIHsgfQorICAgIHZvaWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGUg
eyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlIGZpbmFsIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkZXJlZlZpZXcoKSBvdmVycmlkZSBmaW5hbCB7IH0KKyAgICB2b2lkIHJl
ZlZpZXcoKSBvdmVycmlkZSBmaW5hbCB7IH0KKyAgICB2b2lkIGRlcmVmVmlldygpIG92ZXJyaWRl
IGZpbmFsIHsgfQogCiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQotICAgIHZp
cnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1p
c3Npb25SZXF1ZXN0KEluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3Qm
KSBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBmYWxzZTsgfTsKKyAgICBib29sIGRlY2lkZVBvbGlj
eUZvckluc3RhbGxNaXNzaW5nTWVkaWFQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoSW5zdGFsbE1p
c3NpbmdNZWRpYVBsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCYpIG92ZXJyaWRlIGZpbmFsIHsgcmV0
dXJuIGZhbHNlOyB9OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZVNjcm9s
bFBvc2l0aW9uKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKSBvdmVycmlkZSB7IH0KIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAvLyBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGNsb3NlRnVs
bFNjcmVlbk1hbmFnZXIoKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGdWxsU2Ny
ZWVuKCkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbigp
IG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbFNjcmVlbigpIG92ZXJy
aWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBiZWdhbkVudGVyRnVsbFNjcmVlbihjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBjbG9z
ZUZ1bGxTY3JlZW5NYW5hZ2VyKCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBpc0Z1bGxTY3JlZW4o
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGVudGVyRnVsbFNjcmVlbigpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGJlZ2FuRW50ZXJGdWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBiZWdhbkV4aXRGdWxsU2NyZWVu
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJp
ZGUgeyB9CiAjZW5kaWYKIAogICAgIEV3a1ZpZXcqIG1fZXdrVmlldzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViQ29sb3JQaWNrZXJHdGsuaAppbmRleCAwNWE4NGRlNGIw
MjE4MzhjZDVhOTY1ZDBhYmJiZjhlZjE0ZWViN2NlLi4wYmI5NmE1ZGQxZGIwYmE0ZWU0ODEyNmFi
ZjY0OGFlZDk0NDkwMjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYkNvbG9yUGlja2VyR3RrLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJDb2xvclBpY2tlckd0ay5oCkBAIC00NSw4ICs0NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFdlYkNvbG9yUGlja2VyR3RrPiBjcmVhdGUoV2ViUGFnZVByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6Q29sb3ImLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB+V2ViQ29s
b3JQaWNrZXJHdGsoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dD
b2xvclBpY2tlcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBj
YW5jZWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJD
b250ZXh0TWVudVByb3h5R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNv
bnRleHRNZW51UHJveHlHdGsuaAppbmRleCA5Yzg4OTNlNmE0ZDNlNmIwZDUzNjc1NzhmNzdjZjMx
YmFhMzNhNzQyLi5mYmUzNGJhNjczZjg1MGU4YmM0MDdlODQ5NGQ5YWM1Yzc3ZmExZjJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJveHlH
dGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYkNvbnRleHRNZW51UHJv
eHlHdGsuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgR3RrTWVudSogZ3RrTWVudSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVudTsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBz
aG93KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBl
bmQoR3RrTWVudSosIGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbUd0ayYpOwogICAgIHZvaWQgcG9w
dWxhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb250ZXh0TWVudUl0ZW0+PiYpOwogICAgIHN0
YXRpYyB2b2lkIG1lbnVQb3NpdGlvbkZ1bmN0aW9uKEd0a01lbnUqLCBnaW50KiwgZ2ludCosIGdi
b29sZWFuKiwgV2ViQ29udGV4dE1lbnVQcm94eUd0ayopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2d0ay9XZWJQb3B1cE1lbnVQcm94eUd0ay5oCmluZGV4IDljNjM5ZmVmOGI4
MDQ1NDE3MWMwOGE3ZmQ0MGNjMjhhOTc4MjBhOTkuLmM5Y2ViNjk4ODFjYTkwODQxOTFlZGU5OTFi
ODlkYzgzNDE3YjU2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUG9wdXBNZW51UHJveHlHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlBvcHVwTWVudVByb3h5R3RrLmgKQEAgLTQ0LDkgKzQ0LDkgQEAgcHVibGljOgogICAgIH0K
ICAgICB+V2ViUG9wdXBNZW51UHJveHlHdGsoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzaG93UG9w
dXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBk
b3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0
IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2FuY2VsVHJhY2tpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dQb3B1cE1lbnUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSBw
YWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KSBvdmVycmlkZTsKKyAgICB2
b2lkIGhpZGVQb3B1cE1lbnUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFRyYWNraW5nKCkg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViUG9wdXBNZW51UHJveHlHdGsoR3RrV2lkZ2V0
KiwgV2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCmluZGV4IDJiYTBmNWRmMTY1OTE0MmM2ZmQ5
MWU1ZjcyNTNmYzAzNmUxYzE1ZTIuLmMwNDk3NzMyZDgxZDk3ZjIzZThjYmY3ZTMxOWJhYTk2MTE0
NGM5MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgKQEAgLTQ5LDExMSArNDksMTExIEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAg
ICAgLy8gUGFnZUNsaWVudAotICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVh
UHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGNhblNjcm9sbFZpZXcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmll
dyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgc2Nyb2xsT3JpZ2luLCBib29sIGlzUHJvZ3JhbW1hdGljU2Nyb2xsKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wg
aXNWaWV3VmlzaWJsZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRv
dygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlT3JPY2NsdWRlZCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Zpc3VhbGx5SWRsZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZUNsb3NlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5n
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJGcmFtZVByb3h5JiwgQVBJOjpT
ZWN1cml0eU9yaWdpbiYsIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNv
ckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBh
c3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVk
bykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJv
eHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5
V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0
IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1h
Z2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBQYXNzUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlLCBib29sIGlzTGlua0RyYWcpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRS
ZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJl
Y3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29u
c3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0Fy
ZWFQcm94eSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwbGF5VmlldygpIG92ZXJy
aWRlOworICAgIGJvb2wgY2FuU2Nyb2xsVmlldygpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xs
Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFNjcm9sbChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgYm9vbCBpc1Byb2dyYW1tYXRpY1Njcm9sbCkgb3ZlcnJp
ZGU7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNWaWV3V2luZG93QWN0aXZlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1ZpZXdJbldpbmRvdygpIG92ZXJyaWRlOworICAgIGJvb2wgaXNWaWV3VmlzaWJsZU9yT2NjbHVk
ZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGlzVmlzdWFsbHlJZGxlKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9j
ZXNzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQ2xvc2VkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9vbFRpcENoYW5n
ZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgYm9vbCBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYkZyYW1lUHJveHkmLCBB
UEk6OlNlY3VyaXR5T3JpZ2luJiwgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVudFByb3ZpZGVyKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21t
YW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09y
UmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRl
OworICAgIGJvb2wgY2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92
ZXJyaWRlOworICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRlOworICAgIGJvb2wgZXhlY3V0ZVNhdmVk
Q29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvcikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9u
LCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlLCBib29sIGlzTGlua0RyYWcp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBub3Rp
ZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5U
b1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmll
dyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFJl
Y3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
IG92ZXJyaWRlOworICAgIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCi0gICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBO
YXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOworICAg
IHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29s
IHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3Zl
cnJpZGU7CisgICAgUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250
ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0IENvbnRleHRNZW51Q29udGV4dERhdGEm
LCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb250
ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IENvbnRleHRNZW51Q29udGV4dERhdGEmLCBjb25zdCBVc2VyRGF0YSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCi0gICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJ
bmRpY2F0b3I+LCBXZWJDb3JlOjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGlj
YXRvcldpbmRvd0Rpc21pc3NhbEFuaW1hdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXll
clRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290
TGF5ZXIoTGF5ZXJPclZpZXcgKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBMYXllck9yVmlldyAq
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgTGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsgfQotCi0gICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRp
dmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0UG90
ZW50aWFsVGFwRmFpbGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEdldFRhcEhp
Z2hsaWdodEdlb21ldHJpZXModWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFF1YWQ+JiBoaWdobGlnaHRlZFF1YWRzLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiB0b3BMZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB0b3BSaWdodFJhZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tTGVmdFJh
ZGl1cywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYm90dG9tUmlnaHRSYWRpdXMpIG92ZXJyaWRl
OwotCi0gICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBSZW1vdGVMYXll
clRyZWVUcmFuc2FjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkeW5hbWljVmll
d3BvcnRVcGRhdGVDaGFuZ2VkVGFyZ2V0KGRvdWJsZSBuZXdTY2FsZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIHVpbnQ2NF90IHRyYW5zYWN0aW9uSUQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3VsZE5vdFJlc3RvcmVQYWdlU3RhdGUoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmLCBkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlUGFn
ZUNlbnRlckFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBkb3VibGUpIG92ZXJy
aWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0QXNzaXN0aW5nTm9kZShjb25zdCBBc3Npc3Rl
ZE5vZGVJbmZvcm1hdGlvbiYsIGJvb2wgdXNlcklzSW50ZXJhY3RpbmcsIGJvb2wgYmx1clByZXZp
b3VzTm9kZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc3RvcEFzc2lzdGluZ05vZGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBc3Np
c3RpbmdOb2RlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkRpZENoYW5n
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBO
YXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHBvc2l0aW9uSW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rp
b25JbmZvcm1hdGlvbkF0UG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2F2
ZUltYWdlVG9MaWJyYXJ5KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVp
bnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQg
c2hyaW5rVGhyZXNob2xkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1l
bnRSZWN0KSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVSdW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqLCBX
ZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KHVpbnQ2NF90
IHJlcXVlc3RJRCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBkb3VibGUgbWluaW11bVpvb21TY2Fs
ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGRvY3Vt
ZW50UmVjdCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0
b3JIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGhpZGVJbnNwZWN0b3JIaWdobGlnaHQoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1
YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2
b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwg
dm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwg
ZG91YmxlIG1heGltdW1TY2FsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG92ZXJmbG93
U2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgb3ZlcmZsb3dTY3JvbGxWaWV3RGlkU2Nyb2xsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIG92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0U2Nyb2xsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIG92ZXJmbG93U2Nyb2xsRGlkRW5kU2Nyb2xsKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKFJlZjxXZWJDb3JlOjpU
ZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJDb3JlOjpUZXh0SW5kaWNhdG9y
V2luZG93RGlzbWlzc2FsQW5pbWF0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRleHRJbmRp
Y2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGVudGVy
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJy
aWRlOworICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRy
ZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z1Jvb3RMYXllcihMYXllck9yVmlldyAqKSBvdmVycmlkZTsKKyAgICBMYXllck9yVmlldyAqYWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0IG92ZXJyaWRlOworICAgIExheWVy
SG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSBvdmVycmlkZSB7IHJldHVybiBMYXll
ckhvc3RpbmdNb2RlOjpPdXRPZlByb2Nlc3M7IH0KKworICAgIFBhc3NSZWZQdHI8Vmlld1NuYXBz
aG90PiB0YWtlVmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aGVlbEV2ZW50V2Fz
Tm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkR2V0VGFwSGlnaGxpZ2h0R2VvbWV0cmllcyh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UXVhZD4mIGhpZ2hs
aWdodGVkUXVhZHMsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHRvcExlZnRSYWRpdXMsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHRvcFJpZ2h0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBib3R0b21MZWZ0UmFkaXVzLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBib3R0b21SaWdodFJh
ZGl1cykgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZENvbW1pdExheWVyVHJlZShjb25zdCBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZHluYW1pY1ZpZXdw
b3J0VXBkYXRlQ2hhbmdlZFRhcmdldChkb3VibGUgbmV3U2NhbGUsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCB1aW50NjRfdCB0cmFuc2FjdGlvbklEKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvdWxkTm90UmVzdG9yZVBhZ2VTdGF0ZSgpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVzdG9yZVBhZ2VTdGF0ZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBkb3VibGUp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVzdG9yZVBhZ2VDZW50ZXJBbmRTY2FsZShjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgZG91YmxlKSBvdmVycmlkZTsKKworICAgIHZvaWQgc3RhcnRBc3Np
c3RpbmdOb2RlKGNvbnN0IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uJiwgYm9vbCB1c2VySXNJbnRl
cmFjdGluZywgYm9vbCBibHVyUHJldmlvdXNOb2RlLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RvcEFzc2lzdGluZ05vZGUoKSBvdmVycmlkZTsKKyAgICBib29s
IGlzQXNzaXN0aW5nTm9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpbnRlcnByZXRLZXlFdmVudChjb25zdCBOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50JiwgYm9vbCBpc0NoYXJFdmVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZUJs
b2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxv
YXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhyZXNob2xkKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBlbGVtZW50UmVjdCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGhhbmRsZVJ1bk9w
ZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFyYW1l
dGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpc2FibGVEb3VibGVUYXBHZXN0dXJlc0R1cmluZ1RhcElmTmVjZXNzYXJ5KHVpbnQ2NF90
IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CisgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25z
dCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZG9jdW1lbnRSZWN0KCkgY29uc3Qg
b3ZlcnJpZGU7CisKKyAgICB2b2lkIHNob3dJbnNwZWN0b3JIaWdobGlnaHQoY29uc3QgV2ViQ29y
ZTo6SGlnaGxpZ2h0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBoaWRlSW5zcGVjdG9ySGlnaGxpZ2h0
KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOworCisgICAg
dm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNh
YmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpIG92ZXJyaWRlOworCisgICAgdm9pZCB6b29tVG9SZWN0
KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdW1T
Y2FsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5H
ZXN0dXJlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdEaWRTY3JvbGwo
KSBvdmVycmlkZTsKKyAgICB2b2lkIG92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0U2Nyb2xsKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBvdmVyZmxvd1Njcm9sbERpZEVuZFNjcm9sbCgpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKSBvdmVycmlkZTsKIAogICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24KICNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0xNjIsMzcgKzE2MiwzNyBAQCBwcml2YXRlOgog
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIC8vIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHlDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0Z1bGxTY3JlZW4oKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsU2NyZWVuKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJlZ2FuRW50ZXJG
dWxsU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGluaXRpYWxGcmFtZSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZmluYWxGcmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGJl
Z2FuRXhpdEZ1bGxTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5hbEZyYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGNs
b3NlRnVsbFNjcmVlbk1hbmFnZXIoKSBvdmVycmlkZTsKKyAgICBib29sIGlzRnVsbFNjcmVlbigp
IG92ZXJyaWRlOworICAgIHZvaWQgZW50ZXJGdWxsU2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBleGl0RnVsbFNjcmVlbigpIG92ZXJyaWRlOworICAgIHZvaWQgYmVnYW5FbnRlckZ1bGxTY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmaW5hbEZyYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGJlZ2FuRXhpdEZ1bGxTY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmaW5hbEZyYW1lKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIo
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IG1pbWVUeXBlc1dpdGhD
dXN0b21Db250ZW50UHJvdmlkZXJzKCkgb3ZlcnJpZGU7CisgICAgVmVjdG9yPFN0cmluZz4gbWlt
ZVR5cGVzV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcnMoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIG5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9u
R2VzdHVyZURpZEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVt
b3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdh
dGlvbkdlc3R1cmVEaWRCZWdpbigpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1
cmVXaWxsRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZChib29sIHdpbGxOYXZpZ2F0
ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdhdGlv
bkdlc3R1cmVEaWRFbmQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxSZWNvcmROYXZpZ2F0aW9u
U25hcHNob3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUo
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBk
aWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZEZhaWxMb2FkRm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKFNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENoYW5nZUJhY2tncm91
bmRDb2xvcigpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZlZpZXcoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZWaWV3KCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWZW
aWV3KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXJlZlZpZXcoKSBvdmVycmlkZTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIG92ZXJyaWRlOwogCiAgICAgV0tDb250ZW50Vmll
dyAqbV9jb250ZW50VmlldzsKICAgICBXS1dlYlZpZXcgKm1fd2ViVmlldzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLmgKaW5kZXggZmM0OGNhZDlmNmI2OTJjNTA2MTE4NTc4ZjMxNjY4OGUzODA0NDAyZS4u
MTEzY2RmYmYyOWM5NDkzYmNlOTg1ZDYyYWQ2MDIzNzc1M2NiNjc0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9TbWFydE1hZ25pZmljYXRpb25Db250
cm9sbGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0
UmVjdCByZW5kZXJSZWN0LCBXZWJDb3JlOjpGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRCb3VuZHMs
IGJvb2wgaXNSZXBsYWNlZEVsZW1lbnQsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2FsZSwgZG91
YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKTsKICAgICB2b2lkIG1hZ25pZnkoV2ViQ29yZTo6Rmxv
YXRQb2ludCBvcmlnaW4sIFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpG
bG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2NhbGUs
IGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggY2JkMDMxMTE1NzUwZDg3NjBjOTJhNjdjYmNi
YzIyM2I1M2RiNDQzYi4uZmI4YzdhNTRmZDU4NWYwNzA5MDRhMmM2NmJjMmU2NGQwZWI2NTllMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaApAQCAt
NjEsNjAgKzYxLDYwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBQYWdlQ2xpZW50Ci0g
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2lu
Z0FyZWFQcm94eSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNw
bGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGxheVZpZXcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuU2Nyb2xsVmlldygp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBzY3Jv
bGxPcmlnaW4sIGJvb2wgaXNQcm9ncmFtbWF0aWNTY3JvbGwpIG92ZXJyaWRlOwotCi0gICAgdmly
dHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1Zp
ZXdGb2N1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZU9yT2NjbHVkZWQoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIExheWVy
SG9zdGluZ01vZGUgdmlld0xheWVySG9zdGluZ01vZGUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIExheWVyT3JWaWV3ICphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExh
eWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZEV4aXQo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25zdCBTdHJpbmcmIG5l
d1Rvb2xUaXApIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9tQ29udGVudFByb3Zp
ZGVyKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMo
Ym9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKLQotICAg
IHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1h
bmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25z
dCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhZ0lt
YWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgUGFzc1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwgYm9vbCBpc0xpbmtEcmFnKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3Jl
YXRlRHJhd2luZ0FyZWFQcm94eSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlld05lZWRzRGlz
cGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwbGF5
VmlldygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuU2Nyb2xsVmlldygpIG92ZXJyaWRlOworICAg
IHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVx
dWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbE9yaWdpbiwgYm9vbCBpc1Byb2dyYW1tYXRpY1Nj
cm9sbCkgb3ZlcnJpZGU7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBvdmVycmlkZTsKKyAgICBib29sIGlz
Vmlld0ZvY3VzZWQoKSBvdmVycmlkZTsKKyAgICBib29sIGlzVmlld1Zpc2libGUoKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzVmlld1Zpc2libGVPck9jY2x1ZGVkKCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBpc1ZpZXdJbldpbmRvdygpIG92ZXJyaWRlOworICAgIGJvb2wgaXNWaXN1YWxseUlkbGUoKSBv
dmVycmlkZTsKKyAgICBMYXllckhvc3RpbmdNb2RlIHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3Zl
cnJpZGU7CisgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSBvdmVy
cmlkZTsKKyAgICBMYXllck9yVmlldyAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9j
ZXNzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiBvbGRUb29sVGlwLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2xUaXApIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ29tbWl0TG9hZEZv
ck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVzZUN1c3RvbUNvbnRlbnRQ
cm92aWRlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZURvd25sb2FkUmVx
dWVzdChEb3dubG9hZFByb3h5Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJzb3JI
aWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VW
aWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0
Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5VbmRvUmVk
byhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOworICAgIHZvaWQgZXhlY3V0ZVVu
ZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgYm9vbCBleGVj
dXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50
UG9zaXRpb24sIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UsIGJvb2wgaXNM
aW5rRHJhZykgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAogICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4gYXJjaGl2ZUJ1ZmZlcikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmlzaWJsZVVybCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERh
dGFGb3JBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxl
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsKSBvdmVycmlkZTsK
ICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0
aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92
ZXJyaWRlOwotCi0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNl
U3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBX
ZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgbm90
aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOworICAg
IHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3Zl
cnJpZGU7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3Jl
ZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV2Vi
Q29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBv
dmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0
IHJvb3RWaWV3VG9XaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAg
IFdlYkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0
Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpID0gMDsKQEAgLTEyMyw1OSArMTIzLDU5IEBAIHByaXZhdGU6CiAKICAgICBD
R1JlY3QgYm91bmRzT2ZMYXllckluTGF5ZXJCYWNrZWRXaW5kb3dDb29yZGluYXRlcyhDQUxheWVy
ICpsYXllcikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlF
dmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQp
IG92ZXJyaWRlOworICAgIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSYpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9w
dXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29udGV4dE1lbnVQcm94eT4g
Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkmLCBjb25zdCBDb250ZXh0TWVudUNv
bnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKSBvdmVycmlkZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJv
eHkmLCBjb25zdCBDb250ZXh0TWVudUNvbnRleHREYXRhJiwgY29uc3QgVXNlckRhdGEmKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCi0gICAgdmlydHVh
bCBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29sb3JQaWNrZXI+IGNyZWF0ZUNvbG9yUGlj
a2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbml0aWFsQ29sb3IsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2
b2lkIHNldFRleHRJbmRpY2F0b3IoUmVmPFdlYkNvcmU6OlRleHRJbmRpY2F0b3I+LCBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yV2luZG93TGlmZXRpbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBjbGVhclRleHRJbmRpY2F0b3IoV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0Rpc21pc3Nh
bEFuaW1hdGlvbikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRleHRJbmRpY2F0b3JB
bmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUZXh0SW5kaWNh
dG9yKFJlZjxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yPiwgV2ViQ29yZTo6VGV4dEluZGljYXRvcldp
bmRvd0xpZmV0aW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyVGV4dEluZGljYXRvcihXZWJD
b3JlOjpUZXh0SW5kaWNhdG9yV2luZG93RGlzbWlzc2FsQW5pbWF0aW9uKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4aXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4aXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAg
IHZvaWQgd2lsbEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRsZWRCeVdlYkNv
cmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8
Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aGVl
bEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikg
b3ZlcnJpZGU7CiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2aXJ0dWFsIHZv
aWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJHZXN0
dXJlRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRsZWRC
eVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYK
IAotICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBhY2Nlc3NpYmls
aXR5V2ViUHJvY2Vzc1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3Zl
cnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdl
ZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5I
YXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
UGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJZGVudGlmaWVyLCBQbHVnaW5Db21wbGV4VGV4dElucHV0U3RhdGUpIG92ZXJyaWRlOworICAg
IHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21w
bGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0Zv
Y3VzKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSh1
aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgUGx1Z2luQ29tcGxleFRl
eHRJbnB1dFN0YXRlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNw
b25kZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRl
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25z
dCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc21pc3NDb250ZW50UmVsYXRpdmVDaGlsZFdpbmRvd3MoYm9vbCB3aXRoQW5pbWF0aW9u
ID0gdHJ1ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChj
b25zdCBXZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvJikgb3ZlcnJpZGU7CisgICAgdm9pZCBk
aXNtaXNzQ29udGVudFJlbGF0aXZlQ2hpbGRXaW5kb3dzKGJvb2wgd2l0aEFuaW1hdGlvbiA9IHRy
dWUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9uUGFuZWwoV2Vi
Q29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3Vu
ZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRl
cm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRp
c21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0
aXZlVGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgZGlzbWlzc0NvcnJlY3Rpb25Q
YW5lbFNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoV2Vi
Q29yZTo6QXV0b2NvcnJlY3Rpb25SZXNwb25zZVR5cGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcpIG92ZXJyaWRlOworICAgIHZv
aWQgc2hvd0NvcnJlY3Rpb25QYW5lbChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRUeXBlLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZSZXBsYWNlZFN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGFsdGVybmF0aXZlUmVwbGFjZW1lbnRTdHJpbmdzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpc21pc3NDb3JyZWN0aW9uUGFuZWwoV2ViQ29yZTo6UmVhc29uRm9y
RGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGRpc21pc3ND
b3JyZWN0aW9uUGFuZWxTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2
ZVRleHQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShX
ZWJDb3JlOjpBdXRvY29ycmVjdGlvblJlc3BvbnNlVHlwZSwgY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFN0cmluZykgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShXZWJDb3Jl
OjpTY3JvbGxiYXJTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNvbW1lbmRlZFNjcm9sbGJh
clN0eWxlRGlkQ2hhbmdlKFdlYkNvcmU6OlNjcm9sbGJhclN0eWxlKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBpbnRyaW5zaWNDb250ZW50U2l6ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnRy
aW5zaWNDb250ZW50U2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBpbnRyaW5z
aWNDb250ZW50U2l6ZSkgb3ZlcnJpZGU7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZF
UykKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IGFkZERpY3RhdGlvbkFsdGVybmF0aXZlcyhjb25zdCBS
ZXRhaW5QdHI8TlNUZXh0QWx0ZXJuYXRpdmVzPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNob3dEaWN0YXRpb25BbHRlcm5hdGl2ZVVJKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgYm91bmRpbmdCb3hPZkRpY3RhdGVkVGV4dCwgdWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJp
ZGU7CisgICAgdWludDY0X3QgYWRkRGljdGF0aW9uQWx0ZXJuYXRpdmVzKGNvbnN0IFJldGFpblB0
cjxOU1RleHRBbHRlcm5hdGl2ZXM+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVEaWN0YXRp
b25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92
ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGRpY3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRf
dCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFVTRShJTlNFUlRJT05f
VU5ET19HUk9VUElORykKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJJbnNlcnRpb25VbmRvR3Jv
dXBpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVySW5zZXJ0aW9uVW5kb0dyb3VwaW5n
KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIC8vIEF1eGlsaWFyeSBDbGllbnQgQ3JlYXRpb24K
QEAgLTE4NSw0NyArMTg1LDQ3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9B
UEkpCiAgICAgLy8gV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudAotICAgIHZpcnR1YWwg
dm9pZCBjbG9zZUZ1bGxTY3JlZW5NYW5hZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzRnVsbFNjcmVlbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxTY3Jl
ZW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW4oKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FbnRlckZ1bGxTY3JlZW4oY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgaW5pdGlhbEZyYW1lLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmaW5hbEZyYW1l
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZp
bmFsRnJhbWUpIG92ZXJyaWRlOworICAgIHZvaWQgY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNGdWxsU2NyZWVuKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnRl
ckZ1bGxTY3JlZW4oKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4aXRGdWxsU2NyZWVuKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBiZWdhbkVudGVyRnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJy
aWRlOworICAgIHZvaWQgYmVnYW5FeGl0RnVsbFNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBpbml0aWFsRnJhbWUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpbmFsRnJhbWUpIG92ZXJy
aWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdp
bigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQo
Ym9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCB3aWxsTmF2aWdhdGUs
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGlvbkdlc3R1cmVEaWRFbmQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFJl
Y29yZE5hdmlnYXRpb25TbmFwc2hvdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSBv
dmVycmlkZTsKKyAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKSBvdmVycmlkZTsK
KyAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1
cmVEaWRFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVy
cmlkZTsKKyAgICB2b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3Qo
KSBvdmVycmlkZTsKIAogICAgIE5TVmlldyAqYWN0aXZlVmlldygpIGNvbnN0OwogICAgIE5TV2lu
ZG93ICphY3RpdmVXaW5kb3coKSBjb25zdDsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsTG9hZEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKFNhbWVEb2N1bWVudE5hdmln
YXRpb25UeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0Rm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGaW5pc2hMb2Fk
Rm9yTWFpbkZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRGYWlsTG9hZEZvck1haW5GcmFt
ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1haW5G
cmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1v
dmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3Vs
dERhdGEmLCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkKiBpbW1lZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVy
Rm9ySGl0VGVzdFJlc3VsdChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiwgdWludDY0X3QsIFJl
ZlB0cjxBUEk6Ok9iamVjdD4pIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUGVyZm9ybUltbWVkaWF0
ZUFjdGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmLCBib29sIGNvbnRlbnRQ
cmV2ZW50c0RlZmF1bHQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCogaW1tZWRp
YXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxlckZvckhpdFRlc3RSZXN1bHQoUmVmUHRyPEFQSTo6
SGl0VGVzdFJlc3VsdD4sIHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpPYmplY3Q+KSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgaXNQbGF5aW5nTWVkaWFEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzaG93UGxhdGZvcm1Db250ZXh0TWVudShOU01lbnUgKiwgV2ViQ29yZTo6SW50UG9pbnQp
IG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1BsYXRmb3JtQ29udGV4dE1lbnUoTlNNZW51ICosIFdl
YkNvcmU6OkludFBvaW50KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VC
YWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENoYW5nZUJhY2tncm91bmRD
b2xvcigpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHN0YXJ0V2luZG93RHJhZygpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgTlNXaW5kb3cgKnBsYXRmb3JtV2luZG93KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdGFydFdpbmRvd0RyYWcoKSBvdmVycmlkZTsKKyAgICBOU1dpbmRvdyAqcGxh
dGZvcm1XaW5kb3coKSBvdmVycmlkZTsKIAogI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgdmlydHVh
bCBOU1ZpZXcgKmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0UmVnaXN0cnkoKSBvdmVycmlk
ZTsKKyAgICBOU1ZpZXcgKmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCkgb3ZlcnJpZGU7CisgICAg
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdFJlZ2lzdHJ5KCkgb3ZlcnJpZGU7
CiAjZW5kaWYKIAogICAgIE5TVmlldyAqbV92aWV3OwpAQCAtMjM5LDE0ICsyMzksMTQgQEAgcHJp
dmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OldlYk1lZGlhU2Vzc2lvbk1hbmFnZXImIG1lZGlhU2Vzc2lvbk1h
bmFnZXIoKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpXZWJNZWRpYVNlc3Npb25NYW5hZ2VyJiBt
ZWRpYVNlc3Npb25NYW5hZ2VyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9p
ZCByZWZWaWV3KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlcmVmVmlldygpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVyZWZWaWV3KCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHdpbmRvd0lzRnJvbnRXaW5kb3dVbmRlck1vdXNl
KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgd2luZG93SXNGcm9udFdpbmRv
d1VuZGVyTW91c2UoY29uc3QgTmF0aXZlV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGVl
MTNjYzEwNzNjYjRlOTVhYjU0ZGFlMGE0ZmU0NjQxMjIyZjUzZGEuLmM1YWM1ODQxY2Q4ODViODQ4
YmY3ZWFjYzkwZmNlMmUxMmIyMWE0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oCkBA
IC01NSwzNSArNTUsMzUgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVmcmVzaERpc3BsYXkoZG91
YmxlIHRpbWVzdGFtcCk7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHNpemVEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFu
Z2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlR2VvbWV0cnkoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRldmlj
ZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRVcGRhdGVHZW9t
ZXRyeSgpIG92ZXJyaWRlOwogICAgIAogICAgIC8vIEZvciBub3csIGFsbCBjYWxsYmFja3MgYXJl
IGNhbGxlZCBiZWZvcmUgY29tbWl0dGluZyBjaGFuZ2VzLCBiZWNhdXNlIHRoYXQncyB3aGF0IHRo
ZSBvbmx5IGNsaWVudCByZXF1aXJlcy4KICAgICAvLyBPbmNlIHdlIGhhdmUgb3RoZXIgY2FsbGJh
Y2tzLCBpdCBtYXkgbWFrZSBzZW5zZSB0byBoYXZlIGEgYmVmb3JlLWNvbW1pdC9hZnRlci1jb21t
aXQgb3B0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5n
KHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmluZ0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJyaWRlOwogCiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0
IHNjYWxlZEV4cG9zZWRSZWN0KCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgdmly
dHVhbCB2b2lkIHNldEV4cG9zZWRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0RXhwb3NlZFJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIGZsb2F0IGluZGljYXRvclNjYWxlKFdlYkNvcmU6Oklu
dFNpemUgY29udGVudHNTaXplKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGVidWdJ
bmRpY2F0b3IoKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZURlYnVnSW5kaWNhdG9yKCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCB1cGRhdGVEZWJ1Z0luZGljYXRvcihXZWJDb3JlOjpJbnRTaXplIGNv
bnRlbnRzU2l6ZSwgYm9vbCByb290TGF5ZXJDaGFuZ2VkLCBmbG9hdCBzY2FsZSwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKICAgICB2b2lkIHVwZGF0ZURlYnVnSW5k
aWNhdG9yUG9zaXRpb24oKTsKICAgICB2b2lkIGluaXRpYWxpemVEZWJ1Z0luZGljYXRvcigpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHdhaXRGb3JEaWRVcGRhdGVWaWV3U3RhdGUoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRhdGUoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlkZUNvbnRlbnRVbnRpbEFueVVwZGF0ZSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBoYXNWaXNpYmxlQ29udGVudCgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
aGlkZUNvbnRlbnRVbnRpbFBlbmRpbmdVcGRhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGVD
b250ZW50VW50aWxBbnlVcGRhdGUoKSBvdmVycmlkZTsKKyAgICBib29sIGhhc1Zpc2libGVDb250
ZW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCiAgICAgV2ViQ29yZTo6RmxvYXRQb2ludCBpbmRp
Y2F0b3JMb2NhdGlvbigpIGNvbnN0OwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgd2lsbENvbW1pdExheWVyVHJlZSh1aW50NjRfdCB0
cmFuc2FjdGlvbklEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
U2VjSXRlbVNoaW1Qcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVt
U2hpbVByb3h5LmgKaW5kZXggNjRmOTIwMzEzYjg0OTQxYzVkODc0OWE1YjQ5YmNmMWFjYmIwMjEx
OC4uMTgxODM2ZGYxMjc5MjVhZDA5ZmU4ZDUxNmM0ZDMzYmRlODI5MTdjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9TZWNJdGVtU2hpbVByb3h5LmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgcHJpdmF0ZToKICAgICBTZWNJdGVtU2hpbVByb3h5KCk7CiAKICAgICAvLyBJUEM6OkNv
bm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcgotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNlY0l0ZW1SZXF1ZXN0KElQ
Qzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU2VjSXRlbVJlcXVlc3RE
YXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggN2I3NGRiOGE2
MjI2NzUwM2ExNjVkMTQ1NzEwNzgzMzkwNDBhY2I3Yy4uYTZmOGRlZjY2Njc0MDJmOTAxNjBmZDk3
Y2YyZmRhMmY0NDUxZDhhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5LmgKQEAg
LTM5LDI3ICszOSwyNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gRHJhd2luZ0FyZWFQ
cm94eQotICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHdhaXRGb3JQb3NzaWJsZUdlb21ldHJ5VXBkYXRlKHN0ZDo6Y2hyb25vOjptaWxs
aXNlY29uZHMgdGltZW91dCA9IGRpZFVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlVGltZW91dCgpKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29sb3JTcGFjZURpZENoYW5nZSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBtaW5pbXVtTGF5b3V0U2l6ZURpZENoYW5nZSgpIG92ZXJyaWRl
OworICAgIHZvaWQgZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNpemVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRGb3JQb3NzaWJsZUdl
b21ldHJ5VXBkYXRlKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgdGltZW91dCA9IGRpZFVwZGF0
ZUJhY2tpbmdTdG9yZVN0YXRlVGltZW91dCgpKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbG9yU3Bh
Y2VEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIG1pbmltdW1MYXlvdXRTaXplRGlkQ2hh
bmdlKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBMYXllclRyZWVD
b250ZXh0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0ZUlELCBjb25zdCBVcGRhdGVJbmZv
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRl
eHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
dWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92
ZXJyaWRlOworICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90
IGJhY2tpbmdTdG9yZVN0YXRlSUQsIGNvbnN0IFVwZGF0ZUluZm8mKSBvdmVycmlkZTsKKyAgICB2
b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKHVpbnQ2NF90IGJhY2tpbmdTdG9y
ZVN0YXRlSUQsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQ
b2ludCBvcmlnaW4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRa
b29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOwor
ICAgIHZvaWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0
UG9pbnQgb3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91
YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgd2FpdEZvckRpZFVwZGF0ZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdEcmF3aW5nKHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KSBvdmVycmlkZTsKKyAgICB2b2lkIHdhaXRGb3JEaWRV
cGRhdGVWaWV3U3RhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z0RyYXdpbmcoc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kVXBkYXRlR2VvbWV0cnkoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdpbGxTZW5kVXBkYXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKIAogICAgIC8v
IE1lc3NhZ2UgaGFuZGxlcnMuCi0gICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUdlb21ldHJ5KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGludHJpbnNpY0NvbnRlbnRTaXplRGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZUdl
b21ldHJ5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnRyaW5zaWNDb250ZW50U2l6ZURpZENoYW5n
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNlbmRVcGRh
dGVHZW9tZXRyeSgpOwogICAgIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgY3JlYXRlRmVuY2VGb3JH
ZW9tZXRyeVVwZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggMzI5NjNkMWU0N2E5ZTA4MTNmYjhjMDM5ZmFi
ZTRiMTQwZTM0OTdlMS4uNDExNjhhYTM0NWQ3ZmQyZTcwMjg2MjdhM2Q0YjkxZGViMGNmMWM0YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBnZXN0
dXJlQ29udHJvbGxlckZvclBhZ2UodWludDY0X3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCmluZGV4IGI5OThmZDJiZTYzZTMw
NmNlNGU2M2I3OTU2NjEyODBlYjg5MDc0YTQuLjhhZGQyZjRhZmFmYjBiNTQ0ODFlNjY2MTJkNDYy
MmUyMTc5ZmQ4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV0tU
ZXh0RmluZGVyQ2xpZW50Lm1tCkBAIC02MSwyMiArNjEsMjIgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFN0cmluZ01hdGNoZXMoV2ViUGFnZVBy
b3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPEludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmRTdHJpbmdNYXRj
aGVzKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFZlY3Rv
cjxJbnRSZWN0Pj4mIG1hdGNoUmVjdHMsIGludDMyX3QpIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBbbV90ZXh0RmluZGVyQ2xpZW50IGRpZEZpbmRTdHJpbmdNYXRjaGVzV2l0aFJlY3RzOm1hdGNo
UmVjdHNdOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRJbWFnZUZvck1hdGNoUmVz
dWx0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViSW1hZ2UqIGltYWdlLCBpbnQzMl90IGluZGV4KSBv
dmVycmlkZQorICAgIHZvaWQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdChXZWJQYWdlUHJveHkq
IHBhZ2UsIFdlYkltYWdlKiBpbWFnZSwgaW50MzJfdCBpbmRleCkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIFttX3RleHRGaW5kZXJDbGllbnQgZGlkR2V0SW1hZ2VGb3JNYXRjaFJlc3VsdDppbWFn
ZV07CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmRTdHJpbmcoV2ViUGFnZVByb3h5
KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBtYXRjaFJlY3RzLCB1aW50
MzJfdCwgaW50MzJfdCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmRTdHJpbmcoV2ViUGFnZVBy
b3h5KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBtYXRjaFJlY3RzLCB1
aW50MzJfdCwgaW50MzJfdCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFttX3RleHRGaW5kZXJD
bGllbnQgZGlkRmluZFN0cmluZ01hdGNoZXNXaXRoUmVjdHM6eyBtYXRjaFJlY3RzIH1dOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdlYlBhZ2VQcm94eSos
IGNvbnN0IFN0cmluZyYgc3RyaW5nKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbFRvRmluZFN0
cmluZyhXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN0cmluZykgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIFttX3RleHRGaW5kZXJDbGllbnQgZGlkRmluZFN0cmluZ01hdGNoZXNXaXRoUmVj
dHM6eyB9XTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFj
L1dlYkNvbG9yUGlja2VyTWFjLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNv
bG9yUGlja2VyTWFjLmgKaW5kZXggNDU3ODcyOTlmMWJkNjQ4NWNjMTg2Y2NlYzM3NjZhMTk4ZmQy
MjIzYy4uYzE3MzJjNDQ2NTcxZDlhMTYyZWNiYTcwYmNiODhmZjRkZDU2YzZlNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJDb2xvclBpY2tlck1hYy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29sb3JQaWNrZXJNYWMuaApAQCAtNjIs
OSArNjIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJDb2xvclBpY2tlck1hYz4gY3Jl
YXRlKFdlYkNvbG9yUGlja2VyOjpDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBOU1ZpZXcqKTsKICAgICB+V2ViQ29sb3JQaWNrZXJNYWMoKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBlbmRQaWNrZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2VsZWN0ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzaG93Q29sb3JQaWNrZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGVuZFBpY2tlcigpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2VsZWN0
ZWRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd0Nv
bG9yUGlja2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9p
ZCBkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCmluZGV4
IGJkZDE3ZWRlYzc2NDAyNWZlNjAyZmNjZjMwNmRkMTA2YzVhMDZlNGEuLjczYzQ4NjM2YjhhZTE0
NzRkOTk3ODk3MGJjMmJjMWQ4MWU0YzFlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViQ29udGV4dE1lbnVQcm94eU1hYy5oCkBAIC01Nyw3ICs1Nyw3IEBA
IHB1YmxpYzoKICAgICBOU1dpbmRvdyAqd2luZG93KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCB2b2lkIHNob3coKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3coKSBvdmVycmlkZTsK
IAogICAgIFJldGFpblB0cjxOU01lbnVJdGVtPiBjcmVhdGVDb250ZXh0TWVudUl0ZW0oY29uc3Qg
V2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwogICAgIFJldGFpblB0cjxOU01lbnU+IGNyZWF0ZUNv
bnRleHRNZW51RnJvbUl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJDb250ZXh0TWVudUl0ZW1EYXRhPiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQ
cm94eU1hYy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94
eU1hYy5oCmluZGV4IGZiMWVjYzA5MmMyYzRmOTMwZTMwYTU0ZmVhMDZlMmIwMWM3ZTZiODIuLjA5
MGUxNDk4MjU0MTNiZDA4M2M3YjQyMjM4ZmUwZmNhODgyY2M0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLmgKQEAgLTQ2LDkg
KzQ2LDkgQEAgcHVibGljOgogICAgIH0KICAgICB+V2ViUG9wdXBNZW51UHJveHlNYWMoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVQb3B1cE1lbnUo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsVHJhY2tpbmcoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNob3dQb3B1cE1lbnUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6
OlRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxlY3Rl
ZEluZGV4KSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNhbmNlbFRyYWNraW5nKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgV2ViUG9w
dXBNZW51UHJveHlNYWMoTlNWaWV3ICosIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVz
dE1hbmFnZXJQcm94eS5oCmluZGV4IDg3YzE4YTRjNWExMDA2MjgyNGY1NGE1MmY4NjU1Yzg0ZTA3
MTY3MDQuLjNlYzA0YjdkNzNjMWI4NWUzNGZhZjYwYjdlNjA1MzhjMzA2ODVlNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RN
YW5hZ2VyUHJveHkuaApAQCAtNjEsMTMgKzYxLDEzIEBAIHByaXZhdGU6CiAgICAgV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAogICAgIC8vIFdlYkNvbnRleHRT
dXBwbGVtZW50Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENsb3NlKFdlYlByb2Nlc3NQcm94eSopIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9jZXNz
RGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5Kikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWZXZWJDb250
ZXh0U3VwcGxlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGVyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdl
RGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRG
YWlsVG9Mb2FkVVJJUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBj
ODI4NzNiNmViYzZhNzQ1Y2M4ZDE3NGZiMDhjN2I2NjdlMjcxMGU4Li40MzcxZWE5MTlhYTYyOGZi
Mzk2NzMwZmU3ZDg5OWFkMTdjNzU2YWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmgKaW5kZXggMzVkNGU4MDk2YzBmY2NkZjc1OTI1NDk0ZDVm
N2UwZjhjNjkzYWEzNS4uMDcxMjNlMjk0YTdlMDRjOGMyMzFlYzUzNDc1NWIwNmE2NGVmM2JmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaApAQCAtNDAs
MzMgKzQwLDMzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIoKTsKIAogICAgIFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlvblRvU2VydmVyJiBj
b3JlQ29ubmVjdGlvblRvU2VydmVyKCk7Ci0gICAgdmlydHVhbCB1aW50NjRfdCBpZGVudGlmaWVy
KCkgY29uc3Qgb3ZlcnJpZGUgZmluYWwgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdmly
dHVhbCB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlIGZpbmFs
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25z
dCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICB1aW50NjRfdCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIG92ZXJyaWRlIGZpbmFsIHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQogCiAgICAgLy8gSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmKSBvdmVy
cmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkRhdGFiYXNlKFdlYkNvcmU6OklEQlJl
cXVlc3REYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGFib3J0VHJhbnNh
Y3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJikgb3ZlcnJpZGUgZmluYWw7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRl
bnRpZmllciYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hIYW5k
bGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZp
ZXImKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmUo
Y29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RT
dG9yZUluZm8mKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVj
dFN0b3JlTmFtZSkgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyT2JqZWN0
U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRl
eChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQkluZGV4
SW5mbyYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChjb25z
dCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwg
dm9pZCBwdXRPckFkZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIFdlYkNvcmU6OklE
QktleSosIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYsIGNvbnN0IFdlYkNvcmU6Oklu
ZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0UmVjb3JkKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29u
c3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVh
bCB2b2lkIGdldENvdW50KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2Vi
Q29yZTo6SURCS2V5UmFuZ2VEYXRhJikgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lk
IGRlbGV0ZVJlY29yZChjb25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQktleVJhbmdlRGF0YSYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCQ3Vyc29ySW5mbyYpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBpdGVyYXRl
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURC
S2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcgY291bnQpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgdm9pZCBlc3RhYmxpc2hUcmFuc2FjdGlvbih1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkluZm8mKSBvdmVycmlkZSBm
aW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90
IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1
YWwgdm9pZCBhYm9ydE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyKSBvdmVycmlkZSBmaW5hbDsKLQotICAgIHZpcnR1YWwgdm9pZCByZWYoKSBvdmVycmlkZSB7
IFJlZkNvdW50ZWQ8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPjo6cmVmKCk7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50ZWQ8V2ViSURCQ29ubmVjdGlvblRv
U2VydmVyPjo6ZGVyZWYoKTsgfQorICAgIHZvaWQgZGVsZXRlRGF0YWJhc2UoV2ViQ29yZTo6SURC
UmVxdWVzdERhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIG9wZW5EYXRhYmFzZShXZWJD
b3JlOjpJREJSZXF1ZXN0RGF0YSYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgYWJvcnRUcmFu
c2FjdGlvbihXZWJDb3JlOjpJREJSZXNvdXJjZUlkZW50aWZpZXImKSBvdmVycmlkZSBmaW5hbDsK
KyAgICB2b2lkIGNvbW1pdFRyYW5zYWN0aW9uKFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmll
ciYpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24oV2ViQ29yZTo6SURCUmVzb3VyY2VJZGVudGlmaWVyJikgb3ZlcnJpZGUg
ZmluYWw7CisgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBXZWJDb3JlOjpJREJSZXF1
ZXN0RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlSW5mbyYpIG92ZXJyaWRlIGZp
bmFsOworICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVz
dERhdGEmLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkgb3ZlcnJpZGUgZmluYWw7Cisg
ICAgdm9pZCBjbGVhck9iamVjdFN0b3JlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwg
dWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lk
IGNyZWF0ZUluZGV4KGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29y
ZTo6SURCSW5kZXhJbmZvJikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkZWxldGVJbmRleChj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpIG92ZXJyaWRlIGZpbmFsOworICAgIHZvaWQg
cHV0T3JBZGQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBXZWJDb3JlOjpJREJLZXkq
LCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmLCBjb25zdCBXZWJDb3JlOjpJbmRleGVk
REI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSkgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBn
ZXRSZWNvcmQoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJ
REJLZXlSYW5nZURhdGEmKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGdldENvdW50KGNvbnN0
IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRh
Jikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBkZWxldGVSZWNvcmQoY29uc3QgV2ViQ29yZTo6
SURCUmVxdWVzdERhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKSBvdmVycmlk
ZSBmaW5hbDsKKyAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERh
dGEmLCBjb25zdCBXZWJDb3JlOjpJREJDdXJzb3JJbmZvJikgb3ZlcnJpZGUgZmluYWw7CisgICAg
dm9pZCBpdGVyYXRlQ3Vyc29yKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3REYXRhJiwgY29uc3Qg
V2ViQ29yZTo6SURCS2V5RGF0YSYsIHVuc2lnbmVkIGxvbmcgY291bnQpIG92ZXJyaWRlIGZpbmFs
OworICAgIHZvaWQgZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0
aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25JbmZvJikgb3ZlcnJp
ZGUgZmluYWw7CisgICAgdm9pZCBkYXRhYmFzZUNvbm5lY3Rpb25DbG9zZWQodWludDY0X3QgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7CisgICAgdm9pZCBhYm9y
dE9wZW5BbmRVcGdyYWRlTmVlZGVkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIGNvbnN0IFdlYkNvcmU6OklEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZl
bnQodWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
SURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRpZmllcikgb3ZlcnJpZGUgZmluYWw7
CisKKyAgICB2b2lkIHJlZigpIG92ZXJyaWRlIHsgUmVmQ291bnRlZDxXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXI+OjpyZWYoKTsgfQorICAgIHZvaWQgZGVyZWYoKSBvdmVycmlkZSB7IFJlZkNvdW50
ZWQ8V2ViSURCQ29ubmVjdGlvblRvU2VydmVyPjo6ZGVyZWYoKTsgfQogCiAgICAgLy8gTWVzc2Fn
ZXMgcmVjZWl2ZWQgZnJvbSBEYXRhYmFzZVByb2Nlc3MKICAgICB2b2lkIGRpZERlbGV0ZURhdGFi
YXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlc3VsdERhdGEmKTsKQEAgLTkzLDcgKzkzLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIoKTsKIAotICAgIHZp
cnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRl
IGZpbmFsOworICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBv
dmVycmlkZSBmaW5hbDsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKICAgICBib29sIG1f
aXNPcGVuSW5TZXJ2ZXIgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0YWJhc2VQcm92aWRlci5oCmluZGV4IGZlOWZmYWNl
YmI0NzVjZjVjNjBmYzU0NDBiZDk2M2E1ODM1ODNmMDcuLjU3MWIyNzUzOTI4NzVkN2ZmYWJhNTJm
YTI2MTFiODEzYTBhNjg2ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9XZWJEYXRhYmFzZVByb3ZpZGVyLmgKQEAgLTM4LDcgKzM4LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfldlYkRhdGFiYXNlUHJvdmlkZXIoKTsKIAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQotICAgIHZpcnR1YWwgV2ViQ29yZTo6SURCQ2xpZW50OjpJREJD
b25uZWN0aW9uVG9TZXJ2ZXImIGlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Npb24oY29uc3Qg
V2ViQ29yZTo6U2Vzc2lvbklEJikgb3ZlcnJpZGUgZmluYWw7CisgICAgV2ViQ29yZTo6SURCQ2xp
ZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIGlkYkNvbm5lY3Rpb25Ub1NlcnZlckZvclNlc3Np
b24oY29uc3QgV2ViQ29yZTo6U2Vzc2lvbklEJikgb3ZlcnJpZGUgZmluYWw7CiAjZW5kaWYKIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L1dlYlRvRGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggOWVk
ZjQ5ODQyOWNiY2I0ODNlY2JlNTI1MjUxM2RiMmE2MDRkNmI5YS4uOWE5NWEzZDZlYTgxMGM3NzQw
M2E3ZjkzODQ0MGY2ZTUyN2JjMzY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViVG9EYXRhYmFzZVByb2Nlc3NDb25u
ZWN0aW9uLmgKQEAgLTU5LDE1ICs1OSwxNSBAQCBwcml2YXRlOgogICAgIFdlYlRvRGF0YWJhc2VQ
cm9jZXNzQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwogCiAgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUg
bG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6Oldl
YjsgfQotICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOyB9CisgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CisgICAgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nl
c3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9CisgICAg
SVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQ
Qzo6UHJvY2Vzc1R5cGU6OkRhdGFiYXNlOyB9CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIK
LSAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBv
dmVycmlkZSB7IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQor
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZSB7
IHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7IH0KKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KIAogICAgIFJlZlB0cjxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAppbmRleCAxZjc3MzYwMDNiNGY3
NWJkMTg5NmIwNzNmNmMyZjUzMDk5ZTY0ZmNmLi5iZjFhN2MzNjVkN2I3MmE1ZDE4OGRlYjE4YjRi
ZTI5MjgyYWViZmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVB
UEkvQmxvYlJlZ2lzdHJ5UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Zp
bGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuaApAQCAtMzIsMTIgKzMyLDEyIEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1YmxpYyBXZWJDb3Jl
OjpCbG9iUmVnaXN0cnkgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZpbGVC
bG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVS
ZWZlcmVuY2U+JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25z
dCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJD
b3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgUmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4mJiwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJs
b2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JV
UkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwpIG92ZXJy
aWRlOworICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxv
bmcgZW5kKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3Qg
V2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9XZWJHZW9sb2NhdGlvbk1hbmFnZXIu
aAppbmRleCA4MDkzYTgyYTZlMTAyZTA5Y2I4NDZkNmZhYzk4MjAwZTc3M2M1MWRjLi41YWI5YmEw
ODBjMDliNTExMjFkOTNjY2MxY2ZmZTk0ZDJjNWFkNjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL1dlYkdlb2xvY2F0aW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vV2ViR2VvbG9jYXRpb25NYW5h
Z2VyLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNVcGRhdGluZygpIGNvbnN0IHsgcmV0dXJuICFtX3BhZ2VT
ZXQuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCBpc0hpZ2hBY2N1cmFjeUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiAhbV9oaWdoQWNjdXJhY3lQYWdlU2V0LmlzRW1wdHkoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRh
YmFzZVByb3h5LmgKaW5kZXggMzc2YjJiZTY5MzU5MGRlOThjZWJlNzNkMThiNWUxNWJjMjMwNzA3
Yi4uODJkYWVmOTM5MTNmNmFlZWQwNDAyZjM4MmViNTEzYmZjZDAyZTg4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29u
RGF0YWJhc2VQcm94eS5oCkBAIC00MywyNCArNDMsMjQgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IFdlYkljb25EYXRhYmFzZVByb3h5KFdlYlByb2Nlc3MqKTsKICAgICB2aXJ0dWFsIH5XZWJJY29u
RGF0YWJhc2VQcm94eSgpOwogCi0gICAgdmlydHVhbCBib29sIGlzRW5hYmxlZCgpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaXNFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJldGFpbkljb25G
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWxl
YXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldEljb25VUkxGb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJY29uRGF0YUZvckljb25VUkwoUGFzc1JlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVsZWFzZUljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0SWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRJY29uRGF0YUZvckljb25VUkwoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
U3RyaW5nIHN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHN5bmNocm9ub3VzSWNvbkRhdGFLbm93bkZvckljb25VUkwo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpJY29uTG9hZERl
Y2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW1hZ2UqIHN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworICAgIFN0cmluZyBzeW5jaHJvbm91c0ljb25VUkxG
b3JQYWdlVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgc3luY2hyb25vdXNJ
Y29uRGF0YUtub3duRm9ySWNvblVSTChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBXZWJD
b3JlOjpJY29uTG9hZERlY2lzaW9uIHN5bmNocm9ub3VzTG9hZERlY2lzaW9uRm9ySWNvblVSTChj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOworICAgIFdl
YkNvcmU6OkltYWdlKiBzeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBBc3luY2hyb25v
dXMgY2FsbHMgd2Ugc2hvdWxkIHVzZSB0byByZXBsYWNlIHRoZSBhYm92ZSB3aGVuIHN1cHBvcnRl
ZC4KLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNNb2RlKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGxvYWREZWNpc2lvbkZvckljb25VUkwoY29uc3QgU3RyaW5nJiwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJY29uTG9hZERlY2lzaW9uQ2FsbGJhY2s+KSBvdmVycmlkZTsK
KyAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzTW9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQg
bG9hZERlY2lzaW9uRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPFdlYkNvcmU6
Okljb25Mb2FkRGVjaXNpb25DYWxsYmFjaz4pIG92ZXJyaWRlOwogICAgIHZvaWQgcmVjZWl2ZWRJ
Y29uTG9hZERlY2lzaW9uKGludCBkZWNpc2lvbiwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dmlydHVhbCB2b2lkIGljb25EYXRhRm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PFdlYkNvcmU6Okljb25EYXRhQ2FsbGJhY2s+KSBvdmVycmlkZTsKKyAgICB2b2lkIGljb25EYXRh
Rm9ySWNvblVSTChjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRyPFdlYkNvcmU6Okljb25EYXRhQ2Fs
bGJhY2s+KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAKaW5kZXggZmM2YjYz
NWU5Zjc2NGYxOWU2MzU1NDU1N2E4NDY4NmQ3MzczNmQwNy4uNDk5ZGE2ZWMxNWUzZWIzOTgxMDBk
ZTVjNmU5ZDE3MWNmZGY0YjcxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2VPdmVybGF5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZU92
ZXJsYXkuY3BwCkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8v
IFdlYlBhZ2VPdmVybGF5OjpDbGllbnQuCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVz
dHJveWVkKFdlYlBhZ2VPdmVybGF5Jikgb3ZlcnJpZGUKKyAgICB2b2lkIHBhZ2VPdmVybGF5RGVz
dHJveWVkKFdlYlBhZ2VPdmVybGF5Jikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvUGFnZShXZWJQYWdlT3Zl
cmxheSYgcGFnZU92ZXJsYXksIFdlYlBhZ2UqIHBhZ2UpIG92ZXJyaWRlCisgICAgdm9pZCB3aWxs
TW92ZVRvUGFnZShXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIFdlYlBhZ2UqIHBhZ2UpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxNb3ZlVG9QYWdlKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgICAgICBtX2Ns
aWVudC53aWxsTW92ZVRvUGFnZSh0b0FQSSgmcGFnZU92ZXJsYXkpLCB0b0FQSShwYWdlKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRp
ZE1vdmVUb1BhZ2UoV2ViUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBXZWJQYWdlKiBwYWdlKSBv
dmVycmlkZQorICAgIHZvaWQgZGlkTW92ZVRvUGFnZShXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJs
YXksIFdlYlBhZ2UqIHBhZ2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZE1vdmVUb1BhZ2UpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05MSw3ICs5MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fY2xpZW50LmRpZE1vdmVUb1BhZ2UodG9BUEkoJnBhZ2VPdmVybGF5
KSwgdG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRyYXdSZWN0KFdlYlBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhp
Y3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkgb3Zl
cnJpZGUKKyAgICB2b2lkIGRyYXdSZWN0KFdlYlBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3Jh
cGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9jbGllbnQuZHJhd1JlY3QpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC05OSw3ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2xpZW50
LmRyYXdSZWN0KHRvQVBJKCZwYWdlT3ZlcmxheSksIGdyYXBoaWNzQ29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSwgdG9BUEkoZGlydHlSZWN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICB9CiAgICAgCi0gICAgdmlydHVhbCBib29sIG1vdXNlRXZlbnQoV2ViUGFnZU92ZXJsYXkmIHBh
Z2VPdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSBvdmVycmlkZQorICAg
IGJvb2wgbW91c2VFdmVudChXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBzd2l0Y2ggKGV2
ZW50LnR5cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtTW91c2VFdmVudDo6VHlwZTo6TW91
c2VQcmVzc2VkOiB7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICNpZiBQ
TEFURk9STShNQUMpCi0gICAgdmlydHVhbCBEREFjdGlvbkNvbnRleHQgKmFjdGlvbkNvbnRleHRG
b3JSZXN1bHRBdFBvaW50KFdlYlBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgV2ViQ29yZTo6Rmxv
YXRQb2ludCBsb2NhdGlvbiwgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiYgcmFuZ2VIYW5kbGUpIG92
ZXJyaWRlCisgICAgRERBY3Rpb25Db250ZXh0ICphY3Rpb25Db250ZXh0Rm9yUmVzdWx0QXRQb2lu
dChXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIFdlYkNvcmU6OkZsb2F0UG9pbnQgbG9jYXRp
b24sIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4mIHJhbmdlSGFuZGxlKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgaWYgKG1fY2xpZW50LmFjdGlvbkNvbnRleHRGb3JSZXN1bHRBdFBvaW50KSB7CiAg
ICAgICAgICAgICBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIGFwaVJhbmdlID0gbnVsbHB0cjsKQEAg
LTE1MCw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKFdlYlBhZ2VPdmVybGF5
JiBwYWdlT3ZlcmxheSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRhdGFEZXRlY3RvcnNEaWRQcmVzZW50
VUkoV2ViUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
aWYgKCFtX2NsaWVudC5kYXRhRGV0ZWN0b3JzRGlkUHJlc2VudFVJKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY2xpZW50LmRhdGFE
ZXRlY3RvcnNEaWRQcmVzZW50VUkodG9BUEkoJnBhZ2VPdmVybGF5KSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGF0YURldGVjdG9yc0RpZENo
YW5nZVVJKFdlYlBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRh
dGFEZXRlY3RvcnNEaWRDaGFuZ2VVSShXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXkpIG92ZXJy
aWRlCiAgICAgewogICAgICAgICBpZiAoIW1fY2xpZW50LmRhdGFEZXRlY3RvcnNEaWRDaGFuZ2VV
SSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBtX2NsaWVudC5kYXRhRGV0ZWN0b3JzRGlkQ2hhbmdlVUkodG9BUEkoJnBhZ2VPdmVybGF5
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGF0YURldGVjdG9yc0RpZEhpZGVVSShXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXkpIG92ZXJy
aWRlCisgICAgdm9pZCBkYXRhRGV0ZWN0b3JzRGlkSGlkZVVJKFdlYlBhZ2VPdmVybGF5JiBwYWdl
T3ZlcmxheSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9jbGllbnQuZGF0YURldGVj
dG9yc0RpZEhpZGVVSSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3NSw3ICsxNzUsNyBAQCBw
cml2YXRlOgogICAgIH0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKLSAgICB2aXJ0dWFsIGJv
b2wgY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVTdHJpbmdWYWx1ZUZvclBvaW50KFdlYlBhZ2VP
dmVybGF5JiBwYWdlT3ZlcmxheSwgU3RyaW5nIGF0dHJpYnV0ZSwgV2ViQ29yZTo6RmxvYXRQb2lu
dCBwYXJhbWV0ZXIsIFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlCisgICAgYm9vbCBjb3B5QWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVN0cmluZ1ZhbHVlRm9yUG9pbnQoV2ViUGFnZU92ZXJsYXkmIHBhZ2VP
dmVybGF5LCBTdHJpbmcgYXR0cmlidXRlLCBXZWJDb3JlOjpGbG9hdFBvaW50IHBhcmFtZXRlciwg
U3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmICghbV9hY2Nlc3NpYmls
aXR5Q2xpZW50LmNsaWVudCgpLmNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWUpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xODYsNyArMTg2LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGNvcHlBY2Nlc3NpYmls
aXR5QXR0cmlidXRlQm9vbFZhbHVlRm9yUG9pbnQoV2ViUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5
LCBTdHJpbmcgYXR0cmlidXRlLCBXZWJDb3JlOjpGbG9hdFBvaW50IHBhcmFtZXRlciwgYm9vbCYg
dmFsdWUpIG92ZXJyaWRlCisgICAgYm9vbCBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZUJvb2xW
YWx1ZUZvclBvaW50KFdlYlBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgU3RyaW5nIGF0dHJpYnV0
ZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBwYXJhbWV0ZXIsIGJvb2wmIHZhbHVlKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKCFtX2FjY2Vzc2liaWxpdHlDbGllbnQuY2xpZW50KCkuY29weUFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTE5Nyw3ICsxOTcsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFt
ZXMoV2ViUGFnZU92ZXJsYXkmIHBhZ2VPdmVybGF5LCBib29sIHBhcmFtZXJpemVkTmFtZXMpIG92
ZXJyaWRlCisgICAgVmVjdG9yPFN0cmluZz4gY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1l
cyhXZWJQYWdlT3ZlcmxheSYgcGFnZU92ZXJsYXksIGJvb2wgcGFyYW1lcml6ZWROYW1lcykgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IG5hbWVzOwogICAgICAgICBpZiAo
IW1fYWNjZXNzaWJpbGl0eUNsaWVudC5jbGllbnQoKS5jb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZU5hbWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9tYWMvV0tCdW5kbGVQYWdlQmFubmVyTWFj
Lm1tCmluZGV4IGU4YWY5MGJjZTQxNmQ5N2FiYTIyYTE5YmIyZDc5NjcwZmQ1ZDZiNDkuLjYzYmYz
YTNiMGQ0OGE5NGU4NzQ5YzI4MjBiMTUyYzgxYTY4YTc0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvbWFjL1dLQnVuZGxlUGFnZUJh
bm5lck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL21hYy9XS0J1bmRsZVBhZ2VCYW5uZXJNYWMubW0KQEAgLTU1LDEyICs1NSwxMiBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gUGFnZUJhbm5lcjo6Q2xpZW50LgotICAgIHZpcnR1
YWwgdm9pZCBwYWdlQmFubmVyRGVzdHJveWVkKFBhZ2VCYW5uZXIqKSBvdmVycmlkZQorICAgIHZv
aWQgcGFnZUJhbm5lckRlc3Ryb3llZChQYWdlQmFubmVyKikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVu
dChQYWdlQmFubmVyKiBwYWdlQmFubmVyLCBXZWJFdmVudDo6VHlwZSB0eXBlLCBXZWJNb3VzZUV2
ZW50OjpCdXR0b24gYnV0dG9uLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pIG92ZXJyaWRlCisg
ICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VCYW5uZXIqIHBhZ2VCYW5uZXIsIFdlYkV2ZW50OjpUeXBl
IHR5cGUsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3Np
dGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBj
YXNlIFdlYkV2ZW50OjpNb3VzZURvd246IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdl
LmNwcAppbmRleCBmYWE4NTc4YTA3NTBmMzQwMTAyZTg2MzVhMjg3ZDUyNjAzNThlODc0Li5jNmM5
MjFhMjc2ODliMjlmMTE5NjNmY2UzYTJiZWM4NDY4YWQ1NGMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3Rr
L1dlYktpdFdlYlBhZ2UuY3BwCkBAIC05NSw3ICs5NSw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXRG
cmFtZSogd2Via2l0RnJhbWUoKSBjb25zdCB7IHJldHVybiBtX3dlYmtpdEZyYW1lLmdldCgpOyB9
CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIGZyYW1lRGVzdHJveWVkKCkgb3ZlcnJpZGUK
KyAgICB2b2lkIGZyYW1lRGVzdHJveWVkKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEZyYW1l
RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6ZnJhbWVEZXN0cm95ZWQoKTsKICAgICAgICAgd2ViRnJhbWVE
ZXN0cm95ZWQod2Via2l0RnJhbWVHZXRXZWJGcmFtZShtX3dlYmtpdEZyYW1lLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9t
YWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLV2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5tbQppbmRleCA1MDgwMzU4MGRjZDg1NzA1MzQ2
MmNiNzdiMjAyNjFjZWI5NWUwYjZjLi44Yjg1YWEyMjUyYWJlNDM0NjhjNWRjODg0MzBlYjA2OWFi
MGFmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0KQEAgLTQ1Miw3ICs0
NTIsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVsZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5G
b3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVsZWdhdAogCiAgICAgICAgIHZpcnR1YWwgfkZvcm1D
bGllbnQoKSB7IH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRm9jdXNUZXh0RmllbGQoV2Vi
UGFnZSosIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lKSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRpZEZvY3VzVGV4dEZpZWxkKFdlYlBhZ2UqLCBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIFdlYkZyYW1lKiBmcmFtZSkgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgYXV0byBmb3JtRGVsZWdhdGUgPSBtX2NvbnRyb2xsZXItPl9mb3Jt
RGVsZWdhdGUuZ2V0KCk7CiAKQEAgLTQ2MCw3ICs0NjAsNyBAQCAtICh2b2lkKV9zZXRGb3JtRGVs
ZWdhdGU6KGlkIDxXS1dlYlByb2Nlc3NQbHVnSW5Gb3JtRGVsZWdhdGVQcml2YXRlPilmb3JtRGVs
ZWdhdAogICAgICAgICAgICAgICAgIFtmb3JtRGVsZWdhdGUgX3dlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6bV9jb250cm9sbGVyIGRpZEZvY3VzVGV4dEZpZWxkOndyYXBw
ZXIoKkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoaW5wdXRFbGVtZW50KS5n
ZXQoKSkgaW5GcmFtZTp3cmFwcGVyKCpmcmFtZSldOwogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHdpbGxTZW5kU3VibWl0RXZlbnQoV2ViUGFnZSosIEhUTUxGb3JtRWxlbWVudCog
Zm9ybUVsZW1lbnQsIFdlYkZyYW1lKiB0YXJnZXRGcmFtZSwgV2ViRnJhbWUqIHNvdXJjZUZyYW1l
LCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhbHVlcykgb3ZlcnJp
ZGUKKyAgICAgICAgdm9pZCB3aWxsU2VuZFN1Ym1pdEV2ZW50KFdlYlBhZ2UqLCBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm1FbGVtZW50LCBXZWJGcmFtZSogdGFyZ2V0RnJhbWUsIFdlYkZyYW1lKiBzb3Vy
Y2VGcmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YWx1ZXMp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9j
b250cm9sbGVyLT5fZm9ybURlbGVnYXRlLmdldCgpOwogCkBAIC00OTMsNyArNDkzLDcgQEAgLSAo
dm9pZClfc2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRl
UHJpdmF0ZT4pZm9ybURlbGVnYXQKICAgICAgICAgICAgIHVzZXJEYXRhID0gQVBJOjpEYXRhOjpj
cmVhdGVXaXRob3V0Q29weWluZyhXVEZNb3ZlKGRhdGEpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlKiwgSFRNTEZvcm1FbGVtZW50KiBm
b3JtRWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lLCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpTdHJpbmcsIFdURjo6U3RyaW5nPj4mIHZhbHVlcywgUmVm
UHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgd2lsbFN1
Ym1pdEZvcm0oV2ViUGFnZSosIEhUTUxGb3JtRWxlbWVudCogZm9ybUVsZW1lbnQsIFdlYkZyYW1l
KiBmcmFtZSwgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFdU
Rjo6U3RyaW5nLCBXVEY6OlN0cmluZz4+JiB2YWx1ZXMsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVz
ZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBhdXRvIGZvcm1EZWxlZ2F0
ZSA9IG1fY29udHJvbGxlci0+X2Zvcm1EZWxlZ2F0ZS5nZXQoKTsKIApAQCAtNTA3LDcgKzUwNyw3
IEBAIC0gKHZvaWQpX3NldEZvcm1EZWxlZ2F0ZTooaWQgPFdLV2ViUHJvY2Vzc1BsdWdJbkZvcm1E
ZWxlZ2F0ZVByaXZhdGU+KWZvcm1EZWxlZ2F0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEZpZWxkKFdlYlBhZ2UqLCBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIFdlYkZyYW1lKiBmcmFtZSwgYm9vbCBpbml0
aWF0ZWRCeVVzZXJUeXBpbmcpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgdGV4dERpZENoYW5nZUlu
VGV4dEZpZWxkKFdlYlBhZ2UqLCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIFdlYkZy
YW1lKiBmcmFtZSwgYm9vbCBpbml0aWF0ZWRCeVVzZXJUeXBpbmcpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9jb250cm9sbGVyLT5fZm9ybURl
bGVnYXRlLmdldCgpOwogCkBAIC01MTUsNyArNTE1LDcgQEAgLSAodm9pZClfc2V0Rm9ybURlbGVn
YXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURlbGVn
YXQKICAgICAgICAgICAgICAgICBbZm9ybURlbGVnYXRlIF93ZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyOm1fY29udHJvbGxlciB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQ6
d3JhcHBlcigqV2ViS2l0OjpJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OmdldE9yQ3JlYXRlKGlu
cHV0RWxlbWVudCkpIGluRnJhbWU6d3JhcHBlcigqZnJhbWUpIGluaXRpYXRlZEJ5VXNlclR5cGlu
Zzppbml0aWF0ZWRCeVVzZXJUeXBpbmddOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxCZWdpbklucHV0U2Vzc2lvbihXZWJQYWdlKiwgRWxlbWVudCogZWxlbWVudCwgV2Vi
RnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAg
ICAgICAgdm9pZCB3aWxsQmVnaW5JbnB1dFNlc3Npb24oV2ViUGFnZSosIEVsZW1lbnQqIGVsZW1l
bnQsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgdXNlckRhdGEpIG92ZXJy
aWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9jb250cm9s
bGVyLT5fZm9ybURlbGVnYXRlLmdldCgpOwogCkBAIC01MjYsNyArNTI2LDcgQEAgLSAodm9pZClf
c2V0Rm9ybURlbGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0
ZT4pZm9ybURlbGVnYXQKICAgICAgICAgICAgIGVuY29kZVVzZXJPYmplY3QodXNlck9iamVjdCwg
dXNlckRhdGEpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZE5vdGlm
eU9uRm9ybUNoYW5nZXMoV2ViS2l0OjpXZWJQYWdlKikgb3ZlcnJpZGUKKyAgICAgICAgYm9vbCBz
aG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKFdlYktpdDo6V2ViUGFnZSopIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGF1dG8gZm9ybURlbGVnYXRlID0gbV9jb250cm9sbGVyLT5fZm9y
bURlbGVnYXRlLmdldCgpOwogCkBAIC01MzYsNyArNTM2LDcgQEAgLSAodm9pZClfc2V0Rm9ybURl
bGVnYXRlOihpZCA8V0tXZWJQcm9jZXNzUGx1Z0luRm9ybURlbGVnYXRlUHJpdmF0ZT4pZm9ybURl
bGVnYXQKICAgICAgICAgICAgIHJldHVybiBbZm9ybURlbGVnYXRlIF93ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyU2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlczptX2NvbnRy
b2xsZXJdOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEFzc29jaWF0ZUZv
cm1Db250cm9scyhXZWJLaXQ6OldlYlBhZ2UqLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6
OkVsZW1lbnQ+PiYgZWxlbWVudHMpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkQXNzb2NpYXRl
Rm9ybUNvbnRyb2xzKFdlYktpdDo6V2ViUGFnZSosIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6RWxlbWVudD4+JiBlbGVtZW50cykgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
YXV0byBmb3JtRGVsZWdhdGUgPSBtX2NvbnRyb2xsZXItPl9mb3JtRGVsZWdhdGUuZ2V0KCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgKaW5kZXggYzJiYzJm
YTRlMzI0YjdlN2MxYTQ1ODg0MjQ3M2U5YWQyOGNkNDY5Mi4uZTlkZjUzMTNkYjAzMDlkMmJmNjEw
MTkxNzcyM2ZmY2ExMTM5NDQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VG
b3JtQ2xpZW50LmgKQEAgLTQzLDE2ICs0MywxNiBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVBhZ2VG
b3JtQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLQnVuZGxlUGFnZUZvcm1DbGllbnRCYQog
cHVibGljOgogICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQoY29uc3Qg
V0tCdW5kbGVQYWdlRm9ybUNsaWVudEJhc2UqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBkaWRGb2N1
c1RleHRGaWVsZChXZWJQYWdlKiwgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCosIFdlYkZyYW1l
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhX
ZWJQYWdlKiwgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCosIFdlYkZyYW1lKikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViUGFnZSosIFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQqLCBXZWJGcmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQqLCBXZWJGcmFtZSosIGJvb2wgaW5pdGlhdGVkQnlVc2VyVHlwaW5nKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViUGFnZSosIFdl
YkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqLCBXZWJGcmFtZSopIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRQZXJmb3JtQWN0aW9uSW5UZXh0RmllbGQoV2ViUGFnZSosIFdlYkNv
cmU6OkhUTUxJbnB1dEVsZW1lbnQqLCBJbnB1dEZpZWxkQWN0aW9uLCBXZWJGcmFtZSopIG92ZXJy
aWRlOyAgICAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFN1Ym1pdEZvcm0oV2ViUGFnZSosIFdlYkNv
cmU6OkhUTUxGb3JtRWxlbWVudCosIFdlYkZyYW1lKiwgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBj
b25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiB1c2VyRGF0YSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kU3VibWl0
RXZlbnQoV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudCosIFdlYkZyYW1lKiwgV2Vi
RnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5n
Pj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
KFdlYlBhZ2UqLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+PiYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKFdlYlBhZ2Uq
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZvY3VzVGV4dEZpZWxkKFdlYlBhZ2UqLCBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiwgV2ViRnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRG
aWVsZERpZEJlZ2luRWRpdGluZyhXZWJQYWdlKiwgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCos
IFdlYkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5nKFdl
YlBhZ2UqLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiwgV2ViRnJhbWUqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRGaWVsZChXZWJQYWdlKiwgV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudCosIFdlYkZyYW1lKiwgYm9vbCBpbml0aWF0ZWRCeVVzZXJUeXBpbmcpIG92
ZXJyaWRlOworICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViUGFnZSosIFdlYkNv
cmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQqLCBXZWJGcmFtZSopIG92ZXJyaWRlOworICAgIGJvb2wg
c2hvdWxkUGVyZm9ybUFjdGlvbkluVGV4dEZpZWxkKFdlYlBhZ2UqLCBXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50KiwgSW5wdXRGaWVsZEFjdGlvbiwgV2ViRnJhbWUqKSBvdmVycmlkZTsgICAgCisg
ICAgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlKiwgV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50
KiwgV2ViRnJhbWUqLCBXZWJGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBTdHJpbmc+PiYsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdpbGxTZW5kU3VibWl0RXZlbnQoV2ViUGFnZSosIFdlYkNvcmU6OkhU
TUxGb3JtRWxlbWVudCosIFdlYkZyYW1lKiwgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
ZEFzc29jaWF0ZUZvcm1Db250cm9scyhXZWJQYWdlKiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJD
b3JlOjpFbGVtZW50Pj4mKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZE5vdGlmeU9uRm9ybUNo
YW5nZXMoV2ViUGFnZSopIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggY2FlODBhM2UyMGUwMDliNTAwNDliMmEwYzU3MjZk
NjAzMWFlZjJiMC4uMmMwYTMyMTcyMDRjMWE4OTRhYjhiYTU0NDNkMGVhNzM4MzAzOGUzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNjIsMTIgKzYyLDEyIEBAIHByaXZhdGU6CiAgICAg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CiAK
ICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6TWVzc2FnZUVu
Y29kZXI+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gSVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9Ci0gICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBl
IHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6
TmV0d29yazsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENsb3Nl
KElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAg
ICBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJ
UEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nl
c3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6TmV0d29yazsgfQog
CiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAppbmRleCAzYTYyMDA5ZjgzZjhkMzMzNTI5MzNlMWQ5ZTNhZjkyZGEyZTkyY2Vl
Li5iY2E5MmI0NTNkNDMzYmM2OTBjMTI1NGVkYjU0ZjcyNGJiMzM5M2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApA
QCAtNzAsOCArNzAsOCBAQCBwcml2YXRlOgogICAgIFdlYlJlc291cmNlTG9hZGVyKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+KTsKIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
cgotICAgIHZpcnR1YWwgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9u
SUQoKSBvdmVycmlkZTsKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgb3ZlcnJpZGU7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpOwogICAgIHZvaWQgZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50LCB1aW50
NjRfdCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgK
aW5kZXggODA3ZTUyY2EwMzc3OTczZDA2NjczMmIxMGNmMDdhNDI3NGVkOTA4ZS4uYThiMTU0M2Vk
ZDRkODA2OGExODc5MzI5N2Y2NDZmMzAxMzZlZDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5oCkBAIC02OSwxMSArNjksMTEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8v
IFdlYlByb2Nlc3NTdXBwbGVtZW50Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3Qg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRl
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdm9pZCBkaWRT
aG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICB2b2lkIGRpZENs
aWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKaW5kZXggMWQ4NTYyYjE1OTdiZDY5OTljODFjODIzYzIxNjE1NzU3M2Y1MTBhYS4uYmY1
NjlmZTI5MjVjNGYyMjE0ZmUyMjE2MWQ5YjYwODhhODBjNTgzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TmV0c2Nh
cGVQbHVnaW4+IGZyb21OUFAoTlBQKTsKIAogICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVn
aW5zIGRvbid0IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgotICAgIHZpcnR1
YWwgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFs
aXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBOUEVycm9yIHNldERyYXdpbmdNb2RlbChOUERyYXdpbmdNb2RlbCk7CkBAIC0x
NTYsNyArMTU2LDcgQEAgcHVibGljOgogICAgIE5QRXJyb3IgTlBQX1NldFZhbHVlKE5QTlZhcmlh
YmxlLCB2b2lkICp2YWx1ZSk7CiAKICAgICAvLyBDb252ZXJ0IHRoZSBnaXZlbiBwb2ludCBmcm9t
IHBsdWctaW4gY29vcmRpbmF0ZXMgdG8gcm9vdCB2aWV3IGNvb3JkaW5hdGVzLgotICAgIHZpcnR1
YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0VG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2
YXRlOgogICAgIE5ldHNjYXBlUGx1Z2luKFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+
IHBsdWdpbk1vZHVsZSk7CkBAIC0xODgsNjIgKzE4OCw2MiBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyBib29sIHdhbnRzUGx1Z2luUmVsYXRpdmVOUFdpbmRvd0Nvb3JkaW5hdGVzKCk7CiAKICAgICAv
LyBQbHVnaW4KLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxTaGFyZWFi
bGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0
IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
c25hcHNob3QoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1MYXllciog
cGx1Z2luTGF5ZXIoKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5z
cGFyZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3Qs
IGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9y
bSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBp
c1Zpc2libGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmcmFtZURpZEZpbmlzaExvYWRp
bmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVE
aWRGYWlsKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVh
bVdpbGxTZW5kUmVxdWVzdCh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiBy
ZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VT
dGF0dXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVp
bnQzMl90IHN0cmVhbUxlbmd0aCwKKyAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZTsK
KyAgICBib29sIHdhbnRzV2hlZWxFdmVudHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBs
dWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaWJpbGl0eURp
ZENoYW5nZShib29sIGlzVmlzaWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcmFtZURpZEZpbmlz
aExvYWRpbmcodWludDY0X3QgcmVxdWVzdElEKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyYW1lRGlk
RmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlwdCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0
cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbVdpbGxTZW5kUmVxdWVzdCh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXF1ZXN0VVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCBpbnQgcmVzcG9uc2VTdGF0dXMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25z
dCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsYXN0TW9kaWZp
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0
ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1EaWRGaW5p
c2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCAKKyAg
ICB2b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFy
KiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1EaWRGaW5pc2hM
b2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZEZh
aWwodWludDY0X3Qgc3RyZWFtSUQsIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKKyAgICB2
b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3Ry
ZWFtRGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxs
ZWQpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEoY29uc3Qg
Y2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFt
RGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkRmFp
bChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGhh
bmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZl
bnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2ZW50KGNv
bnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ29u
dGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsKLQotICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFZGl0aW5nQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
ZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBo
YW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKKyAgICBib29s
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRlOworICAgIGJv
b2wgaGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsK
KyAgICBib29sIGhhbmRsZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZl
bnQmKSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgV2ViS2V5
Ym9hcmRFdmVudCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7
CisKKyAgICBib29sIGhhbmRsZUVkaXRpbmdDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFZGl0aW5n
Q29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAgICBib29sIHNob3Vs
ZEFsbG93U2NyaXB0aW5nKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRp
b25Gcm9tRHJhZ3MoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlc1Bh
Z2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlc1BhZ2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBOUE9iamVjdCogcGx1Z2lu
U2NyaXB0YWJsZU5QT2JqZWN0KCkgb3ZlcnJpZGU7CisgICAgTlBPYmplY3QqIHBsdWdpblNjcmlw
dGFibGVOUE9iamVjdCgpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdW5zaWduZWQgY291
bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291
bnQpIG92ZXJyaWRlOworICAgIHVuc2lnbmVkIGNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5n
JiwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIG92ZXJyaWRl
OworICAgIGJvb2wgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9u
cywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
d2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dWaXNpYmlsaXR5Q2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbmRvd0ZvY3Vz
Q2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbmRvd1Zpc2liaWxpdHlDaGFuZ2Vk
KGJvb2wpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCB2b2lk
IHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHdpbmRv
d0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld0Zy
YW1lSW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGU7CisgICAgdm9pZCB3aW5kb3dBbmRWaWV3
RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVu
Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29v
cmRpbmF0ZXMpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB1aW50NjRfdCBwbHVnaW5Db21wbGV4
VGV4dElucHV0SWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZW5kQ29tcGxleFRleHRJbnB1dChjb25zdCBTdHJpbmcmIHRleHRJbnB1dCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3Zl
cnJpZGU7CisgICAgdWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0KGNvbnN0IFN0cmlu
ZyYgdGV4dElucHV0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5
ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dG
b2N1c0NoYW5nZWQoKTsKICAgICB2b2lkIHNldENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKGJvb2wp
OwpAQCAtMjUxLDI5ICsyNTEsMjkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBsdWdpbkxh
eWVyKCk7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hh
bmdlZChmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0
YXRlQ2hhbmdlZChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBnZXRGb3Jt
VmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5k
bGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxh
cml0eSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250
YWxTY3JvbGxiYXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciog
dmVydGljYWxTY3JvbGxiYXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0
b3JDaGFuZ2VkKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRl
Q2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZChib29sKSBvdmVycmlkZTsKKyAgICBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1W
YWx1ZSkgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSkgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29y
ZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBib29sIHN1cHBvcnRzU25hcHNob3R0aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBz
dXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgLy8gQ29udmVydCB0
aGUgZ2l2ZW4gcG9pbnQgZnJvbSByb290IHZpZXcgY29vcmRpbmF0ZXMgdG8gcGx1Zy1pbiBjb29y
ZGluYXRlcy4gUmV0dXJucyBmYWxzZSBpZiB0aGUgcG9pbnQgY2FuJ3QgYmUKICAgICAvLyBjb252
ZXJ0ZWQgKGlmIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggaXNuJ3QgaW52ZXJ0aWJsZSkuCiAg
ICAgYm9vbCBjb252ZXJ0RnJvbVJvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2lu
dEluUm9vdFZpZXdDb29yZGluYXRlcywgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5QbHVnaW5D
b29yZGluYXRlcyk7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgcGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU3RyaW5nIGdldFNlbGVjdGlvblN0
cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgU3RyaW5nIGdl
dFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rp
b25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdmlydHVhbCB2b2lkIG11dGVkU3RhdGVDaGFuZ2Vk
KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQbHVn
aW5YMTEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEv
TmV0c2NhcGVQbHVnaW5YMTEuaAppbmRleCBmZDFlODk5MGNkY2Q1MzUwOGFkYWJlMzZjMjdhMGMx
NDA0N2M2YzllLi4wZmU1MGExYTZhZTg2MmJmMDAyYWRmNjQ1MmNhZDA4Y2Y2ZmViMDcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luWDExLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL3gxMS9OZXRzY2FwZVBsdWdpblgxMS5oCkBAIC00NiwxOCArNDYsMTggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfk5ldHNjYXBlUGx1Z2luWDExKCk7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBOUFdpbmRvd1R5cGUgd2luZG93VHlwZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCogd2luZG93KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOUFNldFdp
bmRvd0NhbGxiYWNrU3RydWN0KiB3aW5kb3dTeXN0ZW1JbmZvKCkgb3ZlcnJpZGUgeyByZXR1cm4g
Jm1fc2V0V2luZG93Q2FsbGJhY2tTdHJ1Y3Q7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlE
aWRDaGFuZ2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaWJpbGl0eURpZENoYW5n
ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VFbnRlckV2ZW50KGNvbnN0IFdlYk1v
dXNlRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlTW91c2VMZWF2ZUV2
ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOworICAgIE5QV2luZG93VHlwZSB3
aW5kb3dUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCogd2luZG93KCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTlBTZXRXaW5kb3dDYWxsYmFja1N0cnVjdCogd2luZG93U3lzdGVtSW5mbygp
IG92ZXJyaWRlIHsgcmV0dXJuICZtX3NldFdpbmRvd0NhbGxiYWNrU3RydWN0OyB9CisgICAgdm9p
ZCBnZW9tZXRyeURpZENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaWJpbGl0eURpZENo
YW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlTW91
c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVX
aGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRs
ZU1vdXNlRW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9v
bCBoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOwor
ICAgIGJvb2wgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsKIAogICAgIE5ldHNjYXBl
UGx1Z2luJiBtX3BsdWdpbjsKICAgICBEaXNwbGF5KiBtX3BsdWdpbkRpc3BsYXkgeyBudWxscHRy
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0Rl
cHJlY2F0ZWRQREZQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5oCmluZGV4IGQ4YThlNGEyNDFlMTk3YmY2YjljZGM0NGI1
ZGVjYTFmNzU2MGM1OTUuLjUzMWMwYWQxMThkZmExM2FhMTY0OWQyODE4MDYyZjQzNWJjYjc1Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvRGVwcmVj
YXRlZFBERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvRGVwcmVjYXRlZFBERlBsdWdpbi5oCkBAIC0xMTUsNjMgKzExNSw2MyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFBERlBsdWdpbihXZWJGcmFtZSopOwogCiAgICAgLy8gUGx1Z2luIGZ1bmN0
aW9ucy4KLSAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgZGlydHlSZWN0SW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGUgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUNvbnRyb2xUaW50cyhXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNTbmFwc2hvdHRpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1
Z2luTGF5ZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92
ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHdhbnRzV2hlZWxFdmVu
dHMoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5
RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBs
dWdpblRvUm9vdFZpZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb250
ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGZyYW1lRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCByZXF1ZXN0SUQpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0Nh
bmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV2YWx1YXRlSmF2YVNjcmlw
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtV2lsbFNlbmRSZXF1ZXN0KHVpbnQ2NF90IHN0cmVhbUlELCBj
b25zdCBXZWJDb3JlOjpVUkwmIHJlcXVlc3RVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9u
c2VVUkwsIGludCByZXNwb25zZVN0YXR1cykgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0
TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRl
cnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1EaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hh
ciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1E
aWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHN0cmVhbUlEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3Ro
LCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUs
IGNvbnN0IFdURjo6U3RyaW5nJiBoZWFkZXJzLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVO
YW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZURh
dGEoY29uc3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIG1hbnVhbFN0cmVhbURpZEZhaWwoYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVl
bEV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZU1vdXNlRW50ZXJFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhbmRs
ZU1vdXNlTGVhdmVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktl
eWJvYXJkRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRWRpdGluZ0Nv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVzUGFnZVNjYWxlRmFj
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgTlBPYmplY3QqIHBsdWdpblNjcmlwdGFibGVOUE9iamVj
dCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93Rm9jdXND
aGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dBbmRWaWV3
RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB3aW5kb3dGcmFtZUluU2NyZWVu
Q29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdGcmFtZUluV2luZG93Q29v
cmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dWaXNpYmlsaXR5
Q2hhbmdlZChib29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHVpbnQ2NF90IHBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQot
ICAgIHZpcnR1YWwgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dChjb25zdCBTdHJpbmcmIHRleHRJ
bnB1dCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUo
TGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3Jv
bGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBvdmVycmlkZSB7IHJldHVybiBtX2hvcml6b250
YWxTY3JvbGxiYXIuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogdmVy
dGljYWxTY3JvbGxiYXIoKSBvdmVycmlkZSB7IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdl
dCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29s
KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkKGJvb2wpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3Ry
aW5nJiBmb3JtVmFsdWUpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9s
bEdyYW51bGFyaXR5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IGxpdmVSZXNvdXJjZURhdGEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbERldGF0Y2hSZW5kZXJlcigpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCBib29s
IGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3VtZW50PiBwZGZEb2N1
bWVudEZvclByaW50aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wZGZEb2N1bWVudDsg
fQotICAgIHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25zdCBvdmVy
cmlkZTsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgdGFy
Z2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2luZG93Q29v
cmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlOworICAgIGJvb2wgc3VwcG9ydHNTbmFwc2hv
dHRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgUmVmUHRyPFNoYXJl
YWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKKyAgICBQbGF0Zm9ybUxheWVyKiBwbHVn
aW5MYXllcigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZvaWQgZ2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNv
bnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkg
b3ZlcnJpZGU7CisgICAgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkgb3Zl
cnJpZGU7CisgICAgdm9pZCB2aXNpYmlsaXR5RGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlIHsgfQor
ICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0Nh
bmNlbGxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3Bv
bnNlU3RhdHVzKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRG
YWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZU1vdXNlRXZl
bnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlV2hlZWxF
dmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVNb3Vz
ZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFu
ZGxlTW91c2VMZWF2ZUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKKyAgICBi
b29sIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRl
OworICAgIGJvb2wgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jikg
b3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVFZGl0aW5nQ29tbWFuZChjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KSBvdmVycmlkZTsKKyAgICBib29sIGlz
RWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wg
aGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Rm9j
dXMoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgTlBPYmplY3QqIHBsdWdpblNjcmlwdGFibGVOUE9i
amVjdCgpIG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHdpbmRvd0ZvY3VzQ2hhbmdl
ZChib29sKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcykgb3Zl
cnJpZGUgeyB9CisgICAgdm9pZCB3aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChib29sKSBvdmVycmlk
ZSB7IH0KKyAgICB1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KKyAgICB2b2lkIHNlbmRDb21wbGV4VGV4dElucHV0
KGNvbnN0IFN0cmluZyYgdGV4dElucHV0KSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGUgeyB9CisgICAgV2ViQ29yZTo6
U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9ob3Jp
em9udGFsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7
IH0KKyAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sKSBvdmVycmlkZSB7
IH0KKyAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSBvdmVycmlkZSB7
IH0KKyAgICBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSkgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJl
Y3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdm9pZCB3aWxsRGV0YXRjaFJlbmRlcmVyKCkgb3ZlcnJpZGU7CisKKyAgICBib29sIGlz
QmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
ZmFsc2U7IH0KKworICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gcGRmRG9jdW1lbnRGb3JQcmlu
dGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGRmRG9jdW1lbnQ7IH0KKyAgICBOU09i
amVjdCAqYWNjZXNzaWJpbGl0eU9iamVjdCgpIGNvbnN0IG92ZXJyaWRlOworCisgICAgdW5zaWdu
ZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIG92ZXJyaWRlOworICAgIGJvb2wgZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpIG92ZXJyaWRlOwogCiAgICAgUERGU2VsZWN0aW9uICpuZXh0TWF0Y2hG
b3JTdHJpbmcoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEJPT0wgc2VhcmNoRm9yd2FyZCwgQk9PTCBj
YXNlU2Vuc2l0aXZlLCBCT09MIHdyYXBTZWFyY2gsIFBERlNlbGVjdGlvbiAqaW5pdGlhbFNlbGVj
dGlvbiwgQk9PTCBzdGFydEluU2VsZWN0aW9uKTsKIApAQCAtMTgwLDM5ICsxODAsMzkgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgZ2V0U2VsZWN0aW9uRm9yV29yZEF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgZXhpc3RpbmdTZWxlY3Rp
b25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEFsbG93TmF2aWdhdGlvbkZy
b21EcmFncygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgZnVuY3Rpb25zLgot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxDb3JuZXJSZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYSogZW5jbG9zaW5nU2Ny
b2xsYWJsZUFyZWEoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxh
YmxlT3JSdWJiZXJiYW5kYWJsZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzU2Nyb2xsYWJsZU9yUnViYmVyYmFuZGFibGVBbmNlc3RvcigpIG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgc2Nyb2xsYWJs
ZUFyZWFCb3VuZGluZ0JveChib29sKiA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6U2Nyb2xsT2Zmc2V0Jikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVTY3JvbGxiYXJSZWN0KFdlYkNv
cmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVNjcm9sbENvcm5lclJlY3QoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgbGFzdEtub3du
TW91c2VQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGFzdE1vdXNlUG9zaXRp
b25JblBsdWdpbkNvb3JkaW5hdGVzOyB9Ci0gICAgdmlydHVhbCBpbnQgc2Nyb2xsU2l6ZShXZWJD
b3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIGlzQWN0aXZlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU2Nyb2xs
Q29ybmVyVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBpbnQgc2Nyb2xsT2Zmc2V0KFdlYkNvcmU6OlNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbFBvc2l0aW9uIHNjcm9sbFBv
c2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxQb3Np
dGlvbiBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OlNjcm9sbFBvc2l0aW9uIG1heGltdW1TY3JvbGxQb3NpdGlvbigpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aXNpYmxlU2l6ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6
ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BkZkRvY3VtZW50U2l6
ZTsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOyB9
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsgfQotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTdXNwZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGZhbHNlOyB9IC8vIElmIHdlIHJldHVybiB0cnVlLCBTY3JvbGxBbmltYXRvck1h
YyB3aWxsIGtlZXAgY3ljbGluZyBhIHRpbWVyIGZvcmV2ZXIsIHdhaXRpbmcgZm9yIGEgZ29vZCB0
aW1lIHRvIGFuaW1hdGUuCi0gICAgdmlydHVhbCB2b2lkIHNjcm9sbGJhclN0eWxlQ2hhbmdlZChX
ZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IGNvbnZlcnRGcm9tU2Nyb2xsYmFyVG9Db250YWluaW5n
Vmlldyhjb25zdCBXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBz
Y3JvbGxiYXJSZWN0KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJl
Y3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0IFdlYkNvcmU6OlNj
cm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhcmVudFJlY3QpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydEZyb21TY3JvbGxiYXJU
b0NvbnRhaW5pbmdWaWV3KGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBzY3JvbGxiYXJQb2ludCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3VG9TY3JvbGxiYXIoY29u
c3QgV2ViQ29yZTo6U2Nyb2xsYmFyKiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBhcmVudFBv
aW50KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlc1Njcm9sbExheWVy
UG9zaXRpb25Pbk1haW5UaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0g
ICAgdmlydHVhbCBib29sIGZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZv
cm1hbmNlVGVzdGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFJlY3Qgc2Ny
b2xsQ29ybmVyUmVjdCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlNjcm9sbGFibGVB
cmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
aXNTY3JvbGxhYmxlT3JSdWJiZXJiYW5kYWJsZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBib29sIGhhc1Njcm9sbGFibGVPclJ1YmJlcmJhbmRhYmxlQW5jZXN0b3IoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CisgICAgV2ViQ29yZTo6SW50UmVjdCBzY3JvbGxhYmxlQXJlYUJv
dW5kaW5nQm94KGJvb2wqID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRT
Y3JvbGxPZmZzZXQoY29uc3QgV2ViQ29yZTo6U2Nyb2xsT2Zmc2V0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBpbnZhbGlkYXRlU2Nyb2xsYmFyUmVjdChXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlU2Nyb2xsQ29y
bmVyUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
SW50UG9pbnQgbGFzdEtub3duTW91c2VQb3NpdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fbGFzdE1vdXNlUG9zaXRpb25JblBsdWdpbkNvb3JkaW5hdGVzOyB9CisgICAgaW50IHNjcm9s
bFNpemUoV2ViQ29yZTo6U2Nyb2xsYmFyT3JpZW50YXRpb24pIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgaXNBY3RpdmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGlzU2Nyb2xsQ29ybmVy
VmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgaW50IHNjcm9s
bE9mZnNldChXZWJDb3JlOjpTY3JvbGxiYXJPcmllbnRhdGlvbikgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgV2ViQ29yZTo6U2Nyb2xsUG9zaXRpb24gc2Nyb2xsUG9zaXRpb24oKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBXZWJDb3JlOjpTY3JvbGxQb3NpdGlvbiBtaW5pbXVtU2Nyb2xsUG9zaXRpb24oKSBj
b25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpTY3JvbGxQb3NpdGlvbiBtYXhpbXVtU2Nyb2xs
UG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpc2libGVT
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zaXplOyB9CisgICAgV2ViQ29yZTo6SW50
U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3BkZkRvY3VtZW50
U2l6ZTsgfQorICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKTsgfQorICAg
IFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpOyB9CisgICAgYm9vbCBzaG91bGRTdXNw
ZW5kU2Nyb2xsQW5pbWF0aW9ucygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9IC8v
IElmIHdlIHJldHVybiB0cnVlLCBTY3JvbGxBbmltYXRvck1hYyB3aWxsIGtlZXAgY3ljbGluZyBh
IHRpbWVyIGZvcmV2ZXIsIHdhaXRpbmcgZm9yIGEgZ29vZCB0aW1lIHRvIGFuaW1hdGUuCisgICAg
dm9pZCBzY3JvbGxiYXJTdHlsZUNoYW5nZWQoV2ViQ29yZTo6U2Nyb2xsYmFyU3R5bGUsIGJvb2wg
Zm9yY2VVcGRhdGUpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFJlY3QgY29udmVydEZyb21T
Y3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbGJhclJlY3QpIGNvbnN0IG92ZXJyaWRlOworICAgIFdl
YkNvcmU6OkludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFyKGNvbnN0
IFdlYkNvcmU6OlNjcm9sbGJhciosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHBhcmVudFJlY3Qp
IGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFBvaW50IGNvbnZlcnRGcm9tU2Nyb2xs
YmFyVG9Db250YWluaW5nVmlldyhjb25zdCBXZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgc2Nyb2xsYmFyUG9pbnQpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNv
cmU6OkludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25zdCBX
ZWJDb3JlOjpTY3JvbGxiYXIqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcGFyZW50UG9pbnQp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgdXBkYXRlc1Njcm9sbExheWVyUG9zaXRpb25Pbk1h
aW5UaHJlYWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBmb3Jj
ZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIC8vIFBERlBsdWdpbiBmdW5jdGlvbnMuCiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL1BERlBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW4uaAppbmRleCA3ZjZmNGZlZTlhMmIyODk2NjZhYzg2MTkxN2JkMGQ4ZDcw
NzJkODM1Li5jMjYzOWU4MTQyZTI0Y2E3ZmVmNDIzNDFlYzhjYmY1NGQyNzkwZWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKQEAg
LTEzNCw2NCArMTM0LDY0IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUERGUGx1Z2luKFdlYkZy
YW1lKik7CiAKICAgICAvLyBQbHVnaW4gZnVuY3Rpb25zLgotICAgIHZpcnR1YWwgYm9vbCBpbml0
aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVz
dHJveSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3RJbldpbmRvd0Nvb3Jk
aW5hdGVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZSB7IHJldHVy
biBudWxscHRyOyB9Ci0gICAgdmlydHVhbCBib29sIGlzVHJhbnNwYXJlbnQoKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbWV0cnlEaWRDaGFu
Z2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYgcGx1Z2luVG9S
b290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2Nh
bGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdmlz
aWJpbGl0eURpZENoYW5nZShib29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZnJh
bWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2Vs
bGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVS
TCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpV
UkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2Rp
ZmllZFRpbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHN0cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBi
eXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZp
bmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBXZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVp
bnQzMl90IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29u
c3QgV1RGOjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IG1hbnVhbFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgbWFudWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZl
bnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVN
b3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFdlYk1v
dXNlRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlS2V5Ym9hcmRFdmVu
dChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jikgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5k
TmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzRWRpdGluZ0NvbW1hbmRFbmFibGVkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIE5QT2Jq
ZWN0KiBwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRy
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHdpbmRvd0ZvY3VzQ2hhbmdlZChib29sKSBvdmVycmlkZSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzKSBvdmVycmlkZSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgd2luZG93VmlzaWJpbGl0eUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGUg
eyB9Ci0gICAgdmlydHVhbCB1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2VuZENv
bXBsZXhUZXh0SW5wdXQoY29uc3QgU3RyaW5nJiB0ZXh0SW5wdXQpIG92ZXJyaWRlIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92ZXJy
aWRlIHsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xs
YmFyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIHZpcnR1YWwgV2ViQ29yZTo6
U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92
ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCkgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcm
IGZvcm1WYWx1ZSkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3Jh
bnVsYXJpdHkpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBsaXZlUmVzb3VyY2VEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHJlcXVpcmVzVW5pZmllZFNj
YWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVh
bCBib29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1YWwgUmV0YWluUHRyPFBERkRvY3VtZW50PiBw
ZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wZGZEb2N1
bWVudDsgfQotICAgIHZpcnR1YWwgTlNPYmplY3QgKmFjY2Vzc2liaWxpdHlPYmplY3QoKSBjb25z
dCBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25z
dCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0LCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRlc3Ryb3koKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdEluV2lu
ZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQ29udHJvbFRpbnRzKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgc3VwcG9ydHNT
bmFwc2hvdHRpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIFJlZlB0
cjxTaGFyZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1MYXll
ciogcGx1Z2luTGF5ZXIoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgYm9vbCBp
c1RyYW5zcGFyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIHdhbnRz
V2hlZWxFdmVudHMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgZ2VvbWV0
cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgcGx1Z2luU2l6ZSwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIGNvbnN0IFdlYkNvcmU6OkFmZmluZVRyYW5zZm9ybSYg
cGx1Z2luVG9Sb290Vmlld1RyYW5zZm9ybSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250ZW50c1Nj
YWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB2aXNpYmlsaXR5
RGlkQ2hhbmdlKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2Fk
aW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmcmFtZURpZEZhaWwo
dWludDY0X3QgcmVxdWVzdElELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcm
IHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0
X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29y
ZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZSB7IH0KKyAg
ICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3Qg
V2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWludDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJf
dCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIq
IGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExv
YWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkRmFp
bCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXNDYW5jZWxsZWQpIG92ZXJyaWRlOworICAgIHZv
aWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVz
cG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGlt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVy
cywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBt
YW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRGYWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVy
cmlkZTsKKyAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92
ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50Jikg
b3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGhhbmRsZU1vdXNlRW50ZXJFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVNb3VzZUxl
YXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxl
Q29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9v
bCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFuZGxlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0VkaXRpbmdDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIE5QT2JqZWN0KiBwbHVnaW5T
Y3JpcHRhYmxlTlBPYmplY3QoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdm9p
ZCB3aW5kb3dGb2N1c0NoYW5nZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCB3aW5kb3dB
bmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB3aW5kb3dGcmFtZUlu
U2NyZWVuQ29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdGcmFtZUluV2lu
ZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgd2luZG93VmlzaWJpbGl0eUNo
YW5nZWQoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJ
bnB1dElkZW50aWZpZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CisgICAgdm9pZCBz
ZW5kQ29tcGxleFRleHRJbnB1dChjb25zdCBTdHJpbmcmIHRleHRJbnB1dCkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92ZXJyaWRl
IHsgfQorICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIG92ZXJy
aWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2Fs
U2Nyb2xsYmFyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIHZvaWQgc3RvcmFn
ZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIHZvaWQgcHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlIHsgfQorICAgIGJvb2wgZ2V0Rm9y
bVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Ny
b2xsR3JhbnVsYXJpdHkpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwor
CisgICAgYm9vbCBoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBib29sIHJlcXVpcmVzVW5pZmllZFNjYWxlRmFjdG9yKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgYm9vbCBpc0JlaW5nQXN5bmNocm9ub3Vz
bHlJbml0aWFsaXplZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICBS
ZXRhaW5QdHI8UERGRG9jdW1lbnQ+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3BkZkRvY3VtZW50OyB9CisgICAgTlNPYmplY3QgKmFjY2Vzc2liaWxp
dHlPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKKworICAgIHVuc2lnbmVkIGNvdW50RmluZE1hdGNo
ZXMoY29uc3QgU3RyaW5nJiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KSBvdmVycmlkZTsKKyAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIFdlYkNvcmU6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSBv
dmVycmlkZTsKIAogICAgIFBERlNlbGVjdGlvbiAqbmV4dE1hdGNoRm9yU3RyaW5nKGNvbnN0IFN0
cmluZyYgdGFyZ2V0LCBCT09MIHNlYXJjaEZvcndhcmQsIEJPT0wgY2FzZVNlbnNpdGl2ZSwgQk9P
TCB3cmFwU2VhcmNoLCBQREZTZWxlY3Rpb24gKmluaXRpYWxTZWxlY3Rpb24sIEJPT0wgc3RhcnRJ
blNlbGVjdGlvbik7CiAKQEAgLTIwMCwxMCArMjAwLDEwIEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBj
b25zdCBvdmVycmlkZTsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQWxsb3dTY3JpcHRpbmcoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c0F1dG9TdGFy
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q3JlYXRlVHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRBbGxvd1NjcmlwdGluZygpIG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJhZ3MoKSBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBzaG91bGRBbHdheXNBdXRvU3RhcnQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBjYW5DcmVhdGVUcmFu
c2llbnRQYWludGluZ1NuYXBzaG90KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIC8vIFBERlBsdWdpbiBmdW5jdGlvbnMuCiAgICAgdm9pZCBwZGZEb2N1bWVudERpZExv
YWQoKTsKQEAgLTI2MiwxMSArMjYyLDExIEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2V0Vmlz
aWJsZShib29sLCBBbmltYXRlVmlzaWJpbGl0eVRyYW5zaXRpb24pOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFdlYkNvcmU6OlBhZ2VP
dmVybGF5Jikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRvUGFnZShX
ZWJDb3JlOjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZE1vdmVUb1BhZ2UoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChXZWJDb3Jl
OjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBtb3Vz
ZUV2ZW50KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgcGFnZU92ZXJsYXlEZXN0cm95ZWQoV2Vi
Q29yZTo6UGFnZU92ZXJsYXkmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCB3aWxsTW92ZVRvUGFn
ZShXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKKyAgICAg
ICAgdm9pZCBkaWRNb3ZlVG9QYWdlKFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFn
ZSopIG92ZXJyaWRlOworICAgICAgICB2b2lkIGRyYXdSZWN0KFdlYkNvcmU6OlBhZ2VPdmVybGF5
JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0KSBvdmVycmlkZTsKKyAgICAgICAgYm9vbCBtb3VzZUV2ZW50KFdlYkNvcmU6OlBhZ2VP
dmVybGF5JiwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CiAK
ICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBmcmFtZUluUm9vdFZpZXcoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5B
bm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkFubm90YXRpb24uaAppbmRleCA4MzY3MGMxYzgwNTQ5MzRjZGZhMjczN2U3YzBiNDM4YzAw
YWJlZDAzLi42M2E0OGFjNTYwNmI3NDRhOTUxMWEyN2U2NjJjODE4MDUyZmViMTNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkFubm90YXRpb24uaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUERGUGx1Z2luQW5ub3RhdGlvbkV2ZW50TGlzdGVuZXIoYW5u
b3RhdGlvbikpOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXMgPT0g
Jmxpc3RlbmVyOyB9CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikgb3ZlcnJpZGUgeyByZXR1cm4gdGhpcyA9PSAmbGlzdGVuZXI7IH0KIAogICAg
ICAgICB2b2lkIHNldEFubm90YXRpb24oUERGUGx1Z2luQW5ub3RhdGlvbiogYW5ub3RhdGlvbikg
eyBtX2Fubm90YXRpb24gPSBhbm5vdGF0aW9uOyB9CiAKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2
ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92
ZXJyaWRlOworICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwogCiAgICAgICAgIFBERlBsdWdp
bkFubm90YXRpb24qIG1fYW5ub3RhdGlvbjsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFu
bm90YXRpb24uaAppbmRleCBhMzdhZmNlMDg1NDc4NTE5MGY1ZGRkODQ0ZDU5ZmE4N2Q2MTc4NDIy
Li5kOTQzZjcyNzMxZGViYzA4NzQxZjViNjY1OGRiM2RiYTUwNTQ2MTg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbkNob2ljZUFubm90YXRpb24uaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBQREZQbHVnaW5D
aG9pY2VBbm5vdGF0aW9uIDogcHVibGljIFBERlBsdWdpbkFubm90YXRpb24gewogcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8UERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbj4gY3JlYXRlKFBERkFubm90
YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOwogCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdlb21ldHJ5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1p
dCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGNvbW1pdCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFBERlBsdWdpbkNob2ljZUFu
bm90YXRpb24oUERGQW5ub3RhdGlvbiAqYW5ub3RhdGlvbiwgUERGTGF5ZXJDb250cm9sbGVyICpw
ZGZMYXllckNvbnRyb2xsZXIsIFBERlBsdWdpbiogcGx1Z2luKQpAQCAtNTEsNyArNTEsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJpZGU7
CiAKICAgICBQREZBbm5vdGF0aW9uQ2hvaWNlV2lkZ2V0ICpjaG9pY2VBbm5vdGF0aW9uKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UERGQW5ub3RhdGlvbkNob2ljZVdpZGdldCAqPihhbm5vdGF0aW9u
KCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9QREZQbHVnaW5QYXNzd29yZEZpZWxkLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaAppbmRleCAzYWNkZTliZGE5Zjky
MTE2YmIwNDU0MjUxOGI5NDUyMGU5NGQ3MmUyLi4xNjMyNTBhZGJjNTgwNThlZDNiMDZmYjViMDk1
YjA2MTRhMWZlMjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblBhc3N3b3JkRmllbGQuaApAQCAtMzcsNyArMzcs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQREZQbHVnaW5QYXNzd29yZEZpZWxkPiBjcmVh
dGUoUERGTGF5ZXJDb250cm9sbGVyICosIFBERlBsdWdpbiopOwogICAgIHZpcnR1YWwgflBERlBs
dWdpblBhc3N3b3JkRmllbGQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeSgp
IG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICBQREZQbHVnaW5QYXNzd29yZEZpZWxkKFBERkxheWVyQ29udHJvbGxlciAqcGRmTGF5
ZXJDb250cm9sbGVyLCBQREZQbHVnaW4qIHBsdWdpbikKQEAgLTQ1LDkgKzQ1LDkgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1l
bnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50KCkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpFbGVtZW50PiBjcmVhdGVBbm5vdGF0aW9uRWxlbWVudCgpIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpblRleHRBbm5vdGF0aW9uLmgKaW5kZXggYWZk
NGJjYzVmMjA3NTVlOTM5YTA4YzNlZTViNjk2YWQwZGE0NTEwOC4uOTlhNGU0YTc5MWY0MjNhNTY1
Zjg0MTE1YjFiZGJjM2Q4ZmZkNzA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5UZXh0QW5ub3RhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luVGV4dEFubm90YXRpb24uaApA
QCAtNDUsOCArNDUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQREZQbHVnaW5UZXh0QW5u
b3RhdGlvbj4gY3JlYXRlKFBERkFubm90YXRpb24gKiwgUERGTGF5ZXJDb250cm9sbGVyICosIFBE
RlBsdWdpbiopOwogICAgIHZpcnR1YWwgflBERlBsdWdpblRleHRBbm5vdGF0aW9uKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVHZW9tZXRyeSgpIG92ZXJyaWRl
OworICAgIHZvaWQgY29tbWl0KCkgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBQREZQbHVn
aW5UZXh0QW5ub3RhdGlvbihQREZBbm5vdGF0aW9uICphbm5vdGF0aW9uLCBQREZMYXllckNvbnRy
b2xsZXIgKnBkZkxheWVyQ29udHJvbGxlciwgUERGUGx1Z2luKiBwbHVnaW4pCkBAIC01NCwxMSAr
NTQsMTEgQEAgcHJvdGVjdGVkOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6RWxlbWVudD4gY3JlYXRlQW5ub3RhdGlvbkVsZW1lbnQoKSBvdmVycmlkZTsK
KyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkVsZW1lbnQ+IGNyZWF0ZUFubm90YXRpb25FbGVtZW50
KCkgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHZhbHVlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFdlYkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBoYW5kbGVFdmVudChXZWJDb3JlOjpFdmVudCopIG92ZXJyaWRlOwogCiAgICAgUERGQW5u
b3RhdGlvblRleHRXaWRnZXQgKnRleHRBbm5vdGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UERGQW5ub3RhdGlvblRleHRXaWRnZXQgKj4oYW5ub3RhdGlvbigpKTsgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZjY5MzIyYWNlMDkyNDBiMTI1OWM2MmNjNzgzYTBhYjYw
ZmQ1ODhmZC4uZmVkNjA1YTJiYzVkOTJlOTI0NzI1ZDNmNmIxNGE3MWM0OTVhZDEyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmgKQEAgLTY0LDEyICs2NCwxMiBAQCBwcml2YXRlOgogICAgIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciosIHVpbnQ2
NF90IHBsdWdpblByb2Nlc3NUb2tlbiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24p
OwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3Nh
Z2VFbmNvZGVyPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNv
bm5lY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5cGUgbG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsg
cmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OldlYjsgfQotICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNz
VHlwZSByZW1vdGVQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5
cGU6OlBsdWdpbjsgfQorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENs
b3NlKElQQzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVjZWl2ZUludmFs
aWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsK
KyAgICBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVy
biBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVBy
b2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6UGx1Z2luOyB9
CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkUmVjZWl2ZVBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNv
ZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgKaW5kZXggYTAyMzc2NmY2
ZjYwMjE4MjcxNGFkNDhiYTI1ZTNhNDgyZDBlNTk3Yy4uNjQ3NWZkZDhkNTZhYWFkNDRkZjQ3MTEw
NzczNjM1YTJlMmRjNGRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaApA
QCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcigpOwogCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2
ZXIuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQodWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2Vu
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aAppbmRleCBlYjVlZDE4MzZjOTJlOGQ4OTA1OTMwZTExZjQ0ZWIwMGUwNTY0YmVmLi43MmRhOTdh
MjFmMzYwYTVkMDMwZjMyODdjODFkNWZlOTA5MjM4MzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtNzIsODMgKzcyLDgzIEBAIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgUGx1Z2luUHJveHkodWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rv
a2VuLCBib29sIGlzUmVzdGFydGVkUHJvY2Vzcyk7CiAKICAgICAvLyBQbHVnaW4KLSAgICB2aXJ0
dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJikgb3ZlcnJpZGU7CisgICAgYm9v
bCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKSBvdmVycmlkZTsKICAgICBib29sIGluaXRp
YWxpemVTeW5jaHJvbm91c2x5KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRl
c3Ryb3koKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBzdXBwb3J0c1NuYXBzaG90dGluZygpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNuYXBzaG90KCkgb3ZlcnJpZGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbHVnaW5MYXllcigpIG92ZXJyaWRlOworICAgIFBs
YXRmb3JtTGF5ZXIqIHBsdWdpbkxheWVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFs
IGJvb2wgaXNUcmFuc3BhcmVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB3YW50c1do
ZWVsRXZlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5RGlkQ2hhbmdl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHBsdWdpblNpemUsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGNsaXBSZWN0LCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mIHBsdWdpblRvUm9v
dFZpZXdUcmFuc2Zvcm0pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB2aXNpYmlsaXR5RGlk
Q2hhbmdlKGJvb2wgaXNWaXNpYmxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVE
aWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGZyYW1lRGlkRmFpbCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgd2FzQ2FuY2VsbGVk
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRXZhbHVhdGVKYXZhU2NyaXB0KHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdl
YkNvcmU6OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwg
aW50IHJlc3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtRGlk
UmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBXZWJDb3JlOjpVUkwmIHJl
c3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90IGxhc3RNb2RpZmllZFRp
bWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgaGVhZGVycywgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0
cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywg
aW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbURpZEZpbmlzaExv
YWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1EaWRGYWlsKHVpbnQ2NF90IHN0cmVhbUlELCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVhbFN0cmVhbURpZFJlY2VpdmVSZXNwb25zZShjb25zdCBX
ZWJDb3JlOjpVUkwmIHJlc3BvbnNlVVJMLCB1aW50MzJfdCBzdHJlYW1MZW5ndGgsIHVpbnQzMl90
IGxhc3RNb2RpZmllZFRpbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgV1RG
OjpTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZU5hbWUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25zdCBj
aGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1hbnVh
bFN0cmVhbURpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbWFu
dWFsU3RyZWFtRGlkRmFpbChib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1RyYW5zcGFyZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBnZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBwbHVnaW5TaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2Vi
Q29yZTo6QWZmaW5lVHJhbnNmb3JtJiBwbHVnaW5Ub1Jvb3RWaWV3VHJhbnNmb3JtKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHZpc2liaWxpdHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUpIG92ZXJyaWRl
OworICAgIHZvaWQgZnJhbWVEaWRGaW5pc2hMb2FkaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBmcmFtZURpZEZhaWwodWludDY0X3QgcmVxdWVzdElELCBib29sIHdh
c0NhbmNlbGxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRFdmFsdWF0ZUphdmFTY3JpcHQodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdHJlYW1XaWxsU2VuZFJlcXVlc3QodWludDY0X3Qgc3RyZWFtSUQsIGNvbnN0IFdlYkNvcmU6
OlVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgaW50IHJl
c3BvbnNlU3RhdHVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cmVhbURpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgV2ViQ29yZTo6VVJMJiByZXNwb25zZVVSTCwgdWlu
dDMyX3Qgc3RyZWFtTGVuZ3RoLCB1aW50MzJfdCBsYXN0TW9kaWZpZWRUaW1lLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGhlYWRlcnMsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZU5hbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc3RyZWFtRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3Qgc3RyZWFtSUQsIGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RyZWFtRGlkRmFpbCh1aW50NjRfdCBzdHJlYW1JRCwgYm9vbCB3YXND
YW5jZWxsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgbWFudWFsU3RyZWFtRGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlVSTCYgcmVzcG9uc2VVUkwsIHVpbnQzMl90IHN0cmVhbUxlbmd0
aCwgdWludDMyX3QgbGFzdE1vZGlmaWVkVGltZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBXVEY6OlN0cmluZyYgaGVhZGVycywgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
TmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJl
YW1EaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBtYW51YWxTdHJlYW1EaWRG
YWlsKGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
aGFuZGxlTW91c2VFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCBib29sIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViV2hlZWxFdmVudCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUVudGVyRXZlbnQoY29uc3QgV2ViTW91c2VF
dmVudCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVNb3VzZUxlYXZlRXZlbnQo
Y29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVD
b250ZXh0TWVudUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBoYW5kbGVFZGl0aW5nQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNF
ZGl0aW5nQ29tbWFuZEVuYWJsZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEFsbG93U2NyaXB0aW5nKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBbGxvd05hdmlnYXRpb25Gcm9tRHJh
Z3MoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaGFuZGxlTW91c2VFdmVu
dChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5kbGVXaGVlbEV2
ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKKyAgICBib29sIGhhbmRsZU1vdXNl
RW50ZXJFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBoYW5k
bGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpIG92ZXJyaWRlOworICAgIGJv
b2wgaGFuZGxlQ29udGV4dE1lbnVFdmVudChjb25zdCBXZWJNb3VzZUV2ZW50Jikgb3ZlcnJpZGU7
CisgICAgYm9vbCBoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKSBv
dmVycmlkZTsKKyAgICB2b2lkIHNldEZvY3VzKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgaGFu
ZGxlRWRpdGluZ0NvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5n
JiBhcmd1bWVudCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VkaXRpbmdDb21tYW5kRW5hYmxlZChj
b25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEFsbG93
U2NyaXB0aW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgc2hvdWxkQWxs
b3dOYXZpZ2F0aW9uRnJvbURyYWdzKCkgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAK
LSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCByZXF1aXJlc1VuaWZpZWRTY2FsZUZhY3RvcigpIGNvbnN0IG92
ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlc1BhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgcmVxdWlyZXNVbmlmaWVkU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIE5QT2JqZWN0KiBwbHVnaW5TY3JpcHRhYmxlTlBPYmplY3QoKSBv
dmVycmlkZTsKKyAgICBOUE9iamVjdCogcGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KCkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgd2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dWaXNpYmlsaXR5Q2hhbmdlZChib29sKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHdpbmRvd0ZvY3VzQ2hhbmdlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lk
IHdpbmRvd1Zpc2liaWxpdHlDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCi0gICAgdmlydHVhbCB2b2lkIHdpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcykgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllcigp
IGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kQ29tcGxleFRleHRJbnB1dChj
b25zdCBTdHJpbmcmIHRleHRJbnB1dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldExh
eWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aW5k
b3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiB3aW5kb3dGcmFt
ZUluU2NyZWVuQ29vcmRpbmF0ZXMsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZpZXdGcmFtZUlu
V2luZG93Q29vcmRpbmF0ZXMpIG92ZXJyaWRlOworICAgIHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhU
ZXh0SW5wdXRJZGVudGlmaWVyKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZW5kQ29tcGxl
eFRleHRJbnB1dChjb25zdCBTdHJpbmcmIHRleHRJbnB1dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChi
b29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3Jv
bGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpIG92
ZXJyaWRlOworICAgIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRl
OworICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwor
ICAgIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRG
b3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpIG92ZXJyaWRlOworICAgIGJvb2wgaGFuZGxlU2Ny
b2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkp
IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigp
IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnRGaW5kTWF0Y2hlcyhjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQpIG92ZXJyaWRlICB7IHJldHVy
biAwOyB9Ci0gICAgdmlydHVhbCBib29sIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6RmluZE9wdGlvbnMsIHVuc2lnbmVkKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHVuc2lnbmVkIGNvdW50RmluZE1hdGNoZXMoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6RmluZE9w
dGlvbnMsIHVuc2lnbmVkKSBvdmVycmlkZSAgeyByZXR1cm4gMDsgfQorICAgIGJvb2wgZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpGaW5kT3B0aW9ucywgdW5zaWduZWQpIG92ZXJy
aWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IGNv
bnZlcnRUb1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7
CisgICAgV2ViQ29yZTo6SW50UG9pbnQgY29udmVydFRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbGl2ZVJlc291cmNlRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU3RyaW5nIGdl
dFNlbGVjdGlvblN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAg
ICAgU3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGJvb2wgZXhp
c3RpbmdTZWxlY3Rpb25Db250YWluc1BvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlIGF1ZGlvSGFyZHdh
cmVBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVB
Y3Rpdml0eVR5cGUgYXVkaW9IYXJkd2FyZUFjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5k
aWYKIAogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDdiZjRlZjI0Mzk1ZDY4MTkz
OWNkM2Y4OTZhM2M1OWM0Zjk1ZGM4NzguLjMwNjhmMDViMmZhOTk0ZmM5YTVkMmI2YzdkMTdmNzIw
YjVjZTk2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaApAQCAtMTE2LDcgKzExNiw3IEBAIHB1YmxpYzoKICAgICBib29sIHBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAgICAg
U3RyaW5nIGdldFNlbGVjdGlvbkZvcldvcmRBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKSBjb25zdDsKICAgICBib29sIGV4aXN0aW5nU2VsZWN0aW9uQ29udGFpbnNQb2ludChjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpBdWRp
b0hhcmR3YXJlQWN0aXZpdHlUeXBlIGF1ZGlvSGFyZHdhcmVBY3Rpdml0eSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgYXVkaW9IYXJkd2Fy
ZUFjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgUGx1Z2luVmlldyhQ
YXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50PiwgUGFzc1JlZlB0cjxQbHVnaW4+
LCBjb25zdCBQbHVnaW46OlBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwpAQCAtMTUzLDkwICsxNTMs
OTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlCiAjaWYgUExB
VEZPUk0oQ09DT0EpCi0gICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IG92ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmpl
Y3QoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRGb3JtVmFsdWUoU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNjcm9s
bChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9s
bGJhcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB3YW50c1doZWVsRXZlbnRz
KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEFsd2F5c0F1dG9TdGFydCgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQ
bHVnaW4oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQWxsb3dOYXZpZ2F0aW9u
RnJvbURyYWdzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZE5vdEFk
ZExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhdGNoUmVu
ZGVyZXIoKSBvdmVycmlkZTsKKyAgICBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoSlNDOjpK
U0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOworICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJikgb3ZlcnJpZGU7
CisgICAgYm9vbCBzY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3Jv
bGxHcmFudWxhcml0eSkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9u
dGFsU2Nyb2xsYmFyKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhcigpIG92ZXJyaWRlOworICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cygpIG92ZXJy
aWRlOworICAgIGJvb2wgc2hvdWxkQWx3YXlzQXV0b1N0YXJ0KCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBiZWdpblNuYXBzaG90dGluZ1J1bm5pbmdQbHVnaW4oKSBvdmVycmlkZTsKKyAgICBi
b29sIHNob3VsZEFsbG93TmF2aWdhdGlvbkZyb21EcmFncygpIGNvbnN0IG92ZXJyaWRlOworICAg
IGJvb2wgc2hvdWxkTm90QWRkTGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxE
ZXRhdGNoUmVuZGVyZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6OldpZGdldAotICAg
IHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9jdXMoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGZyYW1lUmVj
dHNDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChXZWJDb3Jl
OjpTY3JvbGxWaWV3Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFdl
YkNvcmU6OkV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVdpZGdldChX
ZWJDb3JlOjpXaWRnZXROb3RpZmljYXRpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
aG93KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGUoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgdHJhbnNmb3Jtc0FmZmVjdEZyYW1lUmVjdCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBjbGlwUmVjdENoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRGb2N1cyhib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGZyYW1lUmVjdHND
aGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQYXJlbnQoV2ViQ29yZTo6U2Nyb2xsVmll
dyopIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6RXZlbnQqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIG5vdGlmeVdpZGdldChXZWJDb3JlOjpXaWRnZXROb3RpZmljYXRpb24p
IG92ZXJyaWRlOworICAgIHZvaWQgc2hvdygpIG92ZXJyaWRlOworICAgIHZvaWQgaGlkZSgpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0UGFyZW50VmlzaWJsZShib29sKSBvdmVycmlkZTsKKyAgICBi
b29sIHRyYW5zZm9ybXNBZmZlY3RGcmFtZVJlY3QoKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsaXBS
ZWN0Q2hhbmdlZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gV2ViQ29yZTo6TWVkaWFDYW5TdGFydExp
c3RlbmVyCi0gICAgdmlydHVhbCB2b2lkIG1lZGlhQ2FuU3RhcnQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIG1lZGlhQ2FuU3RhcnQoKSBvdmVycmlkZTsKIAogICAgIC8vIFdlYkNvcmU6Ok1lZGlhUHJv
ZHVjZXIKLSAgICB2aXJ0dWFsIE1lZGlhUHJvZHVjZXI6Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0
YXRlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wbHVnaW5Jc1BsYXlpbmdBdWRpbyA/IE1l
ZGlhUHJvZHVjZXI6OklzUGxheWluZ0F1ZGlvIDogTWVkaWFQcm9kdWNlcjo6SXNOb3RQbGF5aW5n
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7
CisgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1lZGlhU3RhdGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3BsdWdpbklzUGxheWluZ0F1ZGlvID8gTWVkaWFQcm9kdWNlcjo6
SXNQbGF5aW5nQXVkaW8gOiBNZWRpYVByb2R1Y2VyOjpJc05vdFBsYXlpbmc7IH0KKyAgICB2b2lk
IHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBQbHVnaW5Db250
cm9sbGVyCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBsb2FkVVJMKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5n
JiBtZXRob2QsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRhcmdldCwg
Y29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzLCBjb25zdCBWZWN0b3I8
dWludDhfdD4mIGh0dHBCb2R5LCBib29sIGFsbG93UG9wdXBzKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2FuY2VsU3RyZWFtTG9hZCh1aW50NjRfdCBzdHJlYW1JRCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlU3RyZWFtTG9hZCh1aW50NjRfdCBzdHJlYW1JRCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbE1hbnVhbFN0cmVhbUxvYWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGludmFsaWRhdGUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OworICAgIFN0cmluZyB1c2VyQWdlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRVUkwodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFw
JiBoZWFkZXJGaWVsZHMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaHR0cEJvZHksIGJvb2wgYWxs
b3dQb3B1cHMpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsU3RyZWFtTG9hZCh1aW50NjRfdCBz
dHJlYW1JRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb250aW51ZVN0cmVhbUxvYWQodWludDY0X3Qg
c3RyZWFtSUQpIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsTWFudWFsU3RyZWFtTG9hZCgpIG92
ZXJyaWRlOwogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHZpcnR1YWwgTlBP
YmplY3QqIHdpbmRvd1NjcmlwdE5QT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOUE9i
amVjdCogcGx1Z2luRWxlbWVudE5QT2JqZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGV2YWx1YXRlKE5QT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBzY3JpcHRTdHJpbmcsIE5QVmFyaWFu
dCogcmVzdWx0LCBib29sIGFsbG93UG9wdXBzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UGx1Z2luSXNQbGF5aW5nQXVkaW8oYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGlzTXV0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBOUE9iamVjdCogd2luZG93U2NyaXB0TlBP
YmplY3QoKSBvdmVycmlkZTsKKyAgICBOUE9iamVjdCogcGx1Z2luRWxlbWVudE5QT2JqZWN0KCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBldmFsdWF0ZShOUE9iamVjdCosIGNvbnN0IFN0cmluZyYgc2Ny
aXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCwgYm9vbCBhbGxvd1BvcHVwcykgb3ZlcnJpZGU7
CisgICAgdm9pZCBzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyhib29sKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzTXV0ZWQoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHBsdWdpblByb2Nlc3NDcmFzaGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdGF0
dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgaXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0Ny
YXNoZWQoKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0dWFsIHZvaWQg
cGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZChib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2lu
ZG93SGFzRm9jdXMpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wbGV4VGV4dElu
cHV0U3RhdGUoUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmIGNvbXBvc2l0aW5nUmVuZGVyU2VydmVy
UG9ydCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdl
ZChib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0Q29tcGxleFRleHRJbnB1dFN0YXRlKFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSkg
b3ZlcnJpZGU7CisgICAgY29uc3QgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCYgY29tcG9zaXRpbmdS
ZW5kZXJTZXJ2ZXJQb3J0KCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIGZsb2F0IGNv
bnRlbnRzU2NhbGVGYWN0b3IoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBwcm94aWVz
Rm9yVVJMKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZv
KGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmlu
ZyYgcGFzc3dvcmQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29s
IGFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBy
b3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgZmxvYXQgY29u
dGVudHNTY2FsZUZhY3RvcigpIG92ZXJyaWRlOworICAgIFN0cmluZyBwcm94aWVzRm9yVVJMKGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIFN0cmluZyBjb29raWVzRm9yVVJMKGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29va2llc0ZvclVSTChjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIG92ZXJyaWRlOworICAgIGJv
b2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYs
IFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIG92ZXJyaWRlOworICAgIGJvb2wg
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29s
IGFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBib29sIGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRl
bGF5RW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcHJvdGVjdFBsdWdpbkZyb21E
ZXN0cnVjdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3Ry
dWN0aW9uKCkgb3ZlcnJpZGU7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCi0gICAgdmly
dHVhbCB1aW50NjRfdCBjcmVhdGVQbHVnaW5Db250YWluZXIoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50
NjRfdCB3aW5kb3dJRCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2lu
VmlzaWJpbGl0eURpZENoYW5nZShib29sIGlzVmlzaWJsZSwgdWludDY0X3Qgd2luZG93SUQpIG92
ZXJyaWRlOworICAgIHVpbnQ2NF90IGNyZWF0ZVBsdWdpbkNvbnRhaW5lcigpIG92ZXJyaWRlOwor
ICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50
NjRfdCB3aW5kb3dJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aW5kb3dlZFBsdWdpblZpc2liaWxp
dHlEaWRDaGFuZ2UoYm9vbCBpc1Zpc2libGUsIHVpbnQ2NF90IHdpbmRvd0lEKSBvdmVycmlkZTsK
ICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIG92ZXJyaWRl
OworICAgIHZvaWQgZGlkSW5pdGlhbGl6ZVBsdWdpbigpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIG92ZXJyaWRlOwogICAgIHZvaWQgZGVzdHJveVBsdWdp
bkFuZFJlc2V0KCk7CiAKICAgICAvLyBXZWJGcmFtZTo6TG9hZExpc3RlbmVyCi0gICAgdmlydHVh
bCB2b2lkIGRpZEZpbmlzaExvYWQoV2ViRnJhbWUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWQoV2ViRnJhbWUqLCBib29sIHdhc0NhbmNlbGxlZCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRG
YWlsTG9hZChXZWJGcmFtZSosIGJvb2wgd2FzQ2FuY2VsbGVkKSBvdmVycmlkZTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJFdmVudD4gY3JlYXRlV2ViRXZlbnQoV2ViQ29yZTo6TW91c2VFdmVu
dCopIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Njcm9s
bGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCAyMGY5ZTZm
MDdhMGMzZTYyY2E0YmIxNzhiODNiYjcxZWJiODcxNjUxLi44ZDM5YWEzN2ZjYzU0MTkzNjJkMmUw
M2Q4MjE1ZGEyOGVmZThkZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAg
LTU4LDE4ICs1OCwxOCBAQCBwcml2YXRlOgogICAgIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
KFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcigpOwog
Ci0gICAgdmlydHVhbCBib29sIGlzUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9vbCBpc1JlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIAogICAgIC8vIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yCi0gICAgdmlydHVhbCBib29sIGNvb3JkaW5hdGVzU2Nyb2xsaW5n
Rm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyYpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpIG92ZXJyaWRlOworICAg
IGJvb2wgY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoY29uc3QgV2ViQ29yZTo6RnJh
bWVWaWV3JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1p
dCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3Mo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUGlubmluZ0JlaGF2
aW9yKFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvcikgb3ZlcnJpZGU7CisgICAgYm9vbCBp
c1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IoV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yKSBvdmVycmlk
ZTsKICAgICBib29sIGlzU2Nyb2xsU25hcEluUHJvZ3Jlc3MoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2Fn
ZURlY29kZXImKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBSZXNwb25kIHRvIFVJIHByb2Nlc3Mg
Y2hhbmdlcy4KICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUoV2ViQ29yZTo6
U2Nyb2xsaW5nTm9kZUlELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
biwgYm9vbCBzeW5jTGF5ZXJQb3NpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFJbXBsLmgKaW5kZXggZWJlODNhYmMzNWEzNmY4MDc4
ZmY3YmY5NTljMzA0MTkwZjk2MmVjOC4uNTRiZjc5MDhkYzE2MDFjMzI4YmJlMTMwNGYxNDU1MzQ1
ZTNlMzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0
b3JhZ2VBcmVhSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9T
dG9yYWdlQXJlYUltcGwuaApAQCAtNTAsMTkgKzUwLDE5IEBAIHByaXZhdGU6CiAgICAgU3RvcmFn
ZUFyZWFJbXBsKFBhc3NSZWZQdHI8U3RvcmFnZUFyZWFNYXA+KTsKIAogICAgIC8vIFdlYkNvcmU6
OlN0b3JhZ2VBcmVhLgotICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBpdGVtKGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0SXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sJiBxdW90YUV4Y2VwdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUl0ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1l
LCBjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyKFdl
YkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNv
bnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
QWNjZXNzU3RvcmFnZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHNpemVfdCBtZW1vcnlCeXRlc1VzZWRCeUNhY2hlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGluY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRlY3JlbWVudEFjY2Vzc0NvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsb3Nl
RGF0YWJhc2VJZklkbGUoKSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBvdmVycmlk
ZTsKKyAgICBTdHJpbmcga2V5KHVuc2lnbmVkIGluZGV4KSBvdmVycmlkZTsKKyAgICBTdHJpbmcg
aXRlbShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJdGVtKFdlYkNv
cmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wmIHF1b3RhRXhjZXB0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUl0
ZW0oV2ViQ29yZTo6RnJhbWUqIHNvdXJjZUZyYW1lLCBjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBjbGVhcihXZWJDb3JlOjpGcmFtZSogc291cmNlRnJhbWUpIG92ZXJyaWRl
OworICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIGJv
b2wgY2FuQWNjZXNzU3RvcmFnZShXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIFdlYkNv
cmU6OlN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc2l6ZV90
IG1lbW9yeUJ5dGVzVXNlZEJ5Q2FjaGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluY3JlbWVudEFj
Y2Vzc0NvdW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZWNyZW1lbnRBY2Nlc3NDb3VudCgpIG92
ZXJyaWRlOworICAgIHZvaWQgY2xvc2VEYXRhYmFzZUlmSWRsZSgpIG92ZXJyaWRlOwogICAgIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIG92ZXJyaWRlOwogCiAgICAg
dWludDY0X3QgbV9zdG9yYWdlQXJlYUlEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCBjMWM1NWMwNzY0OTM1OTdkM2UwMDRm
OGRiMDA2ZWNmNzA2MTBlM2YzLi4wMmVmMmZhYzAyMzUxOWFmNjE0ZDMxZDUyMmU4NTI4NzJiYTY5
YjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaApAQCAtNjUsNyArNjUsNyBAQCBwcml2YXRlOgogICAgIFN0b3JhZ2VBcmVhTWFw
KFN0b3JhZ2VOYW1lc3BhY2VJbXBsKiwgUmVmPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKTsK
IAogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkR2V0VmFsdWVzKHVpbnQ2NF90
IHN0b3JhZ2VNYXBTZWVkKTsKICAgICB2b2lkIGRpZFNldEl0ZW0odWludDY0X3Qgc3RvcmFnZU1h
cFNlZWQsIGNvbnN0IFN0cmluZyYga2V5LCBib29sIHF1b3RhRXJyb3IpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aAppbmRleCA2ODhlYzlhNTQwZThmOTkxMTlmN2I4MjY1MDExYWI2NDA0OWJiYmM5Li5mZGViNWI4
YWRlYzkwZmNiYWM3Y2ViYzM4YTc4Y2IzOGNmZGM2NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAt
NTQsOCArNTQsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsKFdlYkNvcmU6OlN0b3JhZ2VUeXBlLCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0b3BMZXZlbE9yaWdpbiwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VBcmVhPiBz
dG9yYWdlQXJlYShSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2U+IGNvcHkoV2ViQ29y
ZTo6UGFnZSopIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlQXJlYT4gc3Rv
cmFnZUFyZWEoUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmKSBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY29weShXZWJDb3JlOjpQYWdlKikg
b3ZlcnJpZGU7CiAKICAgICBjb25zdCBXZWJDb3JlOjpTdG9yYWdlVHlwZSBtX3N0b3JhZ2VUeXBl
OwogICAgIGNvbnN0IHVpbnQ2NF90IG1fc3RvcmFnZU5hbWVzcGFjZUlEOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oCmluZGV4IGI3YjRhN2E5YjQ5YzQyZjhkZWVjYmVlZGEwYjE1MTBjYTRh
Yjc1OGYuLmE2MzJiYjcwMWM1ZGE1YTExNGMwYjAxOTRmZWJhMDE5OGQyOGRhMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU3Rv
cmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgKQEAgLTM4LDkgKzM4LDkgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIodWludDY0X3QgaWRl
bnRpZmllcik7CiAKLSAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5zaWduZWQg
cXVvdGEpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZT4gY3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiwg
dW5zaWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFt
ZXNwYWNlPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlJiwgdW5z
aWduZWQgcXVvdGEpIG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNw
YWNlPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIG92ZXJyaWRl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mLCB1bnNpZ25lZCBx
dW90YSkgb3ZlcnJpZGU7CiAKICAgICBjb25zdCB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggZmZjMDYwMWYwYzAzOGViZTVlYTZm
YTZhMzk2YmMxNmVjOTllZjJiOS4uN2QxZDhiZDUwOGYwOWVhZTVkZTZjMzhmMDhhMTY3MGNiMzJh
ODNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCkBAIC01MSw3ICs1MSw3IEBA
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyKHVpbnQ2NF90
IGlkZW50aWZpZXIpOwogCiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURl
Y29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkVXNl
ckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4m
KTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlv
blRvVUlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcy5oCmluZGV4IDBlMjUzOTUzZGZkMTUwNzQyOTBiOGIwMjJmODQ1OGU4MjUzMGMz
ZjguLjM0NjQ5ZDBmMzFjZmEwNGFjZTEwNTlhNmIxMGY4YWMzMDliZTZkNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaApA
QCAtNDIsMTMgKzQyLDEzIEBAIHByaXZhdGU6CiAgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
KFdlYlByb2Nlc3MqKTsKIAogICAgIC8vIFdlYkNvbm5lY3Rpb24KLSAgICB2aXJ0dWFsIFJlZlB0
cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPEFQSTo6T2JqZWN0PiB0cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc1Zh
bGlkQ29ubmVjdGlvbigpIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhBUEk6Ok9iamVjdCopIG92ZXJyaWRlOworICAgIFJl
ZlB0cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOworICAgIGJvb2wgaGFzVmFsaWRDb25uZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICB2aXJ0dWFsIElQQzo6Q29ubmVjdGlv
biogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHVpbnQ2
NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7CisgICAgSVBDOjpDb25u
ZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92ZXJyaWRlOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJpZGU7CiAKICAgICBXZWJQcm9jZXNz
KiBtX3Byb2Nlc3M7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50LmgKaW5k
ZXggNTQ1YWE5NTM4YmU3Njg4NmM0OTQ3Yzg4NTcyYTI2NTA2ODdhYWRmMS4uODVkOWVlN2ZhMWFm
YjAyMGMzMGZlNGJjMmQ3MjQ4ZmE1YzMzODVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkFsdGVybmF0aXZl
VGV4dENsaWVudC5oCkBAIC0zNywxNyArMzcsMTcgQEAgY2xhc3MgV2ViQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6OkFsdGVybmF0aXZlVGV4dENsaWVudCB7CiBwdWJsaWM6
CiAgICAgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KFdlYlBhZ2UgKik7CiAgICAgdmlydHVhbCB+
V2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95
ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKICNpZiBV
U0UoQVVUT0NPUlJFQ1RJT05fUEFORUwpCi0gICAgdmlydHVhbCB2b2lkIHNob3dDb3JyZWN0aW9u
QWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50U3RyaW5ncykgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc21pc3NBbHRlcm5hdGl2ZShXZWJDb3JlOjpSZWFzb25Gb3JEaXNtaXNz
aW5nQWx0ZXJuYXRpdmVUZXh0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBkaXNtaXNz
QWx0ZXJuYXRpdmVTb29uKFdlYkNvcmU6OlJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5hdGl2ZVRl
eHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNob3dDb3JyZWN0aW9uQWx0ZXJuYXRpdmUoV2ViQ29yZTo6QWx0ZXJuYXRpdmVU
ZXh0VHlwZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBib3VuZGluZ0JveE9mUmVwbGFjZWRT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVwbGFj
ZW1lbnRTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBhbHRlcm5hdGl2ZVJlcGxhY2VtZW50
U3RyaW5ncykgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNtaXNzQWx0ZXJuYXRpdmUoV2ViQ29yZTo6
UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dCkgb3ZlcnJpZGU7CisgICAgU3RyaW5n
IGRpc21pc3NBbHRlcm5hdGl2ZVNvb24oV2ViQ29yZTo6UmVhc29uRm9yRGlzbWlzc2luZ0FsdGVy
bmF0aXZlVGV4dCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWNvcmRBdXRvY29ycmVjdGlvblJlc3Bv
bnNlKFdlYkNvcmU6OkF1dG9jb3JyZWN0aW9uUmVzcG9uc2VUeXBlLCBjb25zdCBTdHJpbmcmIHJl
cGxhY2VkU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50U3RyaW5nKSBvdmVycmlkZTsK
ICNlbmRpZgogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQotICAgIHZpcnR1YWwgdm9p
ZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGJv
dW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0
X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBWZWN0b3I8U3RyaW5n
PiBkaWN0YXRpb25BbHRlcm5hdGl2ZXModWludDY0X3QgZGljdGF0aW9uQ29udGV4dCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzaG93RGljdGF0aW9uQWx0ZXJuYXRpdmVVSShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGJvdW5kaW5nQm94T2ZEaWN0YXRlZFRleHQsIHVpbnQ2NF90IGRpY3RhdGlvbkNv
bnRleHQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlRGljdGF0aW9uQWx0ZXJuYXRpdmVzKHVp
bnQ2NF90IGRpY3RhdGlvbkNvbnRleHQpIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGRp
Y3RhdGlvbkFsdGVybmF0aXZlcyh1aW50NjRfdCBkaWN0YXRpb25Db250ZXh0KSBvdmVycmlkZTsK
ICNlbmRpZgogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkJhdHRlcnlDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQmF0dGVyeUNsaWVudC5o
CmluZGV4IGNiOTRkYjZhYTAwYTJlZmYxYjIwMDEyMGZiZTczZDk2MjVlYzY4NDcuLjk2NzRkYTMz
NWU5YjBlNTI2ZTFiMDE5NTdjNzJiNjczNDY1NGUxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQmF0dGVyeUNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQmF0dGVyeUNsaWVudC5o
CkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJCYXR0ZXJ5Q2xpZW50
KCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGJhdHRlcnlDb250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdGFydFVwZGF0aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGJhdHRlcnlDb250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAK
ICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggNmE2OTY0
ZmExYWMyNTkwODIwZDgyZTRjODEwNDI4MWYzNWFhMWY5My4uMDA1MzNhMWE4ZDYzNmVjNGYzZDFi
MmQ3YTcwYTI5NDM5YjdhYjlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC01MCwxNzAgKzUw
LDE3MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkKiB3ZWJWaWV3KCkgY29uc3QgeyByZXR1
cm4gMDsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNocm9tZURlc3Ryb3llZCgpIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldFdpbmRvd1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHdpbmRvd1JlY3QoKSBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBwYWdlUmVjdCgpIG92ZXJyaWRl
OworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBwYWdlUmVjdCgpIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBmb2N1cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1bmZvY3Vz
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmb2N1cygpIG92ZXJyaWRlOworICAgIHZvaWQgdW5mb2N1
cygpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5UYWtlRm9jdXMoV2ViQ29y
ZTo6Rm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMo
V2ViQ29yZTo6Rm9jdXNEaXJlY3Rpb24pIG92ZXJyaWRlOworICAgIGJvb2wgY2FuVGFrZUZvY3Vz
KFdlYkNvcmU6OkZvY3VzRGlyZWN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHRha2VGb2N1cyhX
ZWJDb3JlOjpGb2N1c0RpcmVjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZm9j
dXNlZEVsZW1lbnRDaGFuZ2VkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZm9jdXNlZEZyYW1lQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwor
ICAgIHZvaWQgZm9jdXNlZEVsZW1lbnRDaGFuZ2VkKFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGZvY3VzZWRGcmFtZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlk
ZTsKIAogICAgIC8vIFRoZSBGcmFtZSBwb2ludGVyIHByb3ZpZGVzIHRoZSBDaHJvbWVDbGllbnQg
d2l0aCBjb250ZXh0IGFib3V0IHdoaWNoCiAgICAgLy8gRnJhbWUgd2FudHMgdG8gY3JlYXRlIHRo
ZSBuZXcgUGFnZS4gIEFsc28sIHRoZSBuZXdseSBjcmVhdGVkIHdpbmRvdwogICAgIC8vIHNob3Vs
ZCBub3QgYmUgc2hvd24gdG8gdGhlIHVzZXIgdW50aWwgdGhlIENocm9tZUNsaWVudCBvZiB0aGUg
bmV3bHkKICAgICAvLyBjcmVhdGVkIFBhZ2UgaGFzIGl0cyBzaG93IG1ldGhvZCBjYWxsZWQuCi0g
ICAgdmlydHVhbCBXZWJDb3JlOjpQYWdlKiBjcmVhdGVXaW5kb3coV2ViQ29yZTo6RnJhbWUqLCBj
b25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNob3coKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQYWdlKiBjcmVhdGVX
aW5kb3coV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpGcmFtZUxvYWRSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAg
dmlydHVhbCBib29sIGNhblJ1bk1vZGFsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJ1
bk1vZGFsKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SdW5Nb2RhbCgpIG92ZXJyaWRlOworICAg
IHZvaWQgcnVuTW9kYWwoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9v
bGJhcnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCB0b29sYmFyc1Zp
c2libGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRvb2xiYXJzVmlzaWJsZShib29sKSBvdmVy
cmlkZTsKKyAgICBib29sIHRvb2xiYXJzVmlzaWJsZSgpIG92ZXJyaWRlOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCBzZXRTdGF0dXNiYXJWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgYm9vbCBzdGF0dXNiYXJWaXNpYmxlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdGF0dXNi
YXJWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOworICAgIGJvb2wgc3RhdHVzYmFyVmlzaWJsZSgpIG92
ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxiYXJzVmlzaWJsZShib29s
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYmFyc1Zpc2libGUoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldFNjcm9sbGJhcnNWaXNpYmxlKGJvb2wpIG92ZXJyaWRlOworICAgIGJv
b2wgc2Nyb2xsYmFyc1Zpc2libGUoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TWVudWJhclZpc2libGUoYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIG1lbnVi
YXJWaXNpYmxlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNZW51YmFyVmlzaWJsZShib29sKSBv
dmVycmlkZTsKKyAgICBib29sIG1lbnViYXJWaXNpYmxlKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAg
dmlydHVhbCB2b2lkIHNldFJlc2l6YWJsZShib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJl
c2l6YWJsZShib29sKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkTWVzc2Fn
ZVRvQ29uc29sZShKU0M6Ok1lc3NhZ2VTb3VyY2UsIEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VJRCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRNZXNzYWdl
VG9Db25zb2xlKEpTQzo6TWVzc2FnZVNvdXJjZSwgSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZUlEKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRD
b25maXJtUGFuZWwoKSBvdmVycmlkZTsKKyAgICBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1Q
YW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlV2luZG93U29vbigpIG92ZXJyaWRlOworICAgIHZv
aWQgY2xvc2VXaW5kb3dTb29uKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHJ1
bkphdmFTY3JpcHRBbGVydChXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFtZSos
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0
UHJvbXB0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlZmF1bHRWYWx1ZSwgU3RyaW5nJiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEFsZXJ0KFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJp
ZGU7CisgICAgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIGJvb2wgcnVuSmF2YVNjcmlwdFByb21wdChXZWJDb3Jl
OjpGcmFtZSosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFs
dWUsIFN0cmluZyYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFN0YXR1c2JhclRleHQo
Y29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OktleWJvYXJk
VUlNb2RlIGtleWJvYXJkVUlNb2RlKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6S2V5Ym9hcmRV
SU1vZGUga2V5Ym9hcmRVSU1vZGUoKSBvdmVycmlkZTsKIAogICAgIC8vIEhvc3RXaW5kb3cgbWVt
YmVyIGZ1bmN0aW9uIG92ZXJyaWRlcy4KLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJvb3RW
aWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29udGVudHNGb3JTbG93U2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBpbnZhbGlkYXRlUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzQW5kUm9vdFZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgaW52YWxpZGF0ZUNvbnRl
bnRzRm9yU2xvd1Njcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBS
ZWN0KSBvdmVycmlkZTsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgdmlydHVh
bCB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3RlZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
c2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRlbGVnYXRlZFNjcm9sbFJlcXVlc3Rl
ZChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICNlbmRp
ZgotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6
SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBv
dmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25zdCBvdmVycmlkZTsK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3Np
YmlsaXR5U2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvQWNjZXNzaWJp
bGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
V2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IHJv
b3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBjb25z
dCBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgUGxhdGZvcm1QYWdlQ2xpZW50IHBsYXRm
b3JtUGFnZUNsaWVudCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb250ZW50
c1NpemVDaGFuZ2VkKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYpIGNvbnN0IG92ZXJyaWRlOyAvLyBDdXJyZW50bHkgb25seSBNYWMg
aGFzIGEgbm9uIGVtcHR5IGltcGxlbWVudGF0aW9uLgorICAgIFBsYXRmb3JtUGFnZUNsaWVudCBw
bGF0Zm9ybVBhZ2VDbGllbnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGNvbnRlbnRzU2l6
ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgdm9pZCBzY3JvbGxSZWN0SW50b1ZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIGNvbnN0IG92ZXJyaWRlOyAvLyBDdXJyZW50bHkgb25seSBNYWMgaGFzIGEgbm9uIGVt
cHR5IGltcGxlbWVudGF0aW9uLgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFVuYXZhaWxhYmxl
UGx1Z2luTWVzc2FnZUJlQnV0dG9uKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJDb3JlOjpFbGVtZW50KiwgV2ViQ29y
ZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OlBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKSBjb25z
dCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFVuYXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0
dG9uKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNs
aWNrZWQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpQ
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsYmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xs
YmFyc01vZGVEaWRDaGFuZ2UoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2Rp
ZmllckZsYWdzKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sVGlwKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VG9vbFRpcChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uKSBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsK
KyAgICB2b2lkIHByaW50KFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgU3RyaW5n
JiBkYXRhYmFzZU5hbWUsIFdlYkNvcmU6OkRhdGFiYXNlRGV0YWlscykgb3ZlcnJpZGU7CisgICAg
dm9pZCBleGNlZWRlZERhdGFiYXNlUXVvdGEoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBTdHJpbmcm
IGRhdGFiYXNlTmFtZSwgV2ViQ29yZTo6RGF0YWJhc2VEZXRhaWxzKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVkZWQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdp
blF1b3RhKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgaW50NjRfdCBzcGFjZU5lZWRlZCkgb3Zl
cnJpZGU7CisgICAgdm9pZCByZWFjaGVkTWF4QXBwQ2FjaGVTaXplKGludDY0X3Qgc3BhY2VOZWVk
ZWQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90
YShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGludDY0X3Qgc3BhY2VOZWVkZWQpIG92ZXJyaWRl
OwogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQotICAgIHZpcnR1YWwgdm9pZCBhbm5v
dGF0ZWRSZWdpb25zQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgYW5ub3RhdGVkUmVnaW9u
c0NoYW5nZWQoKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFJl
cGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChjb25zdCBTdHJpbmcmIHBhdGgsIFN0cmlu
ZyYgZ2VuZXJhdGVkRmlsZW5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGdlbmVy
YXRlUmVwbGFjZW1lbnRGaWxlKGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBzaG91bGRSZXBsYWNlV2l0aEdlbmVyYXRlZEZpbGVGb3JVcGxvYWQoY29uc3QgU3RyaW5nJiBw
YXRoLCBTdHJpbmcmIGdlbmVyYXRlZEZpbGVuYW1lKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgZ2Vu
ZXJhdGVSZXBsYWNlbWVudEZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKSBvdmVycmlkZTsKICAgICAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihXZWJDb3JlOjpDb2xv
ckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb2xvckNob29zZXI+IGNyZWF0ZUNvbG9yQ2hvb3NlcihX
ZWJDb3JlOjpDb2xvckNob29zZXJDbGllbnQqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJy
aWRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUHJldmVudERlZmF1bHRGb3JFdmVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlk
UHJldmVudERlZmF1bHRGb3JFdmVudCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc1Njcm9sbE5vdGlmaWNhdGlvbnMoV2Vi
Q29yZTo6RnJhbWUqLCBib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgb2JzZXJ2ZWRD
b250ZW50Q2hhbmdlKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGNsZWFyQ29udGVudENoYW5nZU9ic2VydmVycyhXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlSZXZlYWxlZFNlbGVjdGlvbkJ5U2Nyb2xsaW5nRnJhbWUo
V2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdG9wcGluZygp
IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZExheW91dChMYXlvdXRUeXBlID0gTm9y
bWFsTGF5b3V0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRPdmVyZmxvd1Nj
cm9sbCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRPdmVyZmxvd1Njcm9sbCgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKSBj
b25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNb2JpbGVEb2NUeXBlKGJvb2wpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNTY3JvbGxOb3RpZmljYXRpb25zKFdlYkNvcmU6OkZy
YW1lKiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBvYnNlcnZlZENvbnRlbnRDaGFuZ2UoV2Vi
Q29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFyQ29udGVudENoYW5nZU9ic2Vy
dmVycyhXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOworICAgIHZvaWQgbm90aWZ5UmV2ZWFsZWRT
ZWxlY3Rpb25CeVNjcm9sbGluZ0ZyYW1lKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc1N0b3BwaW5nKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZExheW91dChMYXlvdXRU
eXBlID0gTm9ybWFsTGF5b3V0KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFN0YXJ0T3ZlcmZsb3dT
Y3JvbGwoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEVuZE92ZXJmbG93U2Nyb2xsKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBoYXNTdGFibGVQYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIC8vIEZJWE1FOiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzU5NzU1NTk+Ci0gICAgdmlydHVh
bCB2b2lkIHN1cHByZXNzRm9ybU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVzdG9yZUZvcm1Ob3RpZmljYXRpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdXBw
cmVzc0Zvcm1Ob3RpZmljYXRpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN0b3JlRm9ybU5v
dGlmaWNhdGlvbnMoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRPclVwZGF0ZVNj
cm9sbGluZ0xheWVyKFdlYkNvcmU6Ok5vZGUqLCBQbGF0Zm9ybUxheWVyKiBzY3JvbGxpbmdMYXll
ciwgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2Nyb2xsU2l6ZSwgYm9vbCBhbGxvd0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgYWxsb3dWZXJ0
aWNhbFNjcm9sbGJhcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcm9sbGlu
Z0xheWVyKFdlYkNvcmU6Ok5vZGUqLCBQbGF0Zm9ybUxheWVyKiBzY3JvbGxpbmdMYXllciwgUGxh
dGZvcm1MYXllciogY29udGVudHNMYXllcikgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRPclVwZGF0
ZVNjcm9sbGluZ0xheWVyKFdlYkNvcmU6Ok5vZGUqLCBQbGF0Zm9ybUxheWVyKiBzY3JvbGxpbmdM
YXllciwgUGxhdGZvcm1MYXllciogY29udGVudHNMYXllciwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2Nyb2xsU2l6ZSwgYm9vbCBhbGxvd0hvcml6b250YWxTY3JvbGxiYXIsIGJvb2wgYWxsb3dW
ZXJ0aWNhbFNjcm9sbGJhcikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVTY3JvbGxpbmdMYXll
cihXZWJDb3JlOjpOb2RlKiwgUGxhdGZvcm1MYXllciogc2Nyb2xsaW5nTGF5ZXIsIFBsYXRmb3Jt
TGF5ZXIqIGNvbnRlbnRzTGF5ZXIpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHdlYkFw
cE9yaWVudGF0aW9uc1VwZGF0ZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8pIG92ZXJyaWRlOworICAgIHZvaWQgd2Vi
QXBwT3JpZW50YXRpb25zVXBkYXRlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1BsYXliYWNr
VGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzIGV2ZW50VGhyb3R0bGluZ0RlbGF5KCkgb3ZlcnJpZGU7Cisg
ICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBldmVudFRocm90dGxpbmdEZWxheSgpIG92ZXJy
aWRlOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQotICAgIHZpcnR1
YWwgaW50IGRldmljZU9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgaW50IGRldmlj
ZU9yaWVudGF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9p
ZCBydW5PcGVuUGFuZWwoV2ViQ29yZTo6RnJhbWUqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZpbGVD
aG9vc2VyPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvYWRJY29uRm9yRmlsZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBXZWJDb3JlOjpGaWxlSWNvbkxvYWRlciopIG92ZXJyaWRlOwor
ICAgIHZvaWQgcnVuT3BlblBhbmVsKFdlYkNvcmU6OkZyYW1lKiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpGaWxlQ2hvb3Nlcj4pIG92ZXJyaWRlOworICAgIHZvaWQgbG9hZEljb25Gb3JGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIFdlYkNvcmU6OkZpbGVJY29uTG9hZGVyKikgb3ZlcnJpZGU7CiAK
ICNpZiAhUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2Vi
Q29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRl
blVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnNvcihjb25z
dCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEN1cnNvckhpZGRlblVu
dGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIEVOQUJMRShSRVFVRVNU
X0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1FUikK
LSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpF
bGVtZW50Pj4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3Jt
Q2hhbmdlcygpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6RWxlbWVudD4+Jikgb3ZlcnJpZGU7CisgICAgYm9v
bCBzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgc2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlv
bigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBoYXNPcGVuZWRQb3B1cCgpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9w
dXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBN
ZW51KFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wg
c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSBvdmVycmlkZTsKKyAgICBib29s
IHNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSBvdmVycmlk
ZTsKKyAgICBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFdlYkNvcmU6OlBvcHVwTWVudUNs
aWVudCopIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxXZWJDb3JlOjpTZWFyY2hQb3B1cE1l
bnU+IGNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3Rvcnkq
IGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdy
YXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6
YXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xh
eWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRo
cm90dGxpbmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlk
ZTsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3Rv
cnkoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGF0dGFjaFJvb3RHcmFwaGljc0xheWVyKFdl
YkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIHZv
aWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNPbmVTaG90RHJh
d2luZ1N5bmNocm9uaXphdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgc2NoZWR1bGVDb21wb3Np
dGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKKyAgICBib29sIGFkanVzdExheWVyRmx1c2hUaHJv
dHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRsZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7
CiAKICNpZiBVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElTUExBWV9NT05JVE9SKQotICAg
IHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcj4gY3JlYXRlRGlz
cGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVEaXNwbGF5UmVm
cmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIENvbXBvc2l0aW5nVHJpZ2dlckZsYWdzIGFsbG93ZWRDb21wb3NpdGluZ1Ry
aWdnZXJzKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICBDb21wb3NpdGluZ1RyaWdnZXJGbGFncyBhbGxv
d2VkQ29tcG9zaXRpbmdUcmlnZ2VycygpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8Q29tcG9zaXRpbmdUcmlnZ2VyRmxhZ3M+KAogICAgICAgICAgICAg
VGhyZWVEVHJhbnNmb3JtVHJpZ2dlciB8CkBAIC0yMjYsOTcgKzIyNiw5NyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgQW5pbWF0aW9uVHJpZ2dlcik7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29s
IGxheWVyVHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGxheWVy
VHJlZVN0YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yPiBjcmVhdGVTY3JvbGxpbmdDb29yZGluYXRvcihXZWJDb3JlOjpQYWdlKikgY29uc3Qg
b3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcj4g
Y3JlYXRlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoV2ViQ29yZTo6UGFnZSopIGNvbnN0IG92ZXJyaWRl
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBu
ZWVkVG91Y2hFdmVudHMoYm9vbCkgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBuZWVkVG91Y2hFdmVu
dHMoYm9vbCkgb3ZlcnJpZGUgeyB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2
aXJ0dWFsIHZvaWQgZWxlbWVudERpZEZvY3VzKGNvbnN0IFdlYkNvcmU6Ok5vZGUqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZWxlbWVudERpZEJsdXIoY29uc3QgV2ViQ29yZTo6Tm9kZSop
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbGVtZW50RGlkUmVmb2N1cyhjb25zdCBXZWJD
b3JlOjpOb2RlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbGVtZW50RGlkRm9jdXMoY29uc3QgV2Vi
Q29yZTo6Tm9kZSopIG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudERpZEJsdXIoY29uc3QgV2Vi
Q29yZTo6Tm9kZSopIG92ZXJyaWRlOworICAgIHZvaWQgZWxlbWVudERpZFJlZm9jdXMoY29uc3Qg
V2ViQ29yZTo6Tm9kZSopIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpIHx8
IChQTEFURk9STShNQUMpICYmIEVOQUJMRShWSURFT19QUkVTRU5UQVRJT05fTU9ERSkpCi0gICAg
dmlydHVhbCBib29sIHN1cHBvcnRzVmlkZW9GdWxsc2NyZWVuKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFVwVmlkZW9Db250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0c1ZpZGVvRnVsbHNjcmVlbihXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0VXBWaWRlb0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBlbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4aXRW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYp
IG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFZJREVPX1BSRVNFTlRBVElP
Tl9NT0RFKQotICAgIHZpcnR1YWwgdm9pZCBleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91
dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiwgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4
aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRl
b0VsZW1lbnQmLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUpIG92ZXJyaWRlOwogI2VuZGlmCiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25z
dCBXZWJDb3JlOjpFbGVtZW50KiwgYm9vbCB3aXRoS2V5Ym9hcmQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZvckVs
ZW1lbnQoY29uc3QgV2ViQ29yZTo6RWxlbWVudCosIGJvb2wgd2l0aEtleWJvYXJkKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCop
IG92ZXJyaWRlOworICAgIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdmly
dHVhbCB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOworICAgIHZvaWQgbWFrZUZp
cnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBlbmFi
bGVTdWRkZW5UZXJtaW5hdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
U3VkZGVuVGVybWluYXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGVuYWJsZVN1ZGRlblRlcm1p
bmF0aW9uKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlU3VkZGVuVGVybWluYXRpb24oKSBv
dmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0
U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpG
bG9hdFNpemUgYXZhaWxhYmxlU2NyZWVuU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNv
cmU6OkZsb2F0U2l6ZSBzY3JlZW5TaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
RmxvYXRTaXplIGF2YWlsYWJsZVNjcmVlblNpemUoKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyYpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQg
ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6Vmlld3Bv
cnRBcmd1bWVudHMmKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlT
Y3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSBuZXdTdHlsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBu
b3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6U2Nyb2xsYmFyU3R5bGUgbmV3U3R5bGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gcHJlZmVycmVk
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgb3ZlcnJpZGU7CisgICAgV1RGOjpPcHRpb25hbDxXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciB1bmRlcmxheUNvbG9y
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNv
bnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRD
b2xvckRpZENoYW5nZShXZWJDb3JlOjpDb2xvcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBw
YWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2UoV2ViQ29yZTo6Q29sb3IpIGNvbnN0
IG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50SGFuZGxlcnNDaGFu
Z2VkKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgd2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChi
b29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHBsdWdJblN0YXJ0TGFiZWxUaXRs
ZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBwbHVnSW5TdGFydExhYmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTdHlsZVNoZWV0KCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgcGx1Z0luRXh0cmFTY3JpcHQoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgcGx1Z0luU3RhcnRMYWJlbFRpdGxlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBwbHVnSW5TdGFydExh
YmVsU3VidGl0bGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
U3RyaW5nIHBsdWdJbkV4dHJhU3R5bGVTaGVldCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmlu
ZyBwbHVnSW5FeHRyYVNjcmlwdCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZEFkZEhlYWRlckxheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkQWRkRm9vdGVyTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
IG92ZXJyaWRlOworICAgIHZvaWQgZGlkQWRkSGVhZGVyTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NM
YXllciopIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQWRkRm9vdGVyTGF5ZXIoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZFVzZVRpbGVk
QmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBXZWJDb3JlOjpGcmFtZVZpZXcqKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZFVzZVRpbGVkQmFja2luZ0ZvckZyYW1lVmlldyhjb25zdCBX
ZWJDb3JlOjpGcmFtZVZpZXcqKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBp
c1BsYXlpbmdNZWRpYURpZENoYW5nZShXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNZWRpYVN0YXRl
RmxhZ3MsIHVpbnQ2NF90KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFnZUFjdGl2
aXR5U3RhdGUoV2ViQ29yZTo6UGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGlzUGxheWluZ01lZGlhRGlkQ2hhbmdlKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok1l
ZGlhU3RhdGVGbGFncywgdWludDY0X3QpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UGFnZUFjdGl2
aXR5U3RhdGUoV2ViQ29yZTo6UGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIAog
I2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQotICAgIHZpcnR1YWwgdm9pZCBoYXNNZWRpYVNlc3Np
b25XaXRoQWN0aXZlTWVkaWFFbGVtZW50c0RpZENoYW5nZShib29sKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgbWVkaWFTZXNzaW9uTWV0YWRhdGFEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
TWVkaWFTZXNzaW9uTWV0YWRhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNl
ZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIG92ZXJyaWRlOworICAgIHZv
aWQgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHNEaWRDaGFuZ2UoYm9vbCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBtZWRpYVNlc3Npb25NZXRhZGF0YURpZENoYW5nZShjb25zdCBX
ZWJDb3JlOjpNZWRpYVNlc3Npb25NZXRhZGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgZm9jdXNl
ZENvbnRlbnRNZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QpIG92ZXJyaWRlOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKLSAgICB2aXJ0dWFsIGJvb2wgd3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgdW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYsIFZlY3Rvcjx1aW50OF90PiYpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgd3JhcENy
eXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mLCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBv
dmVycmlkZTsKKyAgICBib29sIHVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4m
LCBWZWN0b3I8dWludDhfdD4mKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCi0gICAgdmlydHVh
bCB2b2lkIGhhbmRsZVRlbGVwaG9uZU51bWJlckNsaWNrKGNvbnN0IFN0cmluZyYgbnVtYmVyLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFuZGxlVGVsZXBo
b25lTnVtYmVyQ2xpY2soY29uc3QgU3RyaW5nJiBudW1iZXIsIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50Jikgb3ZlcnJpZGU7CiAjZW5kaWYKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKLSAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlU2VsZWN0aW9uU2VydmljZUNsaWNrKFdlYkNvcmU6OkZyYW1l
U2VsZWN0aW9uJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHRlbGVwaG9uZU51bWJlcnMsIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGhhc1JlbGV2
YW50U2VsZWN0aW9uU2VydmljZXMoYm9vbCBpc1RleHRPbmx5KSBjb25zdCBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhbmRsZVNlbGVjdGlvblNlcnZpY2VDbGljayhXZWJDb3JlOjpGcmFtZVNlbGVjdGlv
biYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0ZWxlcGhvbmVOdW1iZXJzLCBjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIGJvb2wgaGFzUmVsZXZhbnRTZWxlY3Rpb25TZXJ2
aWNlcyhib29sIGlzVGV4dE9ubHkpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKCkgY29uc3Qgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhbmRsZUF1dG9G
aWxsQnV0dG9uQ2xpY2soV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCYpIG92ZXJyaWRlOwogCiAj
aWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKICAg
ICB2b2lkIGFkZFBsYXliYWNrVGFyZ2V0UGlja2VyQ2xpZW50KHVpbnQ2NF90IC8qY29udGV4dElk
Ki8pIG92ZXJyaWRlOwpAQCAtMzI3LDE0ICszMjcsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dE1vY2tNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyU3RhdGUoY29uc3QgU3RyaW5nJiwgV2ViQ29y
ZTo6TWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQ6OlN0YXRlKSBvdmVycmlkZTsKICNlbmRpZgog
Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3Qg
V2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgaW1hZ2VPck1lZGlhRG9jdW1l
bnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7CiAjaWYgRU5B
QkxFKFZJREVPKQogI2lmIFVTRShHU1RSRUFNRVIpCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIC8qZGV0YWlscyovLCBjb25z
dCBTdHJpbmcmIC8qZGVzY3JpcHRpb24qLywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RJ
bnN0YWxsTWlzc2luZ01lZGlhUGx1Z2lucyhjb25zdCBTdHJpbmcmIC8qZGV0YWlscyovLCBjb25z
dCBTdHJpbmcmIC8qZGVzY3JpcHRpb24qLywgV2ViQ29yZTo6TWVkaWFQbGF5ZXJSZXF1ZXN0SW5z
dGFsbE1pc3NpbmdQbHVnaW5zQ2FsbGJhY2smKSBvdmVycmlkZTsKICNlbmRpZgogI2VuZGlmCiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgb3ZlcnJp
ZGU7CiAKICAgICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwogICAgIG11dGFibGUgUmVmUHRyPFdl
YkZyYW1lPiBtX2NhY2hlZEZyYW1lU2V0TGFyZ2VzdEZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmgK
aW5kZXggMDM5NGNjODJjZjJkMWIxNTFlODc1ZDFmMzZlMWFmZjFlYmMwYTUwMC4uYTE3N2IyNTk0
YTNlMmY4MzE1ZWEyYmVmM2E1YjFmMjMxNTI4NjA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5oCkBA
IC00OCw5ICs0OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEVuZENob29zZXIoKTsKICAgICB2
b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlYXR0YWNoQ29s
b3JDaG9vc2VyKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZW5kQ2hvb3NlcigpIG92ZXJyaWRlOworICAgIHZvaWQgcmVhdHRhY2hD
b2xvckNob29zZXIoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dFNlbGVjdGVkQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGVuZENob29zZXIoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpDb2xvckNo
b29zZXJDbGllbnQqIG1fY29sb3JDaG9vc2VyQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5oCmluZGV4IGMxNTgxMmYwNGJkMzE0MTk0MGU3Yjk4NWNkOTg0MmFhYThhNzMxOWUuLmNl
YzMxNDJiMTZlMzVkMDAyY2ZjOGM0MmY0ZTc4MWI4MmViZTg1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50LmgKQEAgLTQyLDE3ICs0MiwxNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEZXN0cm95ZWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvbnRleHRNZW51RGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgZG93bmxvYWRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNlYXJjaFdpdGhHb29nbGUoY29uc3QgV2ViQ29yZTo6RnJhbWUqKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9va1VwSW5EaWN0aW9uYXJ5KFdlYkNvcmU6OkZyYW1l
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU3BlYWtpbmcoKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc3BlYWsoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHN0b3BTcGVha2luZygpIG92ZXJyaWRlOworICAgIHZvaWQgZG93bmxvYWRVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZWFyY2hXaXRoR29vZ2xlKGNv
bnN0IFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CisgICAgdm9pZCBsb29rVXBJbkRpY3Rpb25h
cnkoV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKKyAgICBib29sIGlzU3BlYWtpbmcoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNwZWFrKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQg
c3RvcFNwZWFraW5nKCkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICB2aXJ0
dWFsIHZvaWQgc2VhcmNoV2l0aFNwb3RsaWdodCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2VhcmNo
V2l0aFNwb3RsaWdodCgpIG92ZXJyaWRlOwogI2VuZGlmCiAKICNpZiBVU0UoQUNDRVNTSUJJTElU
WV9DT05URVhUX01FTlVTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VQcm94aW1pdHlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGV2aWNlUHJveGltaXR5Q2xpZW50LmgKaW5k
ZXggYTI4OTdhNDUwN2M4NzQ2NTQzYzI2MDliZWU3YTI3NWVhZjYwZWI2Yi4uYjQ5ZWE2MDIwZTU4
YzVhYjM2ZDFjMGFjM2IwZWYxMzg5NmFmZmNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEZXZpY2VQcm94aW1pdHlDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRldmljZVByb3hp
bWl0eUNsaWVudC5oCkBAIC00MiwxMCArNDIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRV
cGRhdGluZygpOwogICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzTGFzdERhdGEoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGRvdWJsZSB2YWx1ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIG1fdmFsdWU7IH0KLSAgICB2aXJ0dWFsIGRvdWJsZSBtaW4oKSBvdmVycmlk
ZSB7IHJldHVybiBtX21pbjsgfQotICAgIHZpcnR1YWwgZG91YmxlIG1heCgpIG92ZXJyaWRlIHsg
cmV0dXJuIG1fbWF4OyB9CisgICAgYm9vbCBoYXNMYXN0RGF0YSgpIG92ZXJyaWRlOworICAgIGRv
dWJsZSB2YWx1ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICBkb3VibGUgbWlu
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9taW47IH0KKyAgICBkb3VibGUgbWF4KCkgb3ZlcnJpZGUg
eyByZXR1cm4gbV9tYXg7IH0KIAogcHJpdmF0ZToKICAgICBXZWJQYWdlKiBtX3BhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRpYWdub3N0aWNMb2dnaW5nQ2xpZW50LmgKaW5kZXggZTVhMTM0MWE2YzQwY2Ex
MmM5YjgwZTM3OTRlNzNmNzU4NTY1NTAzOS4uZTRkZTFhMTE5NjAzMDcxYjc5OTU4MGU2YTRhZTFl
MDAyMjI3YWNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaApA
QCAtMzksMTEgKzM5LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFdlYkNvcmU6OlNob3VsZFNhbXBsZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUpIG92ZXJyaWRlOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpIG92ZXJy
aWRlOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBjb25zdCBTdHJpbmcmIHZhbHVl
LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIG1h
aW5GcmFtZURlc3Ryb3llZCgpIG92ZXJyaWRlOworICAgIHZvaWQgbWFpbkZyYW1lRGVzdHJveWVk
KCkgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlJiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApp
bmRleCA3NTc3NjVlMjQ0MDM4NTFhZDUzMjNmMmMwZjgwMjQ0NjM4YmQ3Y2JkLi41ZjRkYTc1YmQx
YmI1YThkMTU1OGY1NGQ4Y2YxZDIxMzExM2JlNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQuaApAQCAtNDIs
MjEgKzQyLDIxIEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlv
bkFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNv
bnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0Zv
ckRyYWcoV2ViQ29yZTo6RHJhZ0RhdGEmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
OkRyYWdTb3VyY2VBY3Rpb24gZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgd2luZG93UG9pbnQpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFBlcmZv
cm1EcmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBX
ZWJDb3JlOjpEcmFnRGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgV2ViQ29yZTo6RGF0YVRyYW5zZmVyJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhJikg
b3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiBkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB3aW5kb3dQb2ludCkgb3ZlcnJp
ZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKFdlYkNvcmU6OkRyYWdJbWFnZVJlZiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGV2ZW50UG9zLCBXZWJDb3JlOjpEYXRhVHJhbnNmZXImLCBXZWJDb3JlOjpGcmFt
ZSYsIGJvb2wgbGlua0RyYWcgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERyYWco
V2ViQ29yZTo6RHJhZ0ltYWdlUmVmLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZHJhZ0ltYWdl
T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZXZlbnRQb3MsIFdlYkNvcmU6OkRhdGFU
cmFuc2ZlciYsIFdlYkNvcmU6OkZyYW1lJiwgYm9vbCBsaW5rRHJhZyA9IGZhbHNlKSBvdmVycmlk
ZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgdm9pZCBkZWNsYXJlQW5kV3Jp
dGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSwgV2ViQ29yZTo6RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFU
VEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgZGVjbGFyZUFuZFdyaXRlQXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29u
c3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSopIG92
ZXJyaWRlOworICAgIHZvaWQgZGVjbGFyZUFuZFdyaXRlQXR0YWNobWVudChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBXZWJDb3JlOjpFbGVtZW50JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBXZWJDb3JlOjpGcmFtZSopIG92ZXJyaWRlOwogI2VuZGlmCiAj
ZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKIAogICAg
IFdlYlBhZ2UqIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA2MWI0MzI3NzBm
NWJjOGUxM2IyNjA5OGE2Mzk3ZDJiYTBiM2ZkOGI0Li5iOGQ1ODM3ZDkyOTRjZjQzM2U5N2JhYTBl
ZDRiNDAwMmI4MTA2OThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTQxLDg3ICs0MSw4NyBA
QCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwYWdlRGVzdHJv
eWVkKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2Vi
Q29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0VHJhaWxpbmdX
aGl0ZXNwYWNlRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dn
bGVDb250aW51b3VzU3BlbGxDaGVja2luZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9n
Z2xlR3JhbW1hckNoZWNraW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgc3BlbGxDaGVj
a2VyRG9jdW1lbnRUYWcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVy
cmlkZTsKKworICAgIGJvb2wgc2hvdWxkRGVsZXRlUmFuZ2UoV2ViQ29yZTo6UmFuZ2UqKSBvdmVy
cmlkZTsKKyAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIG92ZXJyaWRlOworICAg
IGJvb2wgaXNTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgdG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tpbmcoKSBvdmVycmlkZTsKKyAgICBib29sIGlz
R3JhbW1hckNoZWNraW5nRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xlR3JhbW1h
ckNoZWNraW5nKCkgb3ZlcnJpZGU7CisgICAgaW50IHNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkg
b3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZEJlZ2luRWRpdGluZyhXZWJD
b3JlOjpSYW5nZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbmRFZGl0aW5n
KFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEluc2Vy
dE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRpdG9ySW5z
ZXJ0QWN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW5zZXJ0VGV4dChj
b25zdCBTdHJpbmcmLCBXZWJDb3JlOjpSYW5nZSosIFdlYkNvcmU6OkVkaXRvckluc2VydEFjdGlv
bikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENoYW5nZVNlbGVjdGVkUmFuZ2Uo
V2ViQ29yZTo6UmFuZ2UqIGZyb21SYW5nZSwgV2ViQ29yZTo6UmFuZ2UqIHRvUmFuZ2UsIFdlYkNv
cmU6OkVBZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgb3ZlcnJpZGU7CisgICAgYm9vbCBz
aG91bGRCZWdpbkVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKKyAgICBib29sIHNo
b3VsZEVuZEVkaXRpbmcoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKKyAgICBib29sIHNob3Vs
ZEluc2VydE5vZGUoV2ViQ29yZTo6Tm9kZSosIFdlYkNvcmU6OlJhbmdlKiwgV2ViQ29yZTo6RWRp
dG9ySW5zZXJ0QWN0aW9uKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEluc2VydFRleHQoY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6UmFuZ2UqLCBXZWJDb3JlOjpFZGl0b3JJbnNlcnRBY3Rpb24p
IG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpS
YW5nZSogZnJvbVJhbmdlLCBXZWJDb3JlOjpSYW5nZSogdG9SYW5nZSwgV2ViQ29yZTo6RUFmZmlu
aXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQXBwbHlTdHlsZShXZWJDb3JlOjpTdHlsZVByb3BlcnRpZXMqLCBXZWJDb3JlOjpS
YW5nZSopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRBcHBseVN0eWxlKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZE1vdmVSYW5nZUFmdGVyRGVsZXRlKFdlYkNvcmU6
OlJhbmdlKiwgV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBk
aWRCZWdpbkVkaXRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRvQ2hh
bmdlZENvbnRlbnRzKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUb0NoYW5n
ZWRTZWxlY3Rpb24oV2ViQ29yZTo6RnJhbWUqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc2NhcmRlZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldENsaWVudFBhc3RlYm9hcmREYXRhRm9yUmFuZ2Uo
V2ViQ29yZTo6UmFuZ2UqLCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVib2FyZFR5cGVzLCBWZWN0b3I8
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4+JiBwYXN0ZWJvYXJkRGF0YSkgb3ZlcnJpZGU7
CisgICAgYm9vbCBzaG91bGRBcHBseVN0eWxlKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllcyosIFdl
YkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRBcHBseVN0eWxlKCkgb3ZlcnJp
ZGU7CisgICAgYm9vbCBzaG91bGRNb3ZlUmFuZ2VBZnRlckRlbGV0ZShXZWJDb3JlOjpSYW5nZSos
IFdlYkNvcmU6OlJhbmdlKikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZEJlZ2luRWRpdGluZygp
IG92ZXJyaWRlOworICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3Rpb25BbmRVcGRhdGVMYXlvdXQoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRpc2NhcmRlZENvbXBvc2l0aW9uKFdlYkNvcmU6OkZyYW1lKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRFbmRFZGl0aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxs
V3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoV2ViQ29yZTo6UmFuZ2UqKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZFdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBnZXRDbGllbnRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdlYkNvcmU6OlJhbmdlKiwgVmVjdG9y
PFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+PiYgcGFzdGVib2FyZERhdGEpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6
OlVuZG9TdGVwPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyVW5kb1JlZG9PcGVy
YXRpb25zKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuQ29weUN1dChXZWJDb3Jl
OjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgY2FuUGFzdGUoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhblVuZG8oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY2FuUmVkbygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0
ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikgb3ZlcnJpZGU7CisgICAg
dm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkgb3ZlcnJpZGU7CisKKyAg
ICBib29sIGNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5QYXN0ZShXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVm
YXVsdFZhbHVlKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIGNhblVuZG8oKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIGNhblJlZG8oKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgdW5kbygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZWRvKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCB1bmRvKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZWRvKCkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUlucHV0TWV0aG9kS2V5
ZG93bihXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYW5kbGVL
ZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKKyAgICB2b2lk
IGhhbmRsZUlucHV0TWV0aG9kS2V5ZG93bihXZWJDb3JlOjpLZXlib2FyZEV2ZW50Kikgb3ZlcnJp
ZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhXZWJD
b3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRleHRGaWVsZERpZEVu
ZEVkaXRpbmcoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0
ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgYm9vbCBkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoV2ViQ29yZTo6RWxlbWVu
dCosIFdlYkNvcmU6OktleWJvYXJkRXZlbnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
dGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHRleHREaWRDaGFuZ2VJblRleHRBcmVhKFdlYkNvcmU6OkVsZW1l
bnQqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgb3ZlcmZsb3dTY3JvbGxQb3NpdGlvbkNo
YW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhXZWJD
b3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZXh0RmllbGREaWRFbmRFZGl0aW5n
KFdlYkNvcmU6OkVsZW1lbnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHREaWRDaGFuZ2VJblRl
eHRGaWVsZChXZWJDb3JlOjpFbGVtZW50Kikgb3ZlcnJpZGU7CisgICAgYm9vbCBkb1RleHRGaWVs
ZENvbW1hbmRGcm9tRXZlbnQoV2ViQ29yZTo6RWxlbWVudCosIFdlYkNvcmU6OktleWJvYXJkRXZl
bnQqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRleHRXaWxsQmVEZWxldGVkSW5UZXh0RmllbGQoV2Vi
Q29yZTo6RWxlbWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFy
ZWEoV2ViQ29yZTo6RWxlbWVudCopIG92ZXJyaWRlOworICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxQ
b3NpdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZp
cnR1YWwgTlNTdHJpbmcgKnVzZXJWaXNpYmxlU3RyaW5nKE5TVVJMICopIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21B
dHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRlZFN0cmluZyAqLCBWZWN0b3I8IFJlZlB0cjxXZWJD
b3JlOjpBcmNoaXZlUmVzb3VyY2U+PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJ
bnNlcnRpb25QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgTlNVUkwqIGNhbm9uaWNhbGl6ZVVSTChOU1VSTCopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgTlNVUkwqIGNhbm9uaWNhbGl6ZVVSTFN0cmluZyhOU1N0cmluZyopIG92ZXJy
aWRlOworICAgIE5TU3RyaW5nICp1c2VyVmlzaWJsZVN0cmluZyhOU1VSTCAqKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpEb2N1bWVudEZyYWdtZW50KiBkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJp
YnV0ZWRTdHJpbmcoTlNBdHRyaWJ1dGVkU3RyaW5nICosIFZlY3RvcjwgUmVmUHRyPFdlYkNvcmU6
OkFyY2hpdmVSZXNvdXJjZT4+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRJbnNlcnRpb25QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIE5TVVJM
KiBjYW5vbmljYWxpemVVUkwoTlNVUkwqKSBvdmVycmlkZTsKKyAgICBOU1VSTCogY2Fub25pY2Fs
aXplVVJMU3RyaW5nKE5TU3RyaW5nKikgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFVTRShBUFBL
SVQpCi0gICAgdmlydHVhbCB2b2lkIHVwcGVyY2FzZVdvcmQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgbG93ZXJjYXNlV29yZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYXBp
dGFsaXplV29yZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBwZXJjYXNlV29yZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgbG93ZXJjYXNlV29yZCgpIG92ZXJyaWRlOworICAgIHZvaWQgY2FwaXRhbGl6
ZVdvcmQoKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2hvd1N1YnN0aXR1dGlvbnNQYW5lbChib29sIHNob3cp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBzdWJzdGl0dXRpb25zUGFuZWxJc1Nob3dpbmco
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVu
YWJsZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljUXVvdGVT
dWJzdGl0dXRpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRv
bWF0aWNMaW5rRGV0ZWN0aW9uKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGlzQXV0b21h
dGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJsZWQoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCBib29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rp
b24oKSBvdmVycmlkZTsKKyAgICB2b2lkIHNob3dTdWJzdGl0dXRpb25zUGFuZWwoYm9vbCBzaG93
KSBvdmVycmlkZTsKKyAgICBib29sIHN1YnN0aXR1dGlvbnNQYW5lbElzU2hvd2luZygpIG92ZXJy
aWRlOworICAgIHZvaWQgdG9nZ2xlU21hcnRJbnNlcnREZWxldGUoKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB0b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbigpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQg
dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNBdXRv
bWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xl
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbigpIG92ZXJyaWRlOworICAgIGJvb2wgaXNBdXRvbWF0
aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB0b2dnbGVBdXRv
bWF0aWNUZXh0UmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKKyAgICBib29sIGlzQXV0b21hdGljU3Bl
bGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgdG9nZ2xlQXV0b21h
dGljU3BlbGxpbmdDb3JyZWN0aW9uKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KEdUSykKQEAgLTEzMiw0MSArMTMyLDQxIEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q2hlY2tlckNs
aWVudCogdGV4dENoZWNrZXIoKSAgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogCi0gICAgdmly
dHVhbCBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBpZ25v
cmVXb3JkSW5TcGVsbERvY3VtZW50KGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBsZWFybldvcmQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTG9j
YXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmlu
ZyYgbWlzc3BlbGxlZFdvcmQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1t
YXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBp
bnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSBvdmVycmlkZTsK
KyAgICBib29sIHNob3VsZEVyYXNlTWFya2Vyc0FmdGVyQ2hhbmdlU2VsZWN0aW9uKFdlYkNvcmU6
OlRleHRDaGVja2luZ1R5cGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgaWdub3JlV29yZElu
U3BlbGxEb2N1bWVudChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGxlYXJuV29y
ZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmlu
ZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdM
ZW5ndGgpIG92ZXJyaWRlOworICAgIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JN
aXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJM
ZW5ndGgpIG92ZXJyaWRlOwogI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgdmly
dHVhbCBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBjaGVja1RleHRPZlBhcmFn
cmFwaChTdHJpbmdWaWV3LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVja2luZ1R5
cGVzKSBvdmVycmlkZTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiBj
aGVja1RleHRPZlBhcmFncmFwaChTdHJpbmdWaWV3LCBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBl
TWFzayBjaGVja2luZ1R5cGVzKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6R3JhbW1hckRldGFpbCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVT
cGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBzaG93U3BlbGxpbmdVSShib29sIHNob3cpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgYm9vbCBzcGVsbGluZ1VJSXNTaG93aW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3QgU3RyaW5nJiBj
b250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlRl
eHRDaGVja2luZ1JlcXVlc3Q+KSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlX
aXRoR3JhbW1hclN0cmluZyhjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRX
b3JkKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd1NwZWxsaW5nVUkoYm9v
bCBzaG93KSBvdmVycmlkZTsKKyAgICBib29sIHNwZWxsaW5nVUlJc1Nob3dpbmcoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGdldEd1ZXNzZXNGb3JXb3JkKGNvbnN0IFN0cmluZyYgd29yZCwgY29uc3Qg
U3RyaW5nJiBjb250ZXh0LCBWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlcykgb3ZlcnJpZGU7CisgICAg
dm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0SW5w
dXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVl
c3Q+KSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkU2hvd1VuaWNvZGVNZW51KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRTaG93VW5pY29k
ZU1lbnUoKSBvdmVycmlkZTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFs
IHZvaWQgc3RhcnREZWxheWluZ0FuZENvYWxlc2NpbmdDb250ZW50Q2hhbmdlTm90aWZpY2F0aW9u
cygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wRGVsYXlpbmdBbmRDb2FsZXNjaW5n
Q29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVEYXRhVG9QYXN0ZWJvYXJkKE5TRGljdGlvbmFyeSopIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgTlNBcnJheSAqc3VwcG9ydGVkUGFzdGVib2FyZFR5cGVzRm9yQ3VycmVudFNlbGVjdGlvbigp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgTlNBcnJheSAqcmVhZERhdGFGcm9tUGFzdGVib2FyZChO
U1N0cmluZyogdHlwZSwgaW50IGluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
UmljaGx5RWRpdGFibGVTZWxlY3Rpb24oKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RG9j
dW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVudEZyb21EZWxlZ2F0ZShpbnQgaW5kZXgpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3Jtc1R3b1N0ZXBQYXN0ZShXZWJDb3JlOjpE
b2N1bWVudEZyYWdtZW50Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgcGFzdGVib2FyZENo
YW5nZUNvdW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERlbGF5aW5nQW5kQ29hbGVzY2lu
Z0NvbnRlbnRDaGFuZ2VOb3RpZmljYXRpb25zKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdG9wRGVs
YXlpbmdBbmRDb2FsZXNjaW5nQ29udGVudENoYW5nZU5vdGlmaWNhdGlvbnMoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHdyaXRlRGF0YVRvUGFzdGVib2FyZChOU0RpY3Rpb25hcnkqKSBvdmVycmlkZTsK
KyAgICBOU0FycmF5ICpzdXBwb3J0ZWRQYXN0ZWJvYXJkVHlwZXNGb3JDdXJyZW50U2VsZWN0aW9u
KCkgb3ZlcnJpZGU7CisgICAgTlNBcnJheSAqcmVhZERhdGFGcm9tUGFzdGVib2FyZChOU1N0cmlu
ZyogdHlwZSwgaW50IGluZGV4KSBvdmVycmlkZTsKKyAgICBib29sIGhhc1JpY2hseUVkaXRhYmxl
U2VsZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgaW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkg
b3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCogZG9jdW1lbnRGcmFnbWVu
dEZyb21EZWxlZ2F0ZShpbnQgaW5kZXgpIG92ZXJyaWRlOworICAgIGJvb2wgcGVyZm9ybXNUd29T
dGVwUGFzdGUoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudCopIG92ZXJyaWRlOworICAgIGludCBw
YXN0ZWJvYXJkQ2hhbmdlQ291bnQoKSBvdmVycmlkZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzR2xvYmFsU2VsZWN0aW9uKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBzdXBwb3J0
c0dsb2JhbFNlbGVjdGlvbigpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZSogbV9wYWdlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBmMTY4NzdhZTFlMTQwN2ZhYjhjYzcx
M2Y3MzY1ZTAxYjc0MjM3Y2NlLi41ODEyNGI2OGZlMjhmODIxM2Q3M2M5ZTg4NzVhY2FmNjAyN2Ey
ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC00OCwyMDEgKzQ4LDIwMSBA
QCBwdWJsaWM6CiAgICAgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlcigpIGNvbnN0
IHsgcmV0dXJuIG1fZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXI7IH0KIAogcHJpdmF0ZToK
LSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzSFRNTFZpZXcoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzV2ViVmll
dygpIGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaGFzSFRNTFZpZXcoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3Zl
cnJpZGU7CisgICAgdm9pZCBtYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqKSBvdmVycmlkZTsKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBib29sIGZvcmNl
TGF5b3V0T25SZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIG92ZXJyaWRlOworICAgIGJvb2wgZm9yY2VM
YXlvdXRPblJlc3RvcmVGcm9tUGFnZUNhY2hlKCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0
dWFsIHZvaWQgZm9yY2VMYXlvdXRGb3JOb25IVE1MKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBmb3Jj
ZUxheW91dEZvck5vbkhUTUwoKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29waWVzT25TY3JvbGwoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvcGllc09uU2Nyb2xsKCkg
b3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaGVkRnJvbVBhcmVudDIoKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MygpIG92ZXJyaWRl
OworICAgIHZvaWQgZGV0YWNoZWRGcm9tUGFyZW50MigpIG92ZXJyaWRlOworICAgIHZvaWQgZGV0
YWNoZWRGcm9tUGFyZW50MygpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBhc3Np
Z25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
b3ZlcnJpZGU7CisgICAgdm9pZCBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRSZXF1
ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZWRpcmVjdFJlc3BvbnNlKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZFVzZUNyZWRlbnRp
YWxTdG9yYWdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBvdmVycmlkZTsKICNpZiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmKSBvdmVycmlk
ZTsKKyAgICBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSYpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9T
KQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY29ubmVjdGlvblByb3Bl
cnRpZXMoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
IG92ZXJyaWRlOworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNvbm5lY3Rpb25Qcm9w
ZXJ0aWVzKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVy
KSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBpbnQgZGF0YUxlbmd0aCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZGluZyhXZWJDb3JlOjpE
b2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRMb2FkUmVzb3VyY2VG
cm9tTWVtb3J5Q2FjaGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgaW50IGxl
bmd0aCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlQ29udGVudExlbmd0aChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgaW50IGRhdGFMZW5ndGgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0
Y2hEaWRGaW5pc2hMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWRpbmco
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKKyAgICBib29sIGRpc3BhdGNoRGlk
TG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGludCBsZW5ndGgpIG92ZXJyaWRlOwogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikK
LSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEYXRhRGV0ZWN0aW9uKE5TQXJyYXkg
KmRldGVjdGlvblJlc3VsdHMpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hE
YXRhRGV0ZWN0aW9uKE5TQXJyYXkgKmRldGVjdGlvblJlc3VsdHMpIG92ZXJyaWRlOwogI2VuZGlm
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVudHMo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoV2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpV
UkwmLCBkb3VibGUgaW50ZXJ2YWwsIGRvdWJsZSBmaXJlRGF0ZSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Uo
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBh
Z2UoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpJY29uVHlwZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcykgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCkgb3ZlcnJpZGU7Ci0KLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aFNob3coKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkRGlzcGF0Y2hPbmxvYWRFdmVu
dHMoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZENhbmNlbENs
aWVudFJlZGlyZWN0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFdpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6VVJMJiwgZG91YmxlIGludGVydmFsLCBkb3VibGUg
ZmlyZURhdGUpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGlu
UGFnZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5Q
YWdlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgp
IG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hXaWxsQ2xvc2UoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNo
RGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZ1dpdGhEaXJlY3Rpb24mKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoV2ViQ29yZTo6SWNvblR5cGUpIG92
ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEZp
bmlzaERvY3VtZW50TG9hZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hM
b2FkKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZXMpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hEaWRMYXlvdXQoKSBv
dmVycmlkZTsKKworICAgIFdlYkNvcmU6OkZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3Qg
V2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hT
aG93KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUG9saWN5
Q2hlY2soKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOworICAg
IHZvaWQgZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgV2ViQ29y
ZTo6TmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFdl
YkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25B
Y3Rpb24mLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OkZvcm1TdGF0ZT4sIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOwor
ICAgIHZvaWQgY2FuY2VsUG9saWN5Q2hlY2soKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBvdmVycmlkZTsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KFBhc3NSZWZQdHI8V2Vi
Q29yZTo6Rm9ybVN0YXRlPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoV2ls
bFN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+LCBXZWJDb3JlOjpGcmFt
ZVBvbGljeUZ1bmN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoV2lsbFNlbmRTdWJt
aXRFdmVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIG92ZXJyaWRlOworICAgIHZv
aWQgZGlzcGF0Y2hXaWxsU3VibWl0Rm9ybShQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4s
IFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24pIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1
YWwgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZXZlcnRUb1Byb3Zpc2lvbmFsU3RhdGUoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9yKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRl
OwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKSBvdmVy
cmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnREb3dubG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSBTdHJpbmco
KSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IFN0cmluZygpKSBvdmVy
cmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENo
YW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlcGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3aWxsUmVwbGFjZU11bHRpcGFydENvbnRlbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJl
cGxhY2VNdWx0aXBhcnRDb250ZW50KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopIG92ZXJyaWRlOwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVHbG9i
YWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBib29sIHNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRl
bSopIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250
ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBi
b29sIGRpZEJsb2NrRW50aXJlUGFnZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpVUkwmLCBib29sIGRpZEJsb2Nr
RW50aXJlUGFnZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEJsb2NrZXJFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBpbnRl
cnJ1cHRlZEZvclBvbGljeUNoYW5nZUVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50
QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxl
RG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxl
TG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGZpbGVEb2VzTm90RXhpc3RFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFu
ZGxlTG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBvdmVycmlkZTsK
ICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkRmFsbEJhY2soY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpIG92ZXJyaWRlOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBj
YW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlw
ZUFzSFRNTChjb25zdCBTdHJpbmcmIE1JTUVUeXBlKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJiBV
UkxTY2hlbWUpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIGdlbmVyYXRlZE1J
TUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5TaG93TUlNRVR5cGVB
c0hUTUwoY29uc3QgU3RyaW5nJiBNSU1FVHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBy
ZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBTdHJpbmcmIFVSTFNjaGVtZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1l
KGNvbnN0IFN0cmluZyYgVVJMU2NoZW1lKSBjb25zdCBvdmVycmlkZTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgZnJhbWVMb2FkQ29tcGxldGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNhdmVWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVzdG9yZVZpZXdTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZUZvckRh
dGFTb3VyY2VSZXBsYWNlbWVudCgpIG92ZXJyaWRlOworICAgIHZvaWQgZnJhbWVMb2FkQ29tcGxl
dGVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlVmlld1N0YXRlVG9JdGVtKFdlYkNvcmU6Okhp
c3RvcnlJdGVtKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXN0b3JlVmlld1N0YXRlKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwcm92aXNpb25hbExvYWRTdGFydGVkKCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJj
ZVJlcGxhY2VtZW50KCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBSZWY8V2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlN1YnN0aXR1dGVEYXRhJikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNhY2hlZERvY3VtZW50TG9hZGVyKFdlYkNvcmU6OkRvY3Vt
ZW50TG9hZGVyJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQ2Fj
aGVkRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXImKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNv
cmU6OlVSTCYpIG92ZXJyaWRlOworICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6
VVJMJikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFU
b0NhY2hlZEZyYW1lKFdlYkNvcmU6OkNhY2hlZEZyYW1lKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHRyYW5zaXRpb25Ub0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNo
ZWRGcmFtZSopIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVkRnJh
bWUoV2ViQ29yZTo6Q2FjaGVkRnJhbWUqKSBvdmVycmlkZTsKKyAgICB2b2lkIHRyYW5zaXRpb25U
b0NvbW1pdHRlZEZyb21DYWNoZWRGcmFtZShXZWJDb3JlOjpDYWNoZWRGcmFtZSopIG92ZXJyaWRl
OwogI2lmIFBMQVRGT1JNKElPUykKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzdG9yZUZyYW1lSGll
cmFyY2h5Rm9yQ2FjaGVkRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlc3RvcmVGcmFt
ZUhpZXJhcmNoeUZvckNhY2hlZEZyYW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFs
IHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIG92ZXJyaWRlOworICAgIHZv
aWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCB2b2lkIGRpZFNhdmVUb1BhZ2VDYWNoZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkU2F2ZVRv
UGFnZUNhY2hlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZXN0b3JlRnJvbVBhZ2VDYWNoZSgp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQmVjb21lRnJhbWVzZXQo
Ym9vbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaXNwYXRjaERpZEJlY29tZUZyYW1lc2V0KGJvb2wp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBXZWJDb3JlOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBv
dmVycmlkZTsKKyAgICBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZv
aWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKiwgV2ViQ29yZTo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAor
ICAgIFJlZlB0cjxXZWJDb3JlOjpGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiBuYW1lLCBXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgYm9vbCBhbGxvd3NTY3JvbGxpbmcsIGludCBtYXJnaW5XaWR0aCwgaW50IG1hcmdp
bkhlaWdodCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6V2lk
Z2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxQ
bHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4m
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVjcmVhdGVQbHVnaW4oV2ViQ29yZTo6V2lk
Z2V0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdl
YkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KSBvdmVycmlkZTsKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6V2lkZ2V0PiBjcmVhdGVQbHVnaW4oY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6
OkhUTUxQbHVnSW5FbGVtZW50KiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1h
bnVhbGx5KSBvdmVycmlkZTsKKyAgICB2b2lkIHJlY3JlYXRlUGx1Z2luKFdlYkNvcmU6OldpZGdl
dCopIG92ZXJyaWRlOworICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lk
Z2V0KiBwbHVnaW5XaWRnZXQpIG92ZXJyaWRlOwogICAgIAogI2lmIEVOQUJMRShXRUJHTCkKLSAg
ICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25z
dCBTdHJpbmcmKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3Qgb3Zl
cnJpZGU7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFN0cmluZyYpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGlj
eSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3Qgb3ZlcnJpZGU7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNv
cmU6OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgV2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQqLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VV
UkwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgcGFyYW1WYWx1ZXMpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0
PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3Jl
OjpIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZh
bHVlcykgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBXZWJDb3JlOjpPYmplY3RDb250ZW50
VHlwZSBvYmplY3RDb250ZW50VHlwZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBvdmVycmlkZU1lZGlhVHlw
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlIG9iamVj
dENvbnRlbnRUeXBlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IG92ZXJyaWRlOworICAgIFN0cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxk
KFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hE
aWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkJikgb3Zl
cnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoR2xvYmFsT2JqZWN0QXZhaWxh
YmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVj
dChXZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Ub0dsb2JhbE9iamVjdChX
ZWJDb3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hXaWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJD
b3JlOjpET01XaW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc3BhdGNoR2xv
YmFsT2JqZWN0QXZhaWxhYmxlKFdlYkNvcmU6OkRPTVdyYXBwZXJXb3JsZCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9i
YWxPYmplY3QoV2ViQ29yZTo6RE9NV2luZG93RXh0ZW5zaW9uKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaXNwYXRjaERpZFJlY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvblRvR2xvYmFsT2JqZWN0KFdl
YkNvcmU6OkRPTVdpbmRvd0V4dGVuc2lvbiopIG92ZXJyaWRlOworICAgIHZvaWQgZGlzcGF0Y2hX
aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbihXZWJDb3JlOjpET01X
aW5kb3dFeHRlbnNpb24qKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZv
ckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0ZW4gPSB0cnVlKSBvdmVycmlkZTsKKyAgICB2b2lk
IHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihib29sIGxpc3RlbiA9IHRydWUpIG92ZXJyaWRl
OwogICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHZpcnR1YWwgUmVtb3RlQVhPYmplY3RS
ZWYgYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgpIG92ZXJyaWRlOworICAgIFJlbW90ZUFYT2Jq
ZWN0UmVmIGFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKSBvdmVycmlkZTsKICAgICAKLSAgICB2
aXJ0dWFsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqIHdpbGxDYWNoZVJlc3BvbnNlKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBOU0NhY2hlZFVSTFJlc3Bv
bnNlKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTlNDYWNoZWRVUkxSZXNwb25zZSogd2lsbENhY2hl
UmVzcG9uc2UoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIsIE5TQ2FjaGVkVVJMUmVzcG9uc2UqKSBjb25zdCBvdmVycmlkZTsKICNlbmRpZgogCi0gICAg
dmlydHVhbCBib29sIHNob3VsZEFsd2F5c1VzZVBsdWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYg
LyptaW1lVHlwZSovKSBjb25zdCBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEFsd2F5c1VzZVBs
dWdpbkRvY3VtZW50KGNvbnN0IFN0cmluZyYgLyptaW1lVHlwZSovKSBjb25zdCBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSBvdmVycmlkZTsKKyAgICBi
b29sIGFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKSBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRGb3JjZVVuaXZlcnNhbEFjY2Vzc0Zyb21Mb2NhbFVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEZvcmNlVW5pdmVyc2Fs
QWNjZXNzRnJvbUxvY2FsVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCkgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpG
cmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpIG92ZXJyaWRl
OwogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQVVUT0NPTVBMRVRFKQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZXF1ZXN0QXV0b2NvbXBsZXRlKFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Rm9ybVN0YXRlPikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZVBhZ2VUcmFuc2l0aW9uSWZOZWVkZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUGFnZVRy
YW5zaXRpb25JZk5lZWRlZCgpIG92ZXJyaWRlOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJDb3JlOjpRdWlja0xvb2tI
YW5kbGUmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZENyZWF0ZVF1aWNrTG9va0hhbmRsZShXZWJD
b3JlOjpRdWlja0xvb2tIYW5kbGUmKSBvdmVycmlkZTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5oCmluZGV4IDdlM2Fk
YWQyMWM0YzZiM2RmY2ZkNmVmYWRlZGY4MTU0YjAxNjcwZmMuLjMxNThlMDg1NGY0ZDQxYjU0YzM5
NDFmZTkwYzRiY2FlYzg3ODUzYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmgKQEAg
LTQyLDE2ICs0MiwxNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2ViR2VvbG9jYXRpb25DbGll
bnQoKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25EZXN0cm95ZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIGdlb2xvY2F0aW9uRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzdG9wVXBkYXRpbmcoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxl
SGlnaEFjY3VyYWN5KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRVcGRhdGluZygpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRF
bmFibGVIaWdoQWNjdXJhY3koYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6
Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOworICAgIFdlYkNv
cmU6Okdlb2xvY2F0aW9uUG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6Okdlb2xvY2F0aW9uKikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFBlcm1pc3Npb25SZXF1ZXN0KFdlYkNvcmU6
Okdlb2xvY2F0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJD
b3JlOjpHZW9sb2NhdGlvbiopIG92ZXJyaWRlOworICAgIHZvaWQgY2FuY2VsUGVybWlzc2lvblJl
cXVlc3QoV2ViQ29yZTo6R2VvbG9jYXRpb24qKSBvdmVycmlkZTsKIAogCiAgICAgV2ViUGFnZSog
bV9wYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDMzMzBiZjQ4ZjQyZWEw
MTlkYzVjY2VjOWUwZThjNWQ3ZDgzMGEzZDUuLjY1NTc5NzlmMmM1M2VlMWY4YTFjMzhiODE3Y2Ux
NGRhZTcxNmYwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5SZXBhaW50SW5kaWNhdG9yTGF5ZXJD
bGllbnQoKSB7IH0KIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkVu
ZGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZQor
ICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uRW5kZWQoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIs
IGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX2luc3BlY3RvckNsaWVu
dC5hbmltYXRpb25FbmRlZEZvckxheWVyKGxheWVyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaAppbmRleCA4YTcxZDkwOWQ1MDk3ZjA0YzkzZmYwMmVhYjRlNmFkZTI4ZTI5NDhjLi4y
Zjc5YzZhZGNkZDNjMTM0OGJmZjI4ZDc3OWM4YmNkZWMwMGIwNjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmgKQEAgLTYwLDIxICs2MCwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQgaGlkZUhp
Z2hsaWdodCgpIG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9p
ZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBo
aWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgc2hvd0luc3BlY3Rv
ckluZGljYXRpb24oKSBvdmVycmlkZTsKKyAgICB2b2lkIGhpZGVJbnNwZWN0b3JJbmRpY2F0aW9u
KCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShi
b29sKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCkgb3Zl
cnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBvdmVycmlkZXNTaG93UGFpbnRSZWN0
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2hv
d1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBib29s
IG92ZXJyaWRlc1Nob3dQYWludFJlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZvaWQgc2hvd1BhaW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVy
cmlkZTsKIAogICAgIC8vIFBhZ2VPdmVybGF5OjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgcGFn
ZU92ZXJsYXlEZXN0cm95ZWQoV2ViQ29yZTo6UGFnZU92ZXJsYXkmKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbE1vdmVUb1BhZ2UoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3Jl
OjpQYWdlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb1BhZ2UoV2ViQ29y
ZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGRyYXdSZWN0KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9v
bCBtb3VzZUV2ZW50KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgY29uc3QgV2ViQ29yZTo6UGxhdGZv
cm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChX
ZWJDb3JlOjpQYWdlT3ZlcmxheSYpIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbE1vdmVUb1BhZ2Uo
V2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkaWRNb3ZlVG9QYWdlKFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFnZSopIG92
ZXJyaWRlOworICAgIHZvaWQgZHJhd1JlY3QoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBtb3VzZUV2ZW50KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgY29uc3QgV2ViQ29yZTo6
UGxhdGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGFuaW1hdGlvbkVuZGVk
Rm9yTGF5ZXIoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5hdmlnYXRvckNvbnRl
bnRVdGlsc0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGllbnQuaAppbmRleCA1YzM1NzZkYjQyMjY1M2Y3
MTgxZGRmMWVkOWE3MThhNDJhNDE1NGIwLi5kODZkNjRjNjcyYTViODRlNGI5OGZmZDIyMDYwYmM5
Y2M2ZWFhYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYk5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTmF2aWdhdG9yQ29udGVudFV0aWxzQ2xp
ZW50LmgKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYk5hdmlnYXRv
ckNvbnRlbnRVdGlsc0NsaWVudCgpIHsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwgY29uc3QgVVJMJiBi
YXNlVVJMLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGUgeyB9
CisgICAgdm9pZCByZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGVtZSwg
Y29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkg
b3ZlcnJpZGUgeyB9CiAKICNpZiBFTkFCTEUoQ1VTVE9NX1NDSEVNRV9IQU5ETEVSKQogICAgIHZp
cnR1YWwgQ3VzdG9tSGFuZGxlcnNTdGF0ZSBpc1Byb3RvY29sSGFuZGxlclJlZ2lzdGVyZWQoY29u
c3QgU3RyaW5nJiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJikgeyByZXR1cm4gQ3VzdG9tSGFuZGxl
cnNEZWNsaW5lZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggMjk3MzMx
NTMxZmYyOTRiYzA4ZjVhZjZlNGFjMjRiOGM5N2I1NmU0Mi4uMWRmMjU1ZTYyZTYzZGZjYjAzZjJm
MTZiYTA5MGE3OWNlOTFmYmExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBA
IC00NiwyMCArNDYsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYk5vdGlmaWNhdGlvbkNs
aWVudCgpOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbiopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90
aWZpY2F0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9u
cyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIG5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24q
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ry
b3llZCgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0Kikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKExFR0FDWV9OT1RJRklD
QVRJT05TKQotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+KSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4pIG92ZXJyaWRl
OwogI2VuZGlmCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPFdlYkNvcmU6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjaz4pIG92ZXJyaWRlOwor
ICAgIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPikg
b3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUmVxdWVzdHNGb3JQZXJt
aXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzUGVuZGluZ1Blcm1pc3Npb25SZXF1ZXN0cyhXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOb3RpZmljYXRp
b25DbGllbnQ6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKSBvdmVycmlkZTsKKyAgICB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlz
c2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kikgb3ZlcnJpZGU7CisgICAgYm9v
bCBoYXNQZW5kaW5nUGVybWlzc2lvblJlcXVlc3RzKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSBjb25zdCBvdmVycmlkZTsKKyAgICBOb3RpZmljYXRpb25DbGllbnQ6OlBlcm1pc3Np
b24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBvdmVy
cmlkZTsKICAgICAKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKaW5kZXggMTc2ODk4ZDhmOTI3OWNkZTlhNTE4YjI5NzVlZjk1YWExMzA2Njdk
OC4uNWZkYTM0YjQzNjY2ZGY0ODVjN2NlMjIwYTdhNTQ1ODliYzNjZWUyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC00NSw2MCArNDUsNjAgQEAgcHJpdmF0ZToKICAgICBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMoKTsKICAgICAKICAgICAvLyBXZWJDb3JlOjpQbGF0Zm9ybVN0
cmF0ZWdpZXMKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneSogY3JlYXRlQ29v
a2llc1N0cmF0ZWd5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpMb2FkZXJTdHJh
dGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OlBhc3RlYm9hcmRTdHJhdGVneSogY3JlYXRlUGFzdGVib2FyZFN0cmF0ZWd5KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpQbHVnaW5TdHJhdGVneSogY3JlYXRlUGx1Z2luU3Ry
YXRlZ3koKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3Jl
YXRlQmxvYlJlZ2lzdHJ5KCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
KiBjcmVhdGVDb29raWVzU3RyYXRlZ3koKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpMb2FkZXJT
dHJhdGVneSogY3JlYXRlTG9hZGVyU3RyYXRlZ3koKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQ
YXN0ZWJvYXJkU3RyYXRlZ3kqIGNyZWF0ZVBhc3RlYm9hcmRTdHJhdGVneSgpIG92ZXJyaWRlOwor
ICAgIFdlYkNvcmU6OlBsdWdpblN0cmF0ZWd5KiBjcmVhdGVQbHVnaW5TdHJhdGVneSgpIG92ZXJy
aWRlOworICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeSogY3JlYXRlQmxvYlJlZ2lzdHJ5KCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKLSAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpVUkwm
LCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJMJikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6VVJM
Jikgb3ZlcnJpZGU7CisgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKIAogICAgIC8vIFdl
YkNvcmU6OlBsdWdpblN0cmF0ZWd5Ci0gICAgdmlydHVhbCB2b2lkIHJlZnJlc2hQbHVnaW5zKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkluZm8oY29uc3QgV2ViQ29yZTo6
UGFnZSosIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBnZXRXZWJWaXNpYmxlUGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVj
dG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCByZWZyZXNoUGx1
Z2lucygpIG92ZXJyaWRlOworICAgIHZvaWQgZ2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQ
YWdlKiwgVmVjdG9yPFdlYkNvcmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBn
ZXRXZWJWaXNpYmxlUGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiwgVmVjdG9yPFdlYkNv
cmU6OlBsdWdpbkluZm8+Jikgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gUGx1
Z2luTG9hZENsaWVudFBvbGljaWVzQnlCdW5kbGVWZXJzaW9uOwogICAgIHR5cGVkZWYgSGFzaE1h
cDxTdHJpbmcsIFBsdWdpbkxvYWRDbGllbnRQb2xpY2llc0J5QnVuZGxlVmVyc2lvbj4gUGx1Z2lu
UG9saWN5TWFwc0J5SWRlbnRpZmllcjsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZl
cnNpb25TdHJpbmcpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQbHVnaW5Mb2FkQ2xpZW50UG9saWN5
KFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3ksIGNvbnN0IFN0cmluZyYgaG9zdCwgY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHZlcnNpb25TdHJpbmcp
IG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpIG92ZXJyaWRl
OwogI2VuZGlmCiAKICAgICAvLyBXZWJDb3JlOjpQYXN0ZWJvYXJkU3RyYXRlZ3kKICNpZiBQTEFU
Rk9STShJT1MpCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNv
cmU6OlBhc3RlYm9hcmRXZWJDb250ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBhc3RlYm9hcmRJbWFnZSYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCB3cml0ZVRvUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBnZXRQ
YXN0ZWJvYXJkSXRlbXNDb3VudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHJlYWRCdWZmZXJGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZFR5cGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6VVJMIHJlYWRVUkxG
cm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudCgpIG92ZXJyaWRlOworICAgIHZv
aWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29uc3QgV2ViQ29yZTo6UGFzdGVib2FyZFdlYkNvbnRlbnQm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdyaXRlVG9QYXN0ZWJvYXJkKGNvbnN0IFdlYkNvcmU6OlBh
c3RlYm9hcmRJbWFnZSYpIG92ZXJyaWRlOworICAgIHZvaWQgd3JpdGVUb1Bhc3RlYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
aW50IGdldFBhc3RlYm9hcmRJdGVtc0NvdW50KCkgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZChpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5
cGUpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiByZWFk
QnVmZmVyRnJvbVBhc3RlYm9hcmQoaW50IGluZGV4LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRU
eXBlKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpVUkwgcmVhZFVSTEZyb21QYXN0ZWJvYXJkKGlu
dCBpbmRleCwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSkgb3ZlcnJpZGU7CisgICAgbG9u
ZyBjaGFuZ2VDb3VudCgpIG92ZXJyaWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgdmlydHVhbCB2b2lkIGdldFR5cGVzKFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYnVmZmVyRm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0aG5hbWVzLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyBzdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgbG9uZyBjaGFuZ2VDb3VudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFN0cmluZyB1bmlxdWVOYW1lKCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpDb2xvciBjb2xvcihjb25zdCBTdHJpbmcmIHBhc3RlYm9h
cmROYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlVSTCB1cmwoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBnZXRUeXBlcyhWZWN0b3I8
U3RyaW5nPiYgdHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOwor
ICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBidWZmZXJGb3JUeXBlKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOworICAgIHZvaWQgZ2V0UGF0aG5hbWVzRm9yVHlwZShWZWN0b3I8U3RyaW5nPiYgcGF0
aG5hbWVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc3RyaW5nRm9yVHlwZShjb25zdCBTdHJp
bmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlk
ZTsKKyAgICBsb25nIGNoYW5nZUNvdW50KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92
ZXJyaWRlOworICAgIFN0cmluZyB1bmlxdWVOYW1lKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
Q29sb3IgY29sb3IoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAg
V2ViQ29yZTo6VVJMIHVybChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsK
IAotICAgIHZpcnR1YWwgbG9uZyBhZGRUeXBlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFzdGVi
b2FyZFR5cGVzLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBl
cywgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBs
b25nIGNvcHkoY29uc3QgU3RyaW5nJiBmcm9tUGFzdGVib2FyZCwgY29uc3QgU3RyaW5nJiB0b1Bh
c3RlYm9hcmQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgbG9uZyBzZXRCdWZmZXJGb3JUeXBlKFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
VHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KSBvdmVycmlkZTsKKyAgICBsb25nIGFkZFR5cGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXN0
ZWJvYXJkVHlwZXMsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAg
IGxvbmcgc2V0VHlwZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhc3RlYm9hcmRUeXBlcywgY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgbG9uZyBjb3B5KGNvbnN0
IFN0cmluZyYgZnJvbVBhc3RlYm9hcmQsIGNvbnN0IFN0cmluZyYgdG9QYXN0ZWJvYXJkKSBvdmVy
cmlkZTsKKyAgICBsb25nIHNldEJ1ZmZlckZvclR5cGUoUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+LCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBsb25nIHNldFBhdGhuYW1lc0ZvclR5cGUoY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lKSBvdmVycmlkZTsKKyAgICBsb25nIHNldFN0cmluZ0ZvclR5
cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKaW5kZXggYjI2ZmVlNzMyYjdmZmMzMzA0ZDUy
ZjhmYzA2MDcxMDlmMTZjNGVlNi4uMGNhYzAyOWI5MzMzMjhiYTU4MDFmNWE5ZTZjOTdmOGU4OWQ5
Njc2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBvcHVwTWVudS5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENs
aWVudDsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgc2hvdyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgV2ViQ29yZTo6RnJhbWVWaWV3KiwgaW50IGluZGV4KSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgaGlkZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGcm9t
RWxlbWVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0Q2xpZW50KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzaG93KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBXZWJDb3Jl
OjpGcmFtZVZpZXcqLCBpbnQgaW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgaGlkZSgpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRp
c2Nvbm5lY3RDbGllbnQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBXZWJQb3B1cE1lbnUo
V2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUHJvZ3Jl
c3NUcmFja2VyQ2xpZW50LmgKaW5kZXggYjllZDIzYmUxOTZiZmVmZTQwZTA0MTExOTAyZmZlZjNk
MWM2MjZiZC4uNWRkNjViZmEwZDUwY2NmZGIxNDYxZmViM2ZlNTI0MWZjYWEwZmJhNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oCkBAIC0zNywxMSArMzcsMTEgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChXZWJQYWdlJik7CiAg
ICAgCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBwcm9ncmVzc1RyYWNrZXJEZXN0cm95ZWQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2dyZXNzVHJhY2tlckRlc3Ryb3llZCgpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIHByb2dyZXNzU3RhcnRlZChXZWJDb3JlOjpGcmFtZSYgb3Jp
Z2luYXRpbmdQcm9ncmVzc0ZyYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvZ3Jl
c3NFc3RpbWF0ZUNoYW5nZWQoV2ViQ29yZTo6RnJhbWUmIG9yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFt
ZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHByb2dyZXNzRmluaXNoZWQoV2ViQ29yZTo6
RnJhbWUmIG9yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwcm9n
cmVzc1N0YXJ0ZWQoV2ViQ29yZTo6RnJhbWUmIG9yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBwcm9ncmVzc0VzdGltYXRlQ2hhbmdlZChXZWJDb3JlOjpGcmFtZSYg
b3JpZ2luYXRpbmdQcm9ncmVzc0ZyYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHByb2dyZXNzRmlu
aXNoZWQoV2ViQ29yZTo6RnJhbWUmIG9yaWdpbmF0aW5nUHJvZ3Jlc3NGcmFtZSkgb3ZlcnJpZGU7
CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmgK
aW5kZXggNzU1MTcyMzE3MzU3NDQ5Mjg3Y2ViMzdmYTZlMTBjMDJhZWE1Zjg1NC4uNGU1YjNiNjZj
NjEzNTJmZWE5Nzg4ZGU2ZDI5MjkwOGZmZGYxMjNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5oCkBAIC0zMCwxMCArMzAsMTAgQEAgY2xhc3MgV2ViU2VhcmNoUG9wdXBNZW51IDogcHVibGlj
IFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJT
ZWFyY2hQb3B1cE1lbnU+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50
Kik7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBvcHVwTWVudSogcG9wdXBNZW51KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBXVEY6OkF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4mKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IFdURjo6QXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8V2ViQ29yZTo6UmVjZW50U2VhcmNoPiYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UG9w
dXBNZW51KiBwb3B1cE1lbnUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJl
Y2VudFNlYXJjaD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIGxvYWRSZWNlbnRTZWFyY2hlcyhjb25z
dCBXVEY6OkF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFdlYkNvcmU6OlJlY2VudFNlYXJjaD4m
KSBvdmVycmlkZTsKKyAgICBib29sIGVuYWJsZWQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAg
ICBXZWJTZWFyY2hQb3B1cE1lbnUoV2ViUGFnZSosIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWJyYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViVmlicmF0aW9uQ2xpZW50LmgKaW5kZXggMGNkM2I2NWZkMTQ0N2YyODEwZDZiN2Ey
M2MxMDFiN2UxYWQ4OWUyNy4uMGYwMGE1Y2VmZGUxZTU1ZDQyYTlmODI1ZjcyM2RhNTFiMWRmNjVm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJWaWJyYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlZpYnJhdGlvbkNsaWVudC5oCkBAIC00NCw5ICs0NCw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5XZWJWaWJyYXRpb25DbGllbnQoKSB7IH0KIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgdmlicmF0ZShjb25zdCB1bnNpZ25lZCYgdmlicmF0aW9uVGltZSkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNhbmNlbFZpYnJhdGlvbigpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHZpYnJh
dGUoY29uc3QgdW5zaWduZWQmIHZpYnJhdGlvblRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgY2Fu
Y2VsVmlicmF0aW9uKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB2aWJyYXRpb25EZXN0cm95ZWQoKSBv
dmVycmlkZTsKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJRdWlja0xvb2tIYW5kbGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dl
YlF1aWNrTG9va0hhbmRsZUNsaWVudC5oCmluZGV4IGZmODczMGFhMTQzZDg1ZGIyNDAyOTk3YWEx
MzJmOGMzOTEzOTM0ZTQuLjMzMTE4OTAyZGU4NzFkZGZlNGE3YWIzNmRjYTc0NzgyZmI4MTZhZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5oCkBAIC01MCw5
ICs1MCw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJRdWlja0xvb2tIYW5kbGVDbGll
bnQoY29uc3QgV2ViQ29yZTo6UXVpY2tMb29rSGFuZGxlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5
KENGQXJyYXlSZWYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJy
aWRlOworICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwogCiAgICAgY29uc3QgU3RyaW5nIG1f
ZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDNkNDU4MWFhNDhhZTNkZjhkNjA2ODEzNjY5
NmE0OGM5YjhjZDRkMWIuLjBkZWY0YTRjMGM0ZTlhNGMxZDNlN2E4M2U5MzgwNDQ5YjM3ODQ3NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKQEAgLTUz
LDEyICs1MywxMiBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
bG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgU2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0RGF0YSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJj
ZUFwcGxpY2F0aW9uSWRlbnRpZmllcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBs
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgU2No
ZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBj
b25zdCBvdmVycmlkZTsKKyAgICBTdHJpbmcgc291cmNlQXBwbGljYXRpb25JZGVudGlmaWVyKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Qgb3ZlcnJpZGU7CisgICAgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IG92ZXJy
aWRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1JlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oCmluZGV4IDkwNjlkOTIwYWVhOTA0Y2E1OGI1NjNkNzBhNjNhZmNkNmZi
YTA4YjIuLjhjNWE1Yzk1ZGU2MjdlMGU3MjgzNWJjNGQxMjg3Mjk3ZmMxMDYwNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9SZW1vdGVMYXllclRy
ZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9yLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgflJlbW90ZUxheWVyVHJl
ZURpc3BsYXlSZWZyZXNoTW9uaXRvcigpOwogCi0gICAgdmlydHVhbCBib29sIHJlcXVlc3RSZWZy
ZXNoQ2FsbGJhY2soKSBvdmVycmlkZTsKKyAgICBib29sIHJlcXVlc3RSZWZyZXNoQ2FsbGJhY2so
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlkVXBkYXRlTGF5ZXJzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkRHJhd2luZ0FyZWEuaAppbmRleCBhOTJi
ZjBmOWU3YjhjMDZiZDJlYmNmMTc0ZDAzYjUxMTVkNWJhMWJiLi5kMGI5ZjNlNDZhMmNiOGI5NWRj
ZDlhMTVjNDQyMDMxMzQ2ODgyODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZERyYXdpbmdBcmVhLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWREcmF3aW5nQXJlYS5oCkBAIC00NSwzMiArNDUsMzIgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVhCi0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
RGlzcGxheSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlQmFj
a2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJv
b2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbjsgfQotICAgIHZpcnR1YWwgTGF5ZXJUcmVlSG9zdCogbGF5ZXJU
cmVlSG9zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdC5nZXQoKTsg
fQotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0UGFpbnRpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFw
aGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRp
bmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9z
aXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
dmlld1N0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlZpZXdTdGF0ZTo6RmxhZ3MsIGJvb2wgLyogd2Fu
dHNEaWRVcGRhdGVWaWV3U3RhdGUgKi8sIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIC8qIGNhbGxi
YWNrSURzICovKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoVmlld092ZXJsYXlH
cmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TGF5
ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKKyAgICBib29sIGxheWVyVHJlZVN0
YXRlSXNGcm96ZW4oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xheWVyVHJlZVN0YXRlSXNG
cm96ZW47IH0KKyAgICBMYXllclRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sYXllclRyZWVIb3N0LmdldCgpOyB9CisgICAgdm9pZCBmb3JjZVJlcGFp
bnQoKSBvdmVycmlkZTsKKyAgICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxi
YWNrSUQpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRQYWludGluZ0VuYWJsZWQoYm9vbCkgb3Zl
cnJpZGU7CisgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJikgb3ZlcnJpZGU7CisgICAgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworCisgICAgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOworICAg
IHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRl
OworCisgICAgdm9pZCBkaWRSZWNlaXZlQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisKKyAgICB2
b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzLCBib29sIC8q
IHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlICovLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiAvKiBj
YWxsYmFja0lEcyAqLykgb3ZlcnJpZGU7CisgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBo
aWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJp
ZGU7CiAKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3RhdGVJRCwgYm9vbCBy
ZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZUJhY2tpbmdTdG9yZVN0YXRlKHVpbnQ2NF90IGJhY2tpbmdTdG9y
ZVN0YXRlSUQsIGJvb2wgcmVzcG9uZEltbWVkaWF0ZWx5LCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
ciwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9s
bE9mZnNldCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRQYWludGluZygpOwog
ICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQYWludGluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDFjNzJlMmU3
MzUzN2M3MmQyNTdjM2E3OGJiMDY1MjQ2MjM0NjE4YWIuLmExZWUzNzBiMzM5NDE5M2I1NTAwZTQ5
NjU1MDQ1MmQzNzdkZjZiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC00MywzNCArNDMsMzQgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSop
OwogICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpOwogCi0gICAgdmlydHVh
bCBjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbV9sYXllclRyZWVDb250ZXh0OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldExheWVyRmx1
c2hTY2hlZHVsaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2No
ZWR1bGVMYXllckZsdXNoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZE5v
dGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1c2goYm9vbCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJyaWRlOwotCi0g
ICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgb3Zl
cnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWRE
aXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VSZXBhaW50KCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxi
YWNrSUQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIG5ld1NpemUpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHBh
dXNlUmVuZGVyaW5nKCkgb3ZlcnJpZGUgeyBtX2lzU3VzcGVuZGVkID0gdHJ1ZTsgfQotICAgIHZp
cnR1YWwgdm9pZCByZXN1bWVSZW5kZXJpbmcoKSBvdmVycmlkZSB7IG1faXNTdXNwZW5kZWQgPSBm
YWxzZTsgc2NoZWR1bGVMYXllckZsdXNoKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQ
YWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VC
YWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIG92ZXJyaWRl
OworICAgIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBvdmVycmlk
ZSB7IHJldHVybiBtX2xheWVyVHJlZUNvbnRleHQ7IH0KKyAgICB2b2lkIHNldExheWVyRmx1c2hT
Y2hlZHVsaW5nRW5hYmxlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlTGF5ZXJG
bHVzaCgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1
bGVkTGF5ZXJGbHVzaChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJvb3RDb21wb3NpdGlu
Z0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFs
aWRhdGUoKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVl
ZERpc3BsYXkoKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50
c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZSB7IH0K
KyAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKKyAg
ICBib29sIGZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSBv
dmVycmlkZTsKKworICAgIHZvaWQgcGF1c2VSZW5kZXJpbmcoKSBvdmVycmlkZSB7IG1faXNTdXNw
ZW5kZWQgPSB0cnVlOyB9CisgICAgdm9pZCByZXN1bWVSZW5kZXJpbmcoKSBvdmVycmlkZSB7IG1f
aXNTdXNwZW5kZWQgPSBmYWxzZTsgc2NoZWR1bGVMYXllckZsdXNoKCk7IH0KKyAgICB2b2lkIGRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZUJh
Y2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
RmFjdG9yeSogZ3JhcGhpY3NMYXllckZhY3RvcnkoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIG1haW5Db250ZW50c0xheWVyKCk7CiAKICNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5p
bWF0aW9uKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2hlZHVsZUFuaW1hdGlvbigpIG92ZXJyaWRl
OwogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld092ZXJsYXlSb290TGF5ZXIoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmlld092ZXJsYXlS
b290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGluYXRl
ZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3Vy
ZmFjZTo6RmxhZ3MpOwogCkBAIC05MSwxMCArOTEsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVw
ZGF0ZVJvb3RMYXllcnMoKTsKIAogICAgIC8vIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVu
dAotICAgIHZpcnR1YWwgdm9pZCBkaWRGbHVzaFJvb3RMYXllcihjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeUZsdXNoUmVxdWlyZWQoKSBvdmVycmlkZSB7IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOyB9Owot
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwYWludExheWVy
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRpZEZsdXNoUm9vdExheWVyKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdmlzaWJs
ZUNvbnRlbnRSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoKSBv
dmVycmlkZSB7IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOyB9OworICAgIHZvaWQgY29tbWl0U2NlbmVT
dGF0ZShjb25zdCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xp
cFJlY3QpIG92ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbXBvc2l0
aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IDc3ZTJlMTIwNTMyYjdmZDAwMjEwOGQ3MzlmZmNiMWIxNDkxOWRkNTcuLjA3NDI5OTYyYjU0
ZmQyM2VmMjdiZjk2MmUxODE3ZjU1Mzc2NGUyZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaApA
QCAtNjQsMzcgKzY0LDM3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFRocmVhZGVkQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0PiBjcmVhdGUoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgflRocmVh
ZGVkQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCk7CiAKLSAgICB2aXJ0dWFsIGNvbnN0IExheWVy
VHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRleHQoKSBvdmVycmlkZSB7IHJldHVybiBtX2xheWVy
VHJlZUNvbnRleHQ7IH07CisgICAgY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29u
dGV4dCgpIG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJUcmVlQ29udGV4dDsgfTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG91bGROb3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJv
b2wpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlTGF5ZXJGbHVzaCgpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0TGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0U2NoZWR1bGVkTGF5ZXJGbHVzaChi
b29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxh
eSgpIG92ZXJyaWRlIHsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRl
bnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlIHsg
fTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBm
b3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5
bmModWludDY0X3QgLypjYWxsYmFja0lEKi8pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
aXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgb3ZlcnJp
ZGUgeyB9OworICAgIHZvaWQgc2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJl
Y3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlIHsgfTsKKyAgICB2b2lkIHNjcm9s
bE5vbkNvbXBvc2l0ZWRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0
KSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOworICAgIGJvb2wg
Zm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgLypjYWxsYmFja0lEKi8pIG92ZXJyaWRlOworICAg
IHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpIG92ZXJyaWRl
OwogCi0gICAgdmlydHVhbCB2b2lkIHBhdXNlUmVuZGVyaW5nKCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHJlc3VtZVJlbmRlcmluZygpIG92ZXJyaWRlOworICAgIHZvaWQgcGF1c2VSZW5k
ZXJpbmcoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3VtZVJlbmRlcmluZygpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXll
ckZhY3RvcnkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZUJhY2tncm91bmRUcmFu
c3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9OworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFjdG9yeSgpIG92ZXJyaWRlOworICAgIHZvaWQgcGFn
ZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkgb3ZlcnJpZGUgeyB9OwogCi0gICAgdmly
dHVhbCB2b2lkIHZpZXdwb3J0U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29u
c3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aWV3
cG9ydFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMmKSBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50NjRf
dCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0
Vmlld092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopOwpAQCAtMTE2LDE2
ICsxMTYsMTYgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiByb290TGF5
ZXIoKSB7IHJldHVybiBtX2Nvb3JkaW5hdG9yLT5yb290TGF5ZXIoKTsgfQogCiAgICAgLy8gVGhy
ZWFkZWRDb21wb3NpdG9yOjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRl
bnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiwgZmxvYXQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9y
ZXMoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgZmxvYXQpIG92ZXJyaWRlOworICAgIHZvaWQgcHVyZ2VCYWNraW5n
U3RvcmVzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBvZmZzZXQpIG92ZXJyaWRlOwogCiAgICAgLy8gQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZsdXNoUm9vdExheWVyKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlIHsgfQotICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlGbHVzaFJlcXVpcmVkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjZW5l
U3RhdGUoY29uc3QgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmx1c2hSb290TGF5ZXIoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBub3RpZnlGbHVz
aFJlcXVpcmVkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb21taXRTY2VuZVN0YXRlKGNvbnN0IFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgcGFp
bnRMYXllckNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJp
ZGU7CiAKICAgICBMYXllclRyZWVDb250ZXh0IG1fbGF5ZXJUcmVlQ29udGV4dDsKICAgICB1aW50
NjRfdCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggM2NlYTUzNWQyNjRhZjgwYjlj
YmY5MGJkZTFkZTllOGJmMjE1NTI0Ni4uOTRjNGNhNTQ2YjUyZWU3OWEwY2VkZDQ0Njg3ZGUxMjY2
NGMzNjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKQEAgLTE0OSw4ICsxNDksOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpNZXNzYWdlRW5jb2Rlcj4m
KSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6TWVzc2FnZUVuY29kZXI+Jikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzLgogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
SW1wbC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1w
bC5oCmluZGV4IDUyYTMzMzQxMjFkOGI4NTRiNWE1NjZlYWM2Yzc0MGMyNjE0MGZjMDguLjZmMWY4
NzQyYjI0MjFkYTRmZmYyNTM0NWY3NjE1YjdiM2NlODk4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWFJbXBsLmgKQEAgLTQ5LDM1ICs0
OSwzNSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gRHJhd2luZ0FyZWEKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0YSkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOyB9Ci0gICAgdmlydHVhbCBMYXll
clRyZWVIb3N0KiBsYXllclRyZWVIb3N0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9sYXll
clRyZWVIb3N0LmdldCgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgYm9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFj
a0lEKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRQYWludGluZ0VuYWJsZWQoYm9v
bCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZUNvbnRlbnRTaXplQ2hhbmdl
ZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwot
Ci0gICAgdmlydHVhbCB2b2lkIGF0dGFjaFZpZXdPdmVybGF5R3JhcGhpY3NMYXllcihXZWJDb3Jl
OjpGcmFtZSosIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dE5lZWRzRGlzcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbChjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
Y3JvbGxEZWx0YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5j
eUNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldExheWVyVHJlZVN0YXRlSXNGcm96ZW4o
Ym9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBsYXllclRyZWVTdGF0ZUlzRnJvemVuKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9sYXllclRyZWVTdGF0ZUlzRnJvemVuOyB9CisgICAgTGF5ZXJU
cmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbGF5ZXJU
cmVlSG9zdC5nZXQoKTsgfQorICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBmb3JjZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgc2V0UGFpbnRpbmdFbmFibGVkKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgbWFp
bkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
KSBvdmVycmlkZTsKKworICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGlj
c0xheWVyRmFjdG9yeSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOworICAgIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlQ29tcG9z
aXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKKworICAgIHZvaWQgYXR0YWNo
Vmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1lKiwgV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIG92ZXJyaWRlOwogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKSAmJiBQTEFURk9S
TShHVEspCi0gICAgdmlydHVhbCB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3Np
dGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lOYXRpdmVT
dXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlc3Ryb3lOYXRpdmVTdXJmYWNlSGFuZGxlRm9yQ29tcG9zaXRpbmcoYm9vbCYpIG92
ZXJyaWRlOwogI2VuZGlmCiAKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQmFja2luZ1N0b3JlU3RhdGUodWludDY0X3QgYmFja2luZ1N0b3JlU3Rh
dGVJRCwgYm9vbCByZXNwb25kSW1tZWRpYXRlbHksIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLCBj
b25zdCBXZWJDb3JlOjpJbnRTaXplJiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zm
c2V0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVCYWNraW5nU3RvcmVTdGF0ZSh1aW50NjRfdCBiYWNraW5nU3RvcmVTdGF0
ZUlELCBib29sIHJlc3BvbmRJbW1lZGlhdGVseSwgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZz
ZXQpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkVXBkYXRlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHN1c3BlbmRQYWludGluZygpOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVQYWludGlu
ZygpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5oCmluZGV4IDgzNzRhODNmZTdmYzQ5NGYzNmE4YzVkNTliZDE5NDI0NjIw
YjNmMWQuLmFkZjdlNWY5NjYwODVjNDRhM2U3NWVmZmU3YjY2MTA1Y2UyMTBjMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgK
QEAgLTc0LDcgKzc0LDcgQEAgcHJpdmF0ZToKICAgICBFdmVudERpc3BhdGNoZXIoKTsKIAogICAg
IC8vIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLgotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCiAgICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
V2hlZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90
dG9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oCmluZGV4IDNiNDNjYjcxYjIwMjkw
MDRjYzU4MDExMjFlN2JmNDY0NjI5ODcwMmMuLjUxMGFmNmY1NzYwMGJjZWJhZTgxOThkNTA3MzU0
MzRmOTdjOWNjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIu
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKIAogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1h
Z25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hl
ci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyLmgKaW5kZXggYTRkMDJlNzZmODE4NDczMTNjMzUyODlhOGViNjg0Y2UyMmQ0M2M1ZS4uYmJk
ZTVhZjc1YTZlYmVkMzQxMzA2YWZjODBlNmJmZTEwZWVlMzcyMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgK
QEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWaWV3VXBkYXRlRGlzcGF0
Y2hlcigpOwogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVy
LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFibGVDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIu
aAppbmRleCBiYmZjODQ5M2NhNTI5ODM3Y2QyM2JkMzA3NGU5NjkzNDliMTZiZTNkLi5kNzc3NzJi
MTFiZTdkNWQwNDc1NGEzZDg3ODUwZmNmZTU3OGIyZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRy
b2xsZXIuaApAQCAtNDIsMTEgKzQyLDExIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgVmlzaXRl
ZExpbmtUYWJsZUNvbnRyb2xsZXIodWludDY0X3QgaWRlbnRpZmllcik7CiAKICAgICAvLyBXZWJD
b3JlOjpWaXNpdGVkTGlua1N0b3JlLgotICAgIHZpcnR1YWwgYm9vbCBpc0xpbmtWaXNpdGVkKFdl
YkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNl
VVJMLCBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGFkZFZpc2l0ZWRMaW5rKFdlYkNvcmU6OlBhZ2UmLCBXZWJDb3JlOjpMaW5rSGFz
aCkgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0xpbmtWaXNpdGVkKFdlYkNvcmU6OlBhZ2UmLCBXZWJD
b3JlOjpMaW5rSGFzaCwgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBBdG9taWNT
dHJpbmcmIGF0dHJpYnV0ZVVSTCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhZGRWaXNpdGVkTGluayhX
ZWJDb3JlOjpQYWdlJiwgV2ViQ29yZTo6TGlua0hhc2gpIG92ZXJyaWRlOwogCiAgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUYWJsZShjb25zdCBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSYpOwogICAgIHZvaWQgdmlzaXRlZExpbmtTdGF0ZUNoYW5nZWQoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkxpbmtIYXNoPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCA1
MTM2YmI5NDY5ZDcxOTgxNmM0MDZmOTAyYzQxNzA1ZmY1MTNmZGUwLi5iY2NjOWE5NmQwMmY5MmM5
MzhiMzgyYWY3OTQwYWEyMzYxYjNhYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaApAQCAtNTAs
MjIgKzUwLDIyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkoV2ViUGFnZSopOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEl0ZW0oUmVmPFdlYkNvcmU6Okhp
c3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPFdlYkNvcmU6Okhp
c3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBnb1RvSXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRlOworICAgIHZvaWQgZ29Ub0l0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKICAgICAgICAgCi0gICAgdmlydHVhbCBXZWJDb3JlOjpI
aXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGludCBi
YWNrTGlzdENvdW50KCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBpbnQgZm9yd2FyZExpc3RDb3Vu
dCgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtQXRJbmRleChpbnQp
IG92ZXJyaWRlOworICAgIGludCBiYWNrTGlzdENvdW50KCkgb3ZlcnJpZGU7CisgICAgaW50IGZv
cndhcmRMaXN0Q291bnQoKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBjbG9zZSgp
IG92ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdW5zaWduZWQgY3Vy
cmVudCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJyZW50KHVuc2lnbmVkIG5l
d0N1cnJlbnQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBjbGVhckFsbFBhZ2VDYWNoZXMo
KSBvdmVycmlkZTsKKyAgICB1bnNpZ25lZCBjdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDdXJyZW50KHVuc2lnbmVkIG5ld0N1cnJlbnQpIG92ZXJyaWRlOworICAgIGJvb2wgY2xlYXJB
bGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIFdlYlBhZ2UqIG1fcGFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVu
dExvYWRlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50
TG9hZGVyLmgKaW5kZXggYWMzOTE2YzhlOWJjYjQ2MTMxMzliNzBmNDQ0YmRiNTM1YTI2ZDliNC4u
ZjEyN2Q2NGQwMDVhYjdiOTM4NzU1OTFiOTRhNTg5OTIwNWU5MTU3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmgKQEAg
LTQzLDcgKzQzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJEb2N1bWVudExvYWRlcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRl
RGF0YSYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaEZyb21GcmFtZSgpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGV0YWNoRnJvbUZyYW1lKCkgb3ZlcnJpZGU7CiAKICAgICB1aW50NjRfdCBtX25h
dmlnYXRpb25JRDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmgKaW5kZXggOGRiZjY2MTA0NDdmNTQ2Y2VmNjlhZGY3OWQzZjhjMjE2ZGMw
M2YyOS4uMTg2ODQ2MDIwYjViZDdmM2Y5ZGYxOTc1M2I2MTgyZjMxMTIzYjY2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuaApAQCAtNDUs
OCArNDUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZURvY2tpbmdBdmFpbGFiaWxpdHko
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIENvbm5lY3Rpb25UeXBlIGNvbm5lY3Rp
b25UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQ29ubmVjdGlvblR5cGU6OkxvY2FsOyB9
CisgICAgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSBv
dmVycmlkZTsKKyAgICBDb25uZWN0aW9uVHlwZSBjb25uZWN0aW9uVHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIENvbm5lY3Rpb25UeXBlOjpMb2NhbDsgfQogCiAgICAgLy8gSW1wbGVtZW50
ZWQgaW4gZ2VuZXJhdGVkIFdlYkluc3BlY3Rvck1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKQEAgLTU0LDggKzU0LDggQEAgcHVibGljOgogICAgIC8vIElQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlk
ZSB7IGNsb3NlKCk7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92
ZXJyaWRlIHsgY2xvc2UoKTsgfQotICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSBsb2NhbFBy
b2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6V2ViOyB9Ci0g
ICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6VUk7IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIGxv
Y2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7
IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyBy
ZXR1cm4gSVBDOjpQcm9jZXNzVHlwZTo6VUk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNw
ZWN0b3IgbWVzc2FnZXMKICAgICB2b2lkIGNvbm5lY3Rpb25Fc3RhYmxpc2hlZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAppbmRl
eCBkNmZhZDgzMTg2Y2Q0ODM4MDg4NjQ4ODEzODY5OWJhNzQ3MDUzNTQ4Li42NWJlMzYyMzExMTI1
NTk4ZmViN2E5YjE4OTgxZWEyNDYxZjExZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtNDksOCArNDksOCBAQCBwdWJs
aWM6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZENsb3NlKElQ
Qzo6Q29ubmVjdGlvbiYpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9Ci0g
ICAgdmlydHVhbCBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7
IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vz
c1R5cGUgcmVtb3RlUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NU
eXBlOjpXZWI7IH0KKyAgICBJUEM6OlByb2Nlc3NUeXBlIGxvY2FsUHJvY2Vzc1R5cGUoKSBvdmVy
cmlkZSB7IHJldHVybiBJUEM6OlByb2Nlc3NUeXBlOjpXZWI7IH0KKyAgICBJUEM6OlByb2Nlc3NU
eXBlIHJlbW90ZVByb2Nlc3NUeXBlKCkgb3ZlcnJpZGUgeyByZXR1cm4gSVBDOjpQcm9jZXNzVHlw
ZTo6V2ViOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKICAg
ICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3Qs
IHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA5NjU1NTRkZGI4OThjYzNjMmY2NTI2Y2E4NzgxMTk1NzJm
YmQxN2MzLi5jMTA2ZmJjOGYzMjY3NTU3OGE1NWFkNTNlOWQxZWM5YmUyNjU4NDk4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTkzMyw4ICs5MzMs
OCBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKLSAgICB2
aXJ0dWFsIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3Zl
cnJpZGU7CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIG92
ZXJyaWRlOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogICAgIHZvaWQgcGxhdGZvcm1E
ZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VPdmVybGF5LmgKaW5kZXggNmM4Y2U5NmFkMTkyNWQ1OWIwMzFjMjRiNGQxNTk1OGFiN2EwNTk5
NS4uNzg4ZTYyNTFhODdkOWMwNTlkZWQ5ZTc1ZDA0ZGFiNmY3MWY4ODc1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VPdmVybGF5LmgKQEAgLTg5
LDE2ICs4OSwxNiBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VPdmVybGF5KHN0ZDo6dW5pcXVlX3B0
cjxDbGllbnQ+LCBXZWJDb3JlOjpQYWdlT3ZlcmxheTo6T3ZlcmxheVR5cGUpOwogCiAgICAgLy8g
V2ViQ29yZTo6UGFnZU92ZXJsYXk6OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBwYWdlT3Zlcmxh
eURlc3Ryb3llZChXZWJDb3JlOjpQYWdlT3ZlcmxheSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCB3aWxsTW92ZVRvUGFnZShXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OlBhZ2Uq
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTW92ZVRvUGFnZShXZWJDb3JlOjpQYWdl
T3ZlcmxheSYsIFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlY3QoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
Ym9vbCBtb3VzZUV2ZW50KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgY29uc3QgV2ViQ29yZTo6UGxh
dGZvcm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFNjcm9sbEZy
YW1lKFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6RnJhbWUmKSBvdmVycmlkZTsKLQot
ICAgIHZpcnR1YWwgYm9vbCBjb3B5QWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVN0cmluZ1ZhbHVlRm9y
UG9pbnQoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBTdHJpbmcgLyogYXR0cmlidXRlICovLCBXZWJD
b3JlOjpGbG9hdFBvaW50IC8qIHBhcmFtZXRlciAqLywgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBib29sIGNvcHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlQm9vbFZhbHVlRm9y
UG9pbnQoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBTdHJpbmcgLyogYXR0cmlidXRlICovLCBXZWJD
b3JlOjpGbG9hdFBvaW50IC8qIHBhcmFtZXRlciAqLywgYm9vbCYgdmFsdWUpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gY29weUFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1l
cyhXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIGJvb2wgLyogcGFyYW1ldGVyaXplZE5hbWVzICovKSBv
dmVycmlkZTsKKyAgICB2b2lkIHBhZ2VPdmVybGF5RGVzdHJveWVkKFdlYkNvcmU6OlBhZ2VPdmVy
bGF5Jikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsTW92ZVRvUGFnZShXZWJDb3JlOjpQYWdlT3Zl
cmxheSYsIFdlYkNvcmU6OlBhZ2UqKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZE1vdmVUb1BhZ2Uo
V2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBkcmF3UmVjdChXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgYm9v
bCBtb3VzZUV2ZW50KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgY29uc3QgV2ViQ29yZTo6UGxhdGZv
cm1Nb3VzZUV2ZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTY3JvbGxGcmFtZShXZWJDb3Jl
OjpQYWdlT3ZlcmxheSYsIFdlYkNvcmU6OkZyYW1lJikgb3ZlcnJpZGU7CisKKyAgICBib29sIGNv
cHlBY2Nlc3NpYmlsaXR5QXR0cmlidXRlU3RyaW5nVmFsdWVGb3JQb2ludChXZWJDb3JlOjpQYWdl
T3ZlcmxheSYsIFN0cmluZyAvKiBhdHRyaWJ1dGUgKi8sIFdlYkNvcmU6OkZsb2F0UG9pbnQgLyog
cGFyYW1ldGVyICovLCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICBib29sIGNvcHlBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlQm9vbFZhbHVlRm9yUG9pbnQoV2ViQ29yZTo6UGFnZU92ZXJsYXkm
LCBTdHJpbmcgLyogYXR0cmlidXRlICovLCBXZWJDb3JlOjpGbG9hdFBvaW50IC8qIHBhcmFtZXRl
ciAqLywgYm9vbCYgdmFsdWUpIG92ZXJyaWRlOworICAgIFZlY3RvcjxTdHJpbmc+IGNvcHlBY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXMoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBib29sIC8qIHBh
cmFtZXRlcml6ZWROYW1lcyAqLykgb3ZlcnJpZGU7CiAKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpQ
YWdlT3ZlcmxheT4gbV9vdmVybGF5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAppbmRleCAyZGE5YWFjY2U2NzBi
OWViZDUxYjk4MDYyZWMyYjBhYTM1MjZhYmQxLi4xMWFlYTIyMzNlNzZlYTIzMzQ1NWYzZDUzYWFl
MTY3YzNkMDcxYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaApAQCAtNTIsMTcgKzUyLDE3IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGluaXRpYWxpemUoKTsKIAogICAgIC8vIExheWVyVHJlZUhvc3QKLSAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVMYXllckZsdXNoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sIGxheWVyRmx1c2hpbmdF
bmFibGVkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5
ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldExheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZChib29sIGxheWVy
Rmx1c2hpbmdFbmFibGVkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xh
eWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIGludmFsaWRh
dGUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBuZXdTaXplKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVG
YWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VCYWNrZ3JvdW5k
VHJhbnNwYXJlbmN5Q2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZm9yY2VSZXBhaW50KCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzaXplRGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IG5ld1NpemUpIG92ZXJyaWRlOworICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFu
Z2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5n
ZWQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROYXRpdmVTdXJmYWNlSGFuZGxl
Rm9yQ29tcG9zaXRpbmcodWludDY0X3QpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmF0aXZlU3Vy
ZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90KSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
IApAQCAtODUsMTggKzg1LDE4IEBAIHByaXZhdGU6CiAgICAgfTsKIAogICAgIC8vIExheWVyVHJl
ZUhvc3QKLSAgICB2aXJ0dWFsIGNvbnN0IExheWVyVHJlZUNvbnRleHQmIGxheWVyVHJlZUNvbnRl
eHQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkTm90aWZ5QWZ0ZXJOZXh0
U2NoZWR1bGVkTGF5ZXJGbHVzaChib29sKSBvdmVycmlkZTsKKyAgICBjb25zdCBMYXllclRyZWVD
b250ZXh0JiBsYXllclRyZWVDb250ZXh0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaG91bGRO
b3RpZnlBZnRlck5leHRTY2hlZHVsZWRMYXllckZsdXNoKGJvb2wpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5KCkgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5
SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNj
cm9sbFJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RM
YXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROb25D
b21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Tm9u
Q29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Vmll
d092ZXJsYXlSb290TGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCiAg
ICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgZmxvYXQgcGFnZVNjYWxlRmFj
dG9yKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBjbGlw
UmVjdCkgb3ZlcnJpZGU7CisgICAgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRvck92ZXJsYXlDbGllbnRJ
T1MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvRmluZEluZGljYXRv
ck92ZXJsYXlDbGllbnRJT1MuaAppbmRleCAxOTMzZTQ3OGUxMGYzNWY5YWU4Nzg2NDNmYmQ4M2Mw
MWE1MjFiMGFlLi42NGM0NTNiZGIyYjU5YWVjOTNlNjE2MjE0NGE1YTQ2NGEwNzQxNTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL0ZpbmRJbmRpY2F0
b3JPdmVybGF5Q2xpZW50SU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9GaW5kSW5kaWNhdG9yT3ZlcmxheUNsaWVudElPUy5oCkBAIC00NSwxMSArNDUsMTEg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZU92ZXJs
YXlEZXN0cm95ZWQoV2ViQ29yZTo6UGFnZU92ZXJsYXkmKSBvdmVycmlkZSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbE1vdmVUb1BhZ2UoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQ
YWdlKikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb1BhZ2UoV2ViQ29y
ZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGUgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRyYXdSZWN0KFdlYkNvcmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIGJvb2wgbW91c2VFdmVudChXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIGNvbnN0IFdl
YkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdm9pZCBwYWdlT3ZlcmxheURlc3Ryb3llZChXZWJDb3JlOjpQYWdlT3ZlcmxheSYpIG92ZXJy
aWRlIHsgfQorICAgIHZvaWQgd2lsbE1vdmVUb1BhZ2UoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBX
ZWJDb3JlOjpQYWdlKikgb3ZlcnJpZGUgeyB9CisgICAgdm9pZCBkaWRNb3ZlVG9QYWdlKFdlYkNv
cmU6OlBhZ2VPdmVybGF5JiwgV2ViQ29yZTo6UGFnZSopIG92ZXJyaWRlIHsgfQorICAgIHZvaWQg
ZHJhd1JlY3QoV2ViQ29yZTo6UGFnZU92ZXJsYXkmLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOworICAgIGJvb2wg
bW91c2VFdmVudChXZWJDb3JlOjpQYWdlT3ZlcmxheSYsIGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
TW91c2VFdmVudCYpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBXZWJDb3JlOjpG
cmFtZSYgbV9mcmFtZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dEluZGljYXRvcj4gbV90ZXh0
SW5kaWNhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNBUmVtb3RlLmgKaW5kZXggNmY0Y2YwZjRlN2JiNDhj
YjJkYWYzOTJhNTEyM2Q4N2VlMThiMThkMi4uZDI0MGFjYjdkMDZlMzQ1MjFmNzhiMGIyOTYzZDFm
Zjc3ZjljYmJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oCkBAIC00MywxNyArNDMsMTcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllckNBUmVtb3RlKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgZmlsdGVyc0NhbkJlQ29tcG9zaXRlZChjb25zdCBXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKSBvdmVycmlkZTsKKyAgICBib29sIGZpbHRlcnNDYW5CZUNv
bXBvc2l0ZWQoY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzR3JhcGhpY3NMYXllckNBUmVtb3Rl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNHcmFwaGljc0xh
eWVyQ0FSZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNB
TGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckNsaWVudCogb3duZXIpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZVBsYXRmb3JtQ0FMYXllcihQbGF0Zm9y
bUxheWVyKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lcikgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24+IGNy
ZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5p
bWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKSBvdmVycmlkZTsKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJD
bGllbnQqIG93bmVyKSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFBsYXRmb3JtTGF5ZXIqLCBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBvdmVycmlkZTsKKyAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24+IGNyZWF0ZVBsYXRmb3JtQ0FBbmltYXRpb24oV2Vi
Q29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoKSBvdmVycmlkZTsKIAogICAgIC8vIFBsYXRmb3JtQ0FMYXllclJlbW90ZSBjYW4ndCBj
dXJyZW50bHkgcHJveHkgZGlyZWN0bHkgY29tcG9zaXRlZCBpbWFnZSBjb250ZW50cywgc28gb3B0
IG91dCBvZiB0aGlzIG9wdGltaXphdGlvbi4KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGlyZWN0
bHlDb21wb3NpdGVJbWFnZShXZWJDb3JlOjpJbWFnZSopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCBzaG91bGREaXJlY3RseUNvbXBvc2l0ZUltYWdlKFdlYkNvcmU6
OkltYWdlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAKICAgICBSZW1v
dGVMYXllclRyZWVDb250ZXh0JiBtX2NvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGUuaAppbmRleCAzMTc5YjZjYWU0MWI0OWQxOWNkOGFlMjJhMWQ2MGVmZWY3OTgwNmUz
Li5mNGYwMTZjMmM2NmIzMmMxMzUxNWIxYmI2NGUzNzZkMDk5NGQwMmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtNTEsNzMgKzUxLDczIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgflBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSB7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CisgICAgYm9vbCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZv
cm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gY29weSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBT
dHJpbmcga2V5UGF0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFN0cmluZyBrZXlQYXRoKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIENGVGltZUludGVydmFsIGJlZ2luVGltZSgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCZWdpblRpbWUoQ0ZUaW1lSW50ZXJ2
YWwpIG92ZXJyaWRlOworICAgIENGVGltZUludGVydmFsIGJlZ2luVGltZSgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0QmVnaW5UaW1lKENGVGltZUludGVydmFsKSBvdmVycmlkZTsKIAot
ICAgIHZpcnR1YWwgQ0ZUaW1lSW50ZXJ2YWwgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RHVyYXRpb24oQ0ZUaW1lSW50ZXJ2YWwpIG92ZXJyaWRlOworICAg
IENGVGltZUludGVydmFsIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRE
dXJhdGlvbihDRlRpbWVJbnRlcnZhbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGZsb2F0IHNw
ZWVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNwZWVkKGZsb2F0KSBv
dmVycmlkZTsKKyAgICBmbG9hdCBzcGVlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0
U3BlZWQoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBDRlRpbWVJbnRlcnZhbCB0aW1l
T2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRpbWVPZmZzZXQo
Q0ZUaW1lSW50ZXJ2YWwpIG92ZXJyaWRlOworICAgIENGVGltZUludGVydmFsIHRpbWVPZmZzZXQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2YWwp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCByZXBlYXRDb3VudCgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRSZXBlYXRDb3VudChmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgZmxvYXQgcmVwZWF0Q291bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldFJlcGVh
dENvdW50KGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBhdXRvcmV2ZXJzZXMo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QXV0b3JldmVyc2VzKGJvb2wp
IG92ZXJyaWRlOworICAgIGJvb2wgYXV0b3JldmVyc2VzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRBdXRvcmV2ZXJzZXMoYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIEZpbGxN
b2RlVHlwZSBmaWxsTW9kZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRG
aWxsTW9kZShGaWxsTW9kZVR5cGUpIG92ZXJyaWRlOworICAgIEZpbGxNb2RlVHlwZSBmaWxsTW9k
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBlKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBXZWJD
b3JlOjpUaW1pbmdGdW5jdGlvbiosIGJvb2wgcmV2ZXJzZSA9IGZhbHNlKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uKiwg
Ym9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0
aW9uRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldFJlbW92ZWRPbkNvbXBsZXRpb24oYm9vbCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc1JlbW92ZWRPbkNvbXBsZXRpb24oKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFJlbW92ZWRPbkNvbXBsZXRpb24oYm9vbCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaXNBZGRpdGl2ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRB
ZGRpdGl2ZShib29sKSBvdmVycmlkZTsKKyAgICBib29sIGlzQWRkaXRpdmUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldEFkZGl0aXZlKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCBWYWx1ZUZ1bmN0aW9uVHlwZSB2YWx1ZUZ1bmN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUpIG92ZXJyaWRl
OworICAgIFZhbHVlRnVuY3Rpb25UeXBlIHZhbHVlRnVuY3Rpb24oKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2b2lkIHNldFZhbHVlRnVuY3Rpb24oVmFsdWVGdW5jdGlvblR5cGUpIG92ZXJyaWRlOwog
CiAgICAgLy8gQmFzaWMtYW5pbWF0aW9uIHByb3BlcnRpZXMuCi0gICAgdmlydHVhbCB2b2lkIHNl
dEZyb21WYWx1ZShmbG9hdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1
ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xv
ciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBzZXRU
b1ZhbHVlKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25z
dCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6RmlsdGVyT3Bl
cmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5p
bWF0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoZmxvYXQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0
cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludDNEJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
Q0FBbmltYXRpb24mKSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0VG9WYWx1ZShmbG9hdCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQzRCYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3Jl
OjpDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlk
ZTsKKyAgICB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5p
bWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICAvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGll
cy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VmFs
dWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpGbG9hdFBvaW50M0Q+Jikgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbj4+JiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRl
eCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGNvcHlLZXlUaW1lc0Zyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYp
IG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBW
ZWN0b3I8Y29uc3QgV2ViQ29yZTo6VGltaW5nRnVuY3Rpb24qPiYsIGJvb2wgcmV2ZXJzZSA9IGZh
bHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20o
Y29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZh
bHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQz
RD4mKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29sb3I+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+PiYsIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5
SW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgV2ViQ29yZTo6
UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRLZXlUaW1lcyhj
b25zdCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5S2V5VGltZXNGcm9t
KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBXZWJDb3JlOjpUaW1pbmdG
dW5jdGlvbio+JiwgYm9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRlOworICAgIHZvaWQgY29w
eVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYp
IG92ZXJyaWRlOwogCiAgICAgQW5pbWF0aW9uVHlwZSBhbmltYXRpb25UeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcm9wZXJ0aWVzLmFuaW1hdGlvblR5cGU7IH0KICAgICB2b2lkIHNldEhhc0V4cGxp
Y2l0QmVnaW5UaW1lKGJvb2wgaGFzRXhwbGljaXRCZWdpblRpbWUpIHsgbV9wcm9wZXJ0aWVzLmhh
c0V4cGxpY2l0QmVnaW5UaW1lID0gaGFzRXhwbGljaXRCZWdpblRpbWU7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5oCmluZGV4IDdjYWFjMzlkMGYyZTk5NzdiN2YxNjRmNTZmMjMyZDNlZmMxMzI2
OWMuLmYxNjUyMDYzNDYwNzE5YjhhMmU2YmEwOTYzYWIxOGRlM2E0ZDhmMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBTGF5ZXJSZW1vdGUuaApAQCAtNDYsMTMyICs0NiwxMzIgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB+UGxhdGZvcm1DQUxheWVyUmVtb3RlKCk7CiAKLSAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KIAogICAgIHZvaWQgcmVjdXJzaXZlQnVpbGRUcmFuc2FjdGlvbihSZW1vdGVM
YXllclRyZWVDb250ZXh0JiwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0
JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXko
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBjb3B5Q29udGVudHNGcm9tTGF5ZXIo
UGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5Q29udGVudHNGcm9tTGF5
ZXIoUGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlBs
YXRmb3JtQ0FMYXllciogc3VwZXJsYXllcigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVGcm9tU3VwZXJsYXllcigpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRTdWJsYXllcnMoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyTGlzdCYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxTdWJsYXllcnMoKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kU3VibGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluc2VydFN1YmxheWVyKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciYsIHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHJlcGxh
Y2VTdWJsYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIHJlZmVyZW5jZSwgV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXJMaXN0KiBjdXN0b21TdWJsYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBudWxscHRyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkb3B0U3VibGF5ZXJzKFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllciYgc291cmNlKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQbGF0Zm9y
bUNBTGF5ZXIqIHN1cGVybGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHJlbW92ZUZy
b21TdXBlcmxheWVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdWJsYXllcnMoY29uc3QgV2Vi
Q29yZTo6UGxhdGZvcm1DQUxheWVyTGlzdCYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVtb3ZlQWxs
U3VibGF5ZXJzKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBlbmRTdWJsYXllcihXZWJDb3JlOjpQ
bGF0Zm9ybUNBTGF5ZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIGluc2VydFN1YmxheWVyKFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllciYsIHNpemVfdCBpbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXBsYWNlU3VibGF5ZXIoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyJiByZWZlcmVuY2UsIFdlYkNv
cmU6OlBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOworICAgIGNvbnN0IFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllckxpc3QqIGN1c3RvbVN1YmxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KKyAgICB2b2lkIGFkb3B0U3VibGF5ZXJzKFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciYgc291cmNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRpb25G
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24mKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0
cmluZyYga2V5KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxh
dGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChjb25zdCBTdHJpbmcmIGtl
eSwgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
YW5pbWF0aW9uRW5kZWQoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIHZvaWQgYWRk
QW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5p
bWF0aW9uJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXkpIG92ZXJyaWRlOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1D
QUFuaW1hdGlvbj4gYW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsK
KyAgICB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBrZXksIENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBhbmltYXRpb25FbmRlZChjb25zdCBT
dHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWFzayhXZWJDb3Jl
OjpQbGF0Zm9ybUNBTGF5ZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE1hc2soV2ViQ29yZTo6
UGxhdGZvcm1DQUxheWVyKikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNPcGFxdWUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpIG92ZXJy
aWRlOworICAgIGJvb2wgaXNPcGFxdWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldE9w
YXF1ZShib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGJv
dW5kcygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJv
dW5kcygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFBvaW50
M0QgcG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UG9zaXRp
b24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6
RmxvYXRQb2ludDNEIHBvc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgV2ViQ29yZTo6RmxvYXRQb2ludDNEIGFuY2hvclBvaW50KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQz
RCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBhbmNob3JQb2ludCgpIGNv
bnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludDNEJikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXRUcmFuc2Zvcm0oY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlk
ZTsKKyAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0oKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IHN1
YmxheWVyVHJhbnNmb3JtKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTdWJsYXllclRy
YW5zZm9ybShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwog
Ci0gICAgdmlydHVhbCB2b2lkIHNldEhpZGRlbihib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dEhpZGRlbihib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNraW5nU3Rv
cmVBdHRhY2hlZChib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2luZ1N0b3Jl
QXR0YWNoZWQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIGJvb2wgYmFja2luZ0NvbnRy
aWJ1dGVzVG9NZW1vcnlFc3RpbWF0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJhY2tpbmdT
dG9yZUF0dGFjaGVkKCk7IH0KKyAgICB2b2lkIHNldEJhY2tpbmdTdG9yZUF0dGFjaGVkKGJvb2wp
IG92ZXJyaWRlOworICAgIGJvb2wgYmFja2luZ1N0b3JlQXR0YWNoZWQoKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBib29sIGJhY2tpbmdDb250cmlidXRlc1RvTWVtb3J5RXN0aW1hdGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBiYWNraW5nU3RvcmVBdHRhY2hlZCgpOyB9CiAKLSAgICB2aXJ0dWFs
IGJvb2wgZ2VvbWV0cnlGbGlwcGVkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldEdlb21ldHJ5RmxpcHBlZChib29sKSBvdmVycmlkZTsKKyAgICBib29sIGdlb21ldHJ5Rmxp
cHBlZCgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0R2VvbWV0cnlGbGlwcGVkKGJvb2wp
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzRG91YmxlU2lkZWQoKSBjb25zdCBvdmVy
cmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCBpc0RvdWJsZVNpZGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREb3Vi
bGVTaWRlZChib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgYm9vbCBtYXNrc1RvQm91bmRz
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9v
bCkgb3ZlcnJpZGU7CisgICAgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBi
b29sIGFjY2VsZXJhdGVzRHJhd2luZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlc0RyYXdpbmcoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2NlbGVy
YXRlc0RyYXdpbmcoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjY2VsZXJhdGVzRHJh
d2luZyhib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzKENGVHlwZVJlZikg
b3ZlcnJpZGU7CisgICAgQ0ZUeXBlUmVmIGNvbnRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldENvbnRlbnRzUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pZmljYXRpb25GaWx0ZXIoV2ViQ29yZTo6UGxh
dGZvcm1DQUxheWVyOjpGaWx0ZXJUeXBlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
TWFnbmlmaWNhdGlvbkZpbHRlcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0TWluaWZpY2F0aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRm
b3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRNYWduaWZpY2F0
aW9uRmlsdGVyKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZSkgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29y
ZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpDb2xvciBiYWNrZ3JvdW5kQ29sb3Io
KSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJD
b3JlOjpDb2xvciYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEJvcmRlcldpZHRo
KGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qm9yZGVyQ29sb3IoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJvcmRlcldpZHRoKGZsb2F0
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
Jikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGZsb2F0IG9wYWNpdHkoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9hdCkgb3ZlcnJpZGU7CisgICAgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0T3BhY2l0eShmbG9hdCkg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKICAgICBzdGF0aWMgYm9vbCBmaWx0
ZXJzQ2FuQmVDb21wb3NpdGVkKGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29weUZpbHRlcnNGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FM
YXllciYpIG92ZXJyaWRlOworICAgIHZvaWQgY29weUZpbHRlcnNGcm9tKGNvbnN0IFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllciYpIG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElO
RykKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmxlbmRNb2RlKFdlYkNvcmU6OkJsZW5kTW9kZSkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRCbGVuZE1vZGUoV2ViQ29yZTo6QmxlbmRNb2RlKSBvdmVycmlk
ZTsKICNlbmRpZgogCi0gICAgdmlydHVhbCB2b2lkIHNldE5hbWUoY29uc3QgU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIHNldFNwZWVkKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNwZWVk
KGZsb2F0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1lT2Zmc2V0KENGVGlt
ZUludGVydmFsKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFRpbWVPZmZzZXQoQ0ZUaW1lSW50ZXJ2
YWwpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBjb250ZW50c1NjYWxlKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJy
aWRlOworICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lk
IHNldENvbnRlbnRzU2NhbGUoZmxvYXQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBmbG9hdCBj
b3JuZXJSYWRpdXMoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29ybmVy
UmFkaXVzKGZsb2F0KSBvdmVycmlkZTsKKyAgICBmbG9hdCBjb3JuZXJSYWRpdXMoKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIHNldENvcm5lclJhZGl1cyhmbG9hdCkgb3ZlcnJpZGU7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01hc2sodW5zaWduZWQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0RWRnZUFudGlhbGlhc2luZ01hc2sodW5zaWduZWQpIG92ZXJyaWRlOwog
CiAgICAgLy8gRklYTUU6IEhhdmluZyBib3RoIHNoYXBlUm91bmRlZFJlY3QgYW5kIHNoYXBlUGF0
aCBpcyByZWR1bmRhbnQuIFdlIGNvdWxkIHVzZSBzaGFwZVBhdGggZm9yIGV2ZXJ5dGhpbmcuCi0g
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0IHNoYXBlUm91bmRlZFJlY3QoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVSb3VuZGVkUmVjdChjb25z
dCBXZWJDb3JlOjpGbG9hdFJvdW5kZWRSZWN0Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6Rmxv
YXRSb3VuZGVkUmVjdCBzaGFwZVJvdW5kZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRTaGFwZVJvdW5kZWRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0Um91bmRlZFJlY3QmKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6UGF0aCBzaGFwZVBhdGgoKSBjb25zdCBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2hhcGVQYXRoKGNvbnN0IFdlYkNvcmU6OlBh
dGgmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpQYXRoIHNoYXBlUGF0aCgpIGNvbnN0IG92ZXJy
aWRlOworICAgIHZvaWQgc2V0U2hhcGVQYXRoKGNvbnN0IFdlYkNvcmU6OlBhdGgmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6V2luZFJ1bGUgc2hhcGVXaW5kUnVsZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRTaGFwZVdpbmRSdWxlKFdlYkNvcmU6Oldp
bmRSdWxlKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpXaW5kUnVsZSBzaGFwZVdpbmRSdWxlKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTaGFwZVdpbmRSdWxlKFdlYkNvcmU6OldpbmRS
dWxlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q3Vz
dG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUN1c3RvbUFwcGVhcmFuY2UoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZSkgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
Q3VzdG9tQXBwZWFyYW5jZSBjdXN0b21BcHBlYXJhbmNlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
dm9pZCB1cGRhdGVDdXN0b21BcHBlYXJhbmNlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3Rv
bUFwcGVhcmFuY2UpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpUaWxlZEJhY2tp
bmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICBXZWJD
b3JlOjpUaWxlZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI+
IGNsb25lKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGNvbnN0IG92ZXJy
aWRlOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyPiBjbG9uZShXZWJD
b3JlOjpQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG93bmVyKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBTGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXll
cihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1D
QUxheWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNB
TGF5ZXI+IGNyZWF0ZUNvbXBhdGlibGVMYXllcihXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KikgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgZW51bWVyYXRlUmVjdHNCZWluZ0RyYXduKENHQ29udGV4dFJl
Ziwgdm9pZCAoXmJsb2NrKShDR1JlY3QpKSBvdmVycmlkZTsKKyAgICB2b2lkIGVudW1lcmF0ZVJl
Y3RzQmVpbmdEcmF3bihDR0NvbnRleHRSZWYsIHZvaWQgKF5ibG9jaykoQ0dSZWN0KSkgb3ZlcnJp
ZGU7CiAKICAgICB2aXJ0dWFsIHVpbnQzMl90IGhvc3RpbmdDb250ZXh0SUQoKTsKIAotICAgIHZp
cnR1YWwgdW5zaWduZWQgYmFja2luZ1N0b3JlQnl0ZXNQZXJQaXhlbCgpIGNvbnN0IG92ZXJyaWRl
OworICAgIHVuc2lnbmVkIGJhY2tpbmdTdG9yZUJ5dGVzUGVyUGl4ZWwoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0Q2xvbmVkTGF5ZXIoY29uc3QgUGxhdGZvcm1DQUxheWVyKik7CiAK
QEAgLTE5MCwxNCArMTkwLDE0IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHVwZGF0ZUNsb25lZExh
eWVyUHJvcGVydGllcyhQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUmIGNsb25lLCBib29sIGNvcHlDb250
ZW50cyA9IHRydWUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBpc1BsYXRm
b3JtQ0FMYXllclJlbW90ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKyAgICBi
b29sIGlzUGxhdGZvcm1DQUxheWVyUmVtb3RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIHZvaWQgZW5zdXJlQmFja2luZ1N0b3JlKCk7CiAgICAgdm9pZCB1cGRhdGVCYWNr
aW5nU3RvcmUoKTsKICAgICB2b2lkIHJlbW92ZVN1YmxheWVyKFBsYXRmb3JtQ0FMYXllclJlbW90
ZSopOwogCiAgICAgYm9vbCByZXF1aXJlc0N1c3RvbUFwcGVhcmFuY2VVcGRhdGVPbkJvdW5kc0No
YW5nZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCBXZWJDb3JlOjpMYXllclBvb2wmIGxheWVyUG9v
bCgpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkxheWVyUG9vbCYgbGF5ZXJQb29sKCkgb3ZlcnJp
ZGU7CiAKICAgICBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzIG1f
cHJvcGVydGllczsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJMaXN0IG1fY2hpbGRyZW47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uaAppbmRleCBkYjk2ODJhMzg1OTNl
N2Y1MGQxZDliMjExNGUwMzhlMzg2YzYxNzQ4Li5lMjhkMzY3OGQzMmMwMDNmMzhmZTMxM2FlMzdj
NWY5YWQwYjU2MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmgKQEAg
LTQwLDIyICs0MCwyMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGVDdXN0b20oKTsKIAotICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fcGxhdGZvcm1MYXllci5nZXQoKTsgfQorICAg
IFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3BsYXRmb3JtTGF5ZXIuZ2V0KCk7IH0KIAotICAgIHZpcnR1YWwgdWludDMyX3QgaG9zdGluZ0Nv
bnRleHRJRCgpIG92ZXJyaWRlOworICAgIHVpbnQzMl90IGhvc3RpbmdDb250ZXh0SUQoKSBvdmVy
cmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiBkaXJ0eVJlY3QpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGVDdXN0b20oV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGUsIFBs
YXRmb3JtTGF5ZXIgKiwgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBvd25lciwgUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dCYpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OlBsYXRmb3JtQ0FMYXllcj4gY2xvbmUoV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyQ2xpZW50KiBv
d25lcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXI+IGNsb25lKFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIGNvbnN0
IG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIGlzUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3Vz
dG9tKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGJvb2wgaXNQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGVDdXN0b20oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICB2aXJ0dWFsIENGVHlwZVJlZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50cyhDRlR5cGVSZWYpIG92ZXJyaWRlOworICAgIENGVHlwZVJl
ZiBjb250ZW50cygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29udGVudHMoQ0ZUeXBl
UmVmKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXllckhvc3RpbmdDb250ZXh0
PiBtX2xheWVySG9zdGluZ0NvbnRleHQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5ZXI+IG1f
cGxhdGZvcm1MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZVRpbGVkQmFj
a2luZy5oCmluZGV4IDE4ZTNkZjhjMWIzMmZhMDBjNTEyN2U2NDU2ODU3NmY2ZjE3MzFmZjUuLjY3
ZTQwMDczNTBkNThkMDUzOWMxNjA4Y2RmM2NmYTI2OGU3MmNkN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlVGls
ZWRCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tpbmcuaApAQCAtMzksMjYgKzM5LDI2IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgUGxhdGZvcm1DQUxheWVyUmVtb3RlVGlsZWRCYWNraW5nKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyLCBSZW1vdGVMYXllclRyZWVDb250ZXh0Jik7CiAKLSAgICB2aXJ0dWFs
IFdlYkNvcmU6OlRpbGVkQmFja2luZyogdGlsZWRCYWNraW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bV90aWxlQ29udHJvbGxlci5nZXQoKTsgfQorICAgIFdlYkNvcmU6OlRpbGVkQmFja2luZyogdGls
ZWRCYWNraW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gbV90aWxlQ29udHJvbGxlci5nZXQoKTsgfQog
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIGRpcnR5UmVjdCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
RGlzcGxheSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgZGlydHlSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldE5l
ZWRzRGlzcGxheSgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJMaXN0KiBjdXN0b21TdWJsYXllcnMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXJMaXN0KiBjdXN0b21TdWJsYXllcnMoKSBjb25z
dCBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGlzT3BhcXVlKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzT3BhcXVlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRPcGFx
dWUoYm9vbCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCBib29sIGFjY2VsZXJhdGVzRHJh
d2luZygpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlc0Ry
YXdpbmcoYm9vbCkgb3ZlcnJpZGU7CisgICAgYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcoKSBjb25z
dCBvdmVycmlkZTsKKyAgICB2b2lkIHNldEFjY2VsZXJhdGVzRHJhd2luZyhib29sKSBvdmVycmlk
ZTsKICAgICAKLSAgICB2aXJ0dWFsIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgb3ZlcnJpZGU7Cisg
ICAgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q29u
dGVudHNTY2FsZShmbG9hdCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHNldEJv
cmRlcldpZHRoKGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qm9yZGVyQ29s
b3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJvcmRlcldp
ZHRoKGZsb2F0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJvcmRlckNvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6VGls
ZUNvbnRyb2xsZXI+IG1fdGlsZUNvbnRyb2xsZXI7CiAgICAgbXV0YWJsZSBXZWJDb3JlOjpQbGF0
Zm9ybUNBTGF5ZXJMaXN0IG1fY3VzdG9tU3VibGF5ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRl
eHQuaAppbmRleCBmN2QyNTI3ZmU2ZTM2MzBhMjExZTlkNzEwMTVlMmVmNDVmMzk3OTZlLi5mOTVj
MzBlNmIxNDhiNTIxYTY5NDc1MzZjOGNjNmEyMTI1MmY5N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJl
ZUNvbnRleHQuaApAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8g
V2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkKLSAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBjcmVhdGVHcmFwaGljc0xheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlR5cGUsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDbGllbnQmKSBvdmVycmlk
ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gY3JlYXRlR3Jh
cGhpY3NMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpUeXBlLCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2xpZW50Jikgb3ZlcnJpZGU7CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaAppbmRleCA2YmJmODM4Y2ZlYmM2NGRlZTVk
MmVhN2UzODQ4OWNkNzUzNGI2ZDQ1Li43NDQ3MThhYWI5MDBkNTlhOTNmOTVjM2NkMDM3MjA0NjA0
ODgxYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCkBAIC02MSw1NyAr
NjEsNTcgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAvLyBEcmF3aW5nQXJlYQotICAg
IHZpcnR1YWwgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9s
bFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmll
d1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1c2hT
eW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXROZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRlOwor
ICAgIHZvaWQgc2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0
ZUdlb21ldHJ5KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBsYXllclBvc2l0aW9uLCBib29sIGZsdXNoU3luY2hyb25vdXNseSwgY29uc3Qg
V2ViQ29yZTo6TWFjaFNlbmRSaWdodCYgZmVuY2VQb3J0KSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVD
b21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwotICAgIHZpcnR1
YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6R3JhcGhpY3NM
YXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7
CisgICAgdm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpIG92ZXJyaWRlOworICAg
IHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2hJbW1lZGlhdGVseSgpIG92ZXJyaWRl
OworICAgIHZvaWQgYXR0YWNoVmlld092ZXJsYXlHcmFwaGljc0xheWVyKFdlYkNvcmU6OkZyYW1l
KiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsK
KyAgICB2b2lkIGFkZFRyYW5zYWN0aW9uQ2FsbGJhY2tJRCh1aW50NjRfdCBjYWxsYmFja0lEKSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9u
aXRvcj4gY3JlYXRlRGlzcGxheVJlZnJlc2hNb25pdG9yKFBsYXRmb3JtRGlzcGxheUlEKSBvdmVy
cmlkZTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yPiBjcmVhdGVE
aXNwbGF5UmVmcmVzaE1vbml0b3IoUGxhdGZvcm1EaXNwbGF5SUQpIG92ZXJyaWRlOwogICAgIHZv
aWQgd2lsbERlc3Ryb3lEaXNwbGF5UmVmcmVzaE1vbml0b3IoV2ViQ29yZTo6RGlzcGxheVJlZnJl
c2hNb25pdG9yKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9y
RnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyopIG92ZXJyaWRlOworICAgIGJvb2wg
c2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmll
dyopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0FzeW5jU2Nyb2xsaW5nKCkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QpIG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBmb3JjZVJlcGFpbnQoKSBvdmVycmlkZTsKKyAgICBib29sIGZvcmNl
UmVwYWludEFzeW5jKHVpbnQ2NF90KSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAg
dmlydHVhbCB2b2lkIHNldEV4cG9zZWRSZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92
ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JvbGxlZEV4cG9zZWRSZWN0OyB9CisgICAgdm9pZCBz
ZXRFeHBvc2VkUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBX
ZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJlY3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBt
X3Njcm9sbGVkRXhwb3NlZFJlY3Q7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhY2NlbGVyYXRlZEFu
aW1hdGlvbkRpZFN0YXJ0KHVpbnQ2NF90IGxheWVySUQsIGNvbnN0IFN0cmluZyYga2V5LCBkb3Vi
bGUgc3RhcnRUaW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgYWNjZWxlcmF0ZWRBbmlt
YXRpb25EaWRFbmQodWludDY0X3QgbGF5ZXJJRCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRl
OworICAgIHZvaWQgYWNjZWxlcmF0ZWRBbmltYXRpb25EaWRTdGFydCh1aW50NjRfdCBsYXllcklE
LCBjb25zdCBTdHJpbmcmIGtleSwgZG91YmxlIHN0YXJ0VGltZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhY2NlbGVyYXRlZEFuaW1hdGlvbkRpZEVuZCh1aW50NjRfdCBsYXllcklELCBjb25zdCBTdHJp
bmcmIGtleSkgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShJT1MpCi0gICAgdmlydHVhbCBXZWJD
b3JlOjpGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEV4cG9zZWRDb250ZW50UmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZENvbnRlbnRSZWN0
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRFeHBvc2VkQ29udGVudFJlY3QoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9p
ZCBkaWRVcGRhdGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFVwZGF0ZSgpIG92ZXJyaWRlOwog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3Rv
cihmbG9hdCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
b3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6
ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgbWFp
bkZyYW1lQ29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCB2aWV3U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0
YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRzRGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykgb3ZlcnJpZGU7CisgICAgdm9pZCB2aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6Vmlld1N0YXRlOjpGbGFncyBjaGFuZ2VkLCBib29sIHdhbnRz
RGlkVXBkYXRlVmlld1N0YXRlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBjYWxsYmFja0lEcykg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxpbmco
V2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKKyAgICBi
b29sIGFkanVzdExheWVyRmx1c2hUaHJvdHRsaW5nKFdlYkNvcmU6OkxheWVyRmx1c2hUaHJvdHRs
ZVN0YXRlOjpGbGFncykgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hEaWRM
YXlvdXQoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcykgb3ZlcnJpZGU7CisgICAgYm9vbCBkaXNw
YXRjaERpZExheW91dChXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgdXBkYXRlU2Nyb2xsZWRFeHBvc2VkUmVjdCgpOwogICAgIHZvaWQgdXBkYXRlUm9vdExh
eWVycygpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCB0YWtl
TmV4dFRyYW5zYWN0aW9uSUQoKSB7IHJldHVybiArK21fY3VycmVudFRyYW5zYWN0aW9uSUQ7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBtYXJrTGF5ZXJzVm9sYXRpbGVJbW1lZGlhdGVseUlmUG9zc2li
bGUoKSBvdmVycmlkZTsKKyAgICBib29sIG1hcmtMYXllcnNWb2xhdGlsZUltbWVkaWF0ZWx5SWZQ
b3NzaWJsZSgpIG92ZXJyaWRlOwogCiAgICAgY2xhc3MgQmFja2luZ1N0b3JlRmx1c2hlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxCYWNraW5nU3RvcmVGbHVzaGVyPiB7CiAgICAgcHVi
bGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9U
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCmluZGV4IDE3NGY1
OWQ3NWYxNmNhMGU3OTQzMDJlZGY5Yjg3MGIzNmViYjM0MzQuLmI5YTdmZWZkYzkwYTlmMGZhYjQ1
NDI1ZTViZDZjZWI5YWIxNzYxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKQEAgLTU3LDUxICs1Nyw1MSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8g
RHJhd2luZ0FyZWEKLSAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjcm9sbChjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxEZWx0
YSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXROZWVkc0Rpc3BsYXkoKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEpIG92ZXJyaWRlOwogCi0gICAgdmly
dHVhbCB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgYm9vbCBmb3Jj
ZVJlcGFpbnRBc3luYyh1aW50NjRfdCBjYWxsYmFja0lEKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0TGF5ZXJUcmVlU3RhdGVJc0Zyb3plbihib29sKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZs
dXNoKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXll
ckZsdXNoSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKKyAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92
ZXJyaWRlOworICAgIGJvb2wgZm9yY2VSZXBhaW50QXN5bmModWludDY0X3QgY2FsbGJhY2tJRCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wpIG92ZXJy
aWRlOworICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZvaWQgc2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
IG92ZXJyaWRlOworICAgIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoSW1tZWRpYXRlbHko
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIG1haW5GcmFt
ZUNvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBtYWluRnJhbWVDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEV4cG9zZWRSZWN0
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGV4cG9zZWRSZWN0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3Jv
bGxlZEV4cG9zZWRSZWN0OyB9CisgICAgdm9pZCBzZXRFeHBvc2VkUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgZXhwb3NlZFJl
Y3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Njcm9sbGVkRXhwb3NlZFJlY3Q7IH0KIAot
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0FzeW5jU2Nyb2xsaW5nKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIGJvb2wgc3VwcG9ydHNBc3luY1Njcm9sbGluZygpIG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdV
cGRhdGVkU2Nyb2xsUG9zaXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oc3RkOjpm
dW5jdGlvbjx2b2lkICgpPikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNl
VGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IFdlYkNvcmU6OkZyYW1lVmlldyopIG92ZXJy
aWRlOworICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5nRm9yRnJhbWVWaWV3KGNvbnN0IFdl
YkNvcmU6OkZyYW1lVmlldyopIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHZpZXdTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNoYW5nZWQsIGJvb2wgd2FudHNE
aWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHZpZXdTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpWaWV3U3RhdGU6OkZsYWdzIGNoYW5n
ZWQsIGJvb2wgd2FudHNEaWRVcGRhdGVWaWV3U3RhdGUsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0ZVZpZXdTdGF0ZVRpbWVyRmlyZWQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6
RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCBhdHRh
Y2hWaWV3T3ZlcmxheUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFw
aGljc0xheWVyKikgb3ZlcnJpZGU7CiAKICAgICAvLyBXZWJDb3JlOjpMYXllckZsdXNoU2NoZWR1
bGVyQ2xpZW50Ci0gICAgdmlydHVhbCBib29sIGZsdXNoTGF5ZXJzKCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCBmbHVzaExheWVycygpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
dmlld1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGxheWVyUG9zaXRpb24sIGJvb2wgZmx1
c2hTeW5jaHJvbm91c2x5LCBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBmZW5jZVBvcnQp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkg
b3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiB2aWV3U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbGF5ZXJQb3NpdGlvbiwgYm9vbCBm
bHVzaFN5bmNocm9ub3VzbHksIGNvbnN0IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQmIGZlbmNlUG9y
dCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXREZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHJlc3VtZVBhaW50aW5n
KCk7CiAgICAgdm9pZCBzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIG92ZXJy
aWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb2xvclNwYWNlKGNvbnN0IENvbG9yU3BhY2VEYXRh
Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEZlbmNlKGNvbnN0IFdlYkNvcmU6Ok1h
Y2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENvbG9yU3BhY2UoY29uc3QgQ29s
b3JTcGFjZURhdGEmKSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZEZlbmNlKGNvbnN0IFdlYkNvcmU6
Ok1hY2hTZW5kUmlnaHQmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2hvdWxk
U2NhbGVWaWV3VG9GaXREb2N1bWVudChib29sKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBv
cmlnaW4pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb21taXRUcmFuc2llbnRab29tKGRv
dWJsZSBzY2FsZSwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pIG92ZXJyaWRlOworICAgIHZv
aWQgYWRqdXN0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQg
b3JpZ2luKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvbW1pdFRyYW5zaWVudFpvb20oZG91YmxlIHNj
YWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBs
eVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxlLCBXZWJDb3JlOjpGbG9hdFBvaW50IG9y
aWdpbik7CiAgICAgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyKiBsYXllckZvclRyYW5zaWVudFpv
b20oKSBjb25zdDsKICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXIqIHNoYWRvd0xheWVyRm9y
VHJhbnNpZW50Wm9vbSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNjc2NTZiYjg0ZmUzYjk1M2M4OTVhMmU1OWJlMTM0NzIyOWFhOTk4Yi4uODY3
ZGQxMzgzODUzYmMzYmRhMGNmNDU1Y2I4NDk1ODRlODJlMGIxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xMjkxLDcgKzEyOTEsNyBAQCBSZWZQdHI8QVBJ
OjpPYmplY3Q+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmpl
Y3QqIG9iamVjdCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFRyYW5zZm9ybU9iamVjdChjb25zdCBBUEk6Ok9iamVjdCYgb2JqZWN0KSBjb25zdCBv
dmVycmlkZQorICAgICAgICBib29sIHNob3VsZFRyYW5zZm9ybU9iamVjdChjb25zdCBBUEk6Ok9i
amVjdCYgb2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0
Y2ggKG9iamVjdC50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6
OkZyYW1lSGFuZGxlOgpAQCAtMTMxMSw3ICsxMzExLDcgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBX
ZWJQcm9jZXNzOjp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0KiBvYmplY3Qp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0KEFQSTo6T2JqZWN0JiBvYmplY3QpIGNvbnN0IG92ZXJy
aWRlCisgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdHJhbnNmb3JtT2JqZWN0KEFQSTo6T2Jq
ZWN0JiBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRj
aCAob2JqZWN0LnR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6
RnJhbWVIYW5kbGU6CkBAIC0xMzQxLDcgKzEzNDEsNyBAQCBSZWZQdHI8QVBJOjpPYmplY3Q+IFdl
YlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqIG9iamVjdCkK
IFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyhBUEk6Ok9iamVjdCogb2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFuc2Zvcm1lciBmaW5hbCA6
IFVzZXJEYXRhOjpUcmFuc2Zvcm1lciB7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUcmFu
c2Zvcm1PYmplY3QoY29uc3QgQVBJOjpPYmplY3QmIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICAgICAgYm9vbCBzaG91bGRUcmFuc2Zvcm1PYmplY3QoY29uc3QgQVBJOjpPYmplY3QmIG9iamVj
dCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChvYmplY3Qu
dHlwZSgpKSB7CiAgICAgICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVGcmFt
ZToKQEAgLTEzNTcsNyArMTM1Nyw3IEBAIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCogb2JqZWN0KQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWZQdHI8QVBJOjpPYmplY3Q+IHRy
YW5zZm9ybU9iamVjdChBUEk6Ok9iamVjdCYgb2JqZWN0KSBjb25zdCBvdmVycmlkZQorICAgICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHRyYW5zZm9ybU9iamVjdChBUEk6Ok9iamVjdCYgb2JqZWN0
KSBjb25zdCBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKG9iamVjdC50
eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZUZyYW1l
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCBmNTYzMjdhOTYwYTdj
MTY1OTAyZTU1YTlmNGVjZjY5NWI2ZmNlZmM5Li43ZDgwYjAxMjJlZGIyOGU3MTRlODViODBjYWQw
ZmQzMmQ3NTdkMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
Mjc3LDI3ICsyNzcsMjcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFjdHVhbFByZXBhcmVUb1N1c3Bl
bmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQpOwogCiAgICAgLy8gQ2hpbGRQ
cm9jZXNzCi0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBpbml0aWFsaXplUHJvY2Vzc05hbWUoY29uc3QgQ2hpbGRQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVTYW5kYm94
KGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYsIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlh
bGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZFRlcm1pbmF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5h
dGUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRpYWxpemVQcm9jZXNzKGNvbnN0IENoaWxkUHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlh
bGl6ZVByb2Nlc3NOYW1lKGNvbnN0IENoaWxkUHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVy
cyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgQ2hpbGRQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiwgU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYpIG92ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uKikgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoKSBvdmVycmlkZTsK
KyAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAjaWYgVVNFKEFQUEtJVCkKLSAgICB2
aXJ0dWFsIHZvaWQgc3RvcFJ1bkxvb3AoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BSdW5Mb29w
KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUHJvY2Vz
cyhjb25zdCBDaGlsZFByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIC8v
IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgZnJpZW5kIGNsYXNzIFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2VzczsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VOYW1lKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIElQQzo6UHJvY2Vzc1R5
cGUgbG9jYWxQcm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6
OldlYjsgfQotICAgIHZpcnR1YWwgSVBDOjpQcm9jZXNzVHlwZSByZW1vdGVQcm9jZXNzVHlwZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OlVJOyB9CisgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpNZXNzYWdlRGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6Ok1lc3NhZ2VFbmNvZGVy
PiYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIElQQzo6UHJvY2Vzc1R5cGUgbG9jYWxQ
cm9jZXNzVHlwZSgpIG92ZXJyaWRlIHsgcmV0dXJuIElQQzo6UHJvY2Vzc1R5cGU6OldlYjsgfQor
ICAgIElQQzo6UHJvY2Vzc1R5cGUgcmVtb3RlUHJvY2Vzc1R5cGUoKSBvdmVycmlkZSB7IHJldHVy
biBJUEM6OlByb2Nlc3NUeXBlOjpVSTsgfQogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJh
dGVkIFdlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2Vi
UHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQppbmRleCAyOWU3YjNlMDQwNThlNTc5ZWI1MTVlMDI0N2UyOWY4MTdmMzAyMGRjLi40NmZhYzkx
MWNhN2IzNGMxMjcxYWRjNDgxZjMwYzgxMmUwZjQ1ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMzAxLDcgKzMwMSw3
IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHMoT2JqQ09iamVjdEdyYXBoJiBvCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRUcmFuc2Zvcm1PYmplY3QoaWQgb2JqZWN0KSBjb25zdCBv
dmVycmlkZQorICAgICAgICBib29sIHNob3VsZFRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNv
bnN0IG92ZXJyaWRlCiAgICAgICAgIHsKICNpZiBXS19BUElfRU5BQkxFRAogICAgICAgICAgICAg
aWYgKGR5bmFtaWNfb2JqY19jYXN0PFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlPihvYmplY3QpKQpA
QCAtMzEzLDcgKzMxMyw3IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6OnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYXBoJiBvCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJldGFpblB0cjxpZD4g
dHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgUmV0YWlu
UHRyPGlkPiB0cmFuc2Zvcm1PYmplY3QoaWQgb2JqZWN0KSBjb25zdCBvdmVycmlkZQogICAgICAg
ICB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKICAgICAgICAgICAgIGlmIChhdXRvKiBoYW5kbGUgPSBk
eW5hbWljX29iamNfY2FzdDxXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZT4ob2JqZWN0KSkgewpAQCAt
MzM4LDcgKzMzOCw3IEBAIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IFdlYlByb2Nlc3M6OnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHMoT2JqQ09iamVjdEdyYXBoJiBvCiBSZWZQdHI8T2JqQ09iamVj
dEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKE9iakNPYmplY3RH
cmFwaCYgb2JqZWN0R3JhcGgpCiB7CiAgICAgc3RydWN0IFRyYW5zZm9ybWVyIGZpbmFsIDogT2Jq
Q09iamVjdEdyYXBoOjpUcmFuc2Zvcm1lciB7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRU
cmFuc2Zvcm1PYmplY3QoaWQgb2JqZWN0KSBjb25zdCBvdmVycmlkZQorICAgICAgICBib29sIHNo
b3VsZFRyYW5zZm9ybU9iamVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCiAgICAgICAgIHsK
ICNpZiBXS19BUElfRU5BQkxFRAogICAgICAgICAgICAgaWYgKGR5bmFtaWNfb2JqY19jYXN0PFdL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4ob2JqZWN0KSkKQEAgLTM1
MSw3ICszNTEsNyBAQCBSZWZQdHI8T2JqQ09iamVjdEdyYXBoPiBXZWJQcm9jZXNzOjp0cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKE9iakNPYmplY3RHcmFwaCYgbwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZXRhaW5QdHI8aWQ+IHRyYW5z
Zm9ybU9iamVjdChpZCBvYmplY3QpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIFJldGFpblB0cjxp
ZD4gdHJhbnNmb3JtT2JqZWN0KGlkIG9iamVjdCkgY29uc3Qgb3ZlcnJpZGUKICAgICAgICAgewog
I2lmIFdLX0FQSV9FTkFCTEVECiAgICAgICAgICAgICBpZiAoYXV0byogY29udHJvbGxlciA9IGR5
bmFtaWNfb2JqY19jYXN0PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cj4ob2JqZWN0KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2Ev
V2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKaW5kZXggOGRiMjc4M2M0ZmZiMDgwZGEy
YzQ0ZGY1N2ZjNzIwNWI4OTk1Mjc1OC4uZGM2NDViMzMzMzhjMzJiNmRhYmNmNTViNTM5YjgyYzlm
MGE5YmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKQEAgLTgxLDE4ICs4MSwxOCBAQCBwdWJs
aWM6CiAKIHByaXZhdGU6CiAgICAgLy8gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlCi0gICAg
dmlydHVhbCB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXREdXJhdGlvbihkb3VibGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJy
ZW50VGltZShkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKSBvdmVycmlkZTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1Zp
ZGVvLCBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Vla2FibGVSYW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCB2YWx1ZSkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNv
bnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRlcm5hbFBsYXliYWNrKGJv
b2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUsIFdURjo6U3RyaW5nIGxvY2Fs
aXplZERldmljZU5hbWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0TWVkaWFT
dGF0ZSgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RHVyYXRpb24oZG91YmxlKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hv
clRpbWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnVmZmVyZWRUaW1lKGRvdWJsZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2Vla2FibGVS
YW5nZXMoY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgdmFsdWUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0RXh0ZXJuYWxQ
bGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlLCBXVEY6OlN0
cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFdpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwogCiAgICAgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQ29udGV4dChXZWJWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyJiwgdWludDY0
X3QgY29udGV4dElkKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDViMmJlYWQ3NTU5MDdiYzdjOGIzMjBjN2FmNGRjNzM4YjU4NTRlN2MuLjUw
NTM4ZTJmYjRmZTJkZmJkYzMzNzU4NWRlM2M4NmI1MGY2NTZhMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNi0w
My0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlICJ2
aXJ0dWFsIiBmcm9tIGFsbCBsaW5lcyB0aGF0IGhhdmUgYm90aCAidmlydHVhbCIgYW5kICJvdmVy
cmlkZSIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTUwMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNjcmlwdHMvZG8td2ViY29yZS1yZW5hbWU6IEFkZGVkIGEgcmVndWxhciBleHByZXNzaW9uIHRv
IHRoaXMgc2NyaXB0IHRvIGRvIHRoZSBqb2IuCisKIDIwMTYtMDMtMDMgIENhcmxvcyBBbGJlcnRv
IExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZp
ZXdlZCBmaXggYWZ0ZXIgcjE5NzUwNSAoUnVuIHRoZSBydW4tYmVuY2htYXJrIHNjcmlwdCBvbiB0
aGUgcGVyZm9ybWFuY2UgYm90LikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29y
ZS1yZW5hbWUgYi9Ub29scy9TY3JpcHRzL2RvLXdlYmNvcmUtcmVuYW1lCmluZGV4IDI0ZWE5NzA1
MmExYTc1ZjcxZjM0NGVjMzhlOGQ5NTU1NmFkM2E2OTQuLjVhZWQ3M2E3ODE2NzNhMmNjMWFkZjJk
ZGExODgwOGM3ODE5MTJlOWUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZG8td2ViY29yZS1y
ZW5hbWUKKysrIGIvVG9vbHMvU2NyaXB0cy9kby13ZWJjb3JlLXJlbmFtZQpAQCAtMjA0LDcgKzIw
NCw3IEBAIGZvciBteSAkZmlsZSAoc29ydCBAcGF0aHMpIHsKICAgICBpZiAoJGlzRE9NVHlwZVJl
bmFtZSkgewogICAgICAgICBmb3IgbXkgJGZyb20gKEBzb3J0ZWRSZW5hbWVLZXlzKSB7CiAgICAg
ICAgICAgICAjIEhhbmRsZSBKYXZhU2NyaXB0IGN1c3RvbSBiaW5kaW5ncy4KLSAgICAgICAgICAg
ICRuZXdDb250ZW50cyA9fiBzL1xiKEpTfFY4fHRvfCkkZnJvbS8kMSRyZW5hbWVzeyRmcm9tfS9n
OworICAgICAgICAgICAgJG5ld0NvbnRlbnRzID1+IHMvXGIoSlN8dG98KSRmcm9tLyQxJHJlbmFt
ZXN7JGZyb219L2c7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmb3IgbXkgJGZy
b20gKEBzb3J0ZWRSZW5hbWVLZXlzKSB7CkBAIC0yMTIsNiArMjEyLDEwIEBAIGZvciBteSAkZmls
ZSAoc29ydCBAcGF0aHMpIHsKICAgICAgICAgfQogICAgIH0KIAorICAgICMgUmVtb3ZlIHRoZSAi
dmlydHVhbCIga2V5d29yZCBmcm9tIHZpcnR1YWwvb3ZlcnJpZGUgbGluZXMuCisgICAgIyBTaG91
bGQgYmUgYSBuby1vcCBidXQgYWxzbyBPSyB0byByZW1vdmUgdGhpcyBhbnkgdGltZSwgbm93IHRo
YXQgd2UgaGF2ZSBkb25lIGl0IG9uY2UuCisgICAgJG5ld0NvbnRlbnRzID1+IHMvXihccyooXHcr
RVhQT1JUXHcqXHMrKT8pdmlydHVhbCAoW157O10rIG92ZXJyaWRlXGIpLyQxJDMvbWc7CisKICAg
ICBpZiAoJG5ld0NvbnRlbnRzIG5lICRjb250ZW50cykgewogICAgICAgICBvcGVuIEZJTEUsICI+
IiwgJGZpbGUgb3IgZGllICJGYWlsZWQgdG8gb3BlbiAkZmlsZSI7CiAgICAgICAgIHByaW50IEZJ
TEUgJG5ld0NvbnRlbnRzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NhbGN1bGF0aW9uVmFsdWUuY3BwCmluZGV4IDI4NmYzMGZkMGQ3ZDViMmI4NDBlZThh
YWIzMDE4MjUwNDBlYWRkNDkuLmU3NTQzODE4YTE2ZDQ5OTBjZGRmZjVkNmQ3NThmMWRmMjQ4NGU4
ZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DYWxjdWxh
dGlvblZhbHVlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ2Fs
Y3VsYXRpb25WYWx1ZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogICAgICAgICArK2Rl
bGV0aW9uQ291bnQ7CiAgICAgfQogCi0gICAgdmlydHVhbCBmbG9hdCBldmFsdWF0ZShmbG9hdCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIGZsb2F0IGV2YWx1YXRlKGZsb2F0KSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENh
bGNFeHByZXNzaW9uTm9kZSYpIGNvbnN0IG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBmYWxzZTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9Db250ZW50RXh0ZW5zaW9ucy5jcHAKaW5kZXggZDNjMTBhZmM3ZDc5ZWE0
YzNhM2VlOTVmODVmN2FjMjI4MGJjNDQ1My4uOTAyOGRmMjZjNzBmMzdiNTMxZmYyOTE1YjgzODE3
YTE2MGE2Zjc2MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0NvbnRlbnRFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvQ29udGVudEV4dGVuc2lvbnMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgcHVibGljOgog
ICAgICAgICBFWFBFQ1RfRVEoZGF0YS5kb21haW5GaWx0ZXJzLnNpemUoKSwgMHVsbCk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlQWN0aW9ucyhWZWN0b3I8Q29udGVudEV4dGVuc2lv
bnM6OlNlcmlhbGl6ZWRBY3Rpb25CeXRlPiYmIGFjdGlvbnMpIG92ZXJyaWRlCisgICAgdm9pZCB3
cml0ZUFjdGlvbnMoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0
ZT4mJiBhY3Rpb25zKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFs
aXplZCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuYWN0aW9ucy5zaXplKCksIDB1bGwpOwpA
QCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9kYXRhLmFjdGlvbnMuYXBwZW5k
VmVjdG9yKGFjdGlvbnMpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVGaWx0
ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZShWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5
dGVjb2RlPiYmIGJ5dGVjb2RlKSBvdmVycmlkZQorICAgIHZvaWQgd3JpdGVGaWx0ZXJzV2l0aG91
dERvbWFpbnNCeXRlY29kZShWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlPiYm
IGJ5dGVjb2RlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGZpbmFsaXpl
ZCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2RhdGEuZmlsdGVyc1dpdGhEb21haW5zLnNpemUoKSwg
MHVsbCk7CkBAIC0xMTgsMjAgKzExOCwyMCBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0YS5maWx0
ZXJzV2l0aG91dERvbWFpbnMuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKICAgICB9CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIHdyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoVmVjdG9yPENv
bnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUKKyAgICB2
b2lkIHdyaXRlRmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEVY
UEVDVF9GQUxTRShmaW5hbGl6ZWQpOwogICAgICAgICBFWFBFQ1RfRVEobV9kYXRhLmRvbWFpbkZp
bHRlcnMuc2l6ZSgpLCAwdWxsKTsKICAgICAgICAgbV9kYXRhLmZpbHRlcnNXaXRoRG9tYWlucy5h
cHBlbmRWZWN0b3IoYnl0ZWNvZGUpOwogICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgd3Jp
dGVEb21haW5GaWx0ZXJzQnl0ZWNvZGUoVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpERkFCeXRl
Y29kZT4mJiBieXRlY29kZSkgb3ZlcnJpZGUKKyAgICB2b2lkIHdyaXRlRG9tYWluRmlsdGVyc0J5
dGVjb2RlKFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGU+JiYgYnl0ZWNvZGUp
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBFWFBFQ1RfRkFMU0UoZmluYWxpemVkKTsKICAgICAg
ICAgbV9kYXRhLmRvbWFpbkZpbHRlcnMuYXBwZW5kVmVjdG9yKGJ5dGVjb2RlKTsKICAgICB9CiAg
ICAgCi0gICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKCkgb3ZlcnJpZGUKKyAgICB2b2lkIGZpbmFs
aXplKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGZpbmFsaXplZCA9IHRydWU7CiAgICAgfQpA
QCAtMTY2LDE0ICsxNjYsMTQgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IGNvbnN0IENvbnRlbnRFeHRlbnNpb25zOjpTZXJpYWxpemVkQWN0aW9uQnl0ZSogYWN0aW9ucygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YS5hY3Rpb25zLmRhdGEoKTsgfQotICAgIHZp
cnR1YWwgdW5zaWduZWQgYWN0aW9uc0xlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
ZGF0YS5hY3Rpb25zLnNpemUoKTsgfQotICAgIHZpcnR1YWwgY29uc3QgQ29udGVudEV4dGVuc2lv
bnM6OkRGQUJ5dGVjb2RlKiBmaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YS5maWx0ZXJzV2l0aG91dERvbWFpbnMuZGF0YSgpOyB9Ci0g
ICAgdmlydHVhbCB1bnNpZ25lZCBmaWx0ZXJzV2l0aG91dERvbWFpbnNCeXRlY29kZUxlbmd0aCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YS5maWx0ZXJzV2l0aG91dERvbWFpbnMuc2l6
ZSgpOyB9Ci0gICAgdmlydHVhbCBjb25zdCBDb250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUq
IGZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9k
YXRhLmZpbHRlcnNXaXRoRG9tYWlucy5kYXRhKCk7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIGZp
bHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
bV9kYXRhLmZpbHRlcnNXaXRoRG9tYWlucy5zaXplKCk7IH0KLSAgICB2aXJ0dWFsIGNvbnN0IENv
bnRlbnRFeHRlbnNpb25zOjpERkFCeXRlY29kZSogZG9tYWluRmlsdGVyc0J5dGVjb2RlKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kYXRhLmRvbWFpbkZpbHRlcnMuZGF0YSgpOyB9Ci0gICAg
dmlydHVhbCB1bnNpZ25lZCBkb21haW5GaWx0ZXJzQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2RhdGEuZG9tYWluRmlsdGVycy5zaXplKCk7IH0KKyAgICBjb25zdCBD
b250ZW50RXh0ZW5zaW9uczo6U2VyaWFsaXplZEFjdGlvbkJ5dGUqIGFjdGlvbnMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2RhdGEuYWN0aW9ucy5kYXRhKCk7IH0KKyAgICB1bnNpZ25lZCBh
Y3Rpb25zTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9kYXRhLmFjdGlvbnMuc2l6
ZSgpOyB9CisgICAgY29uc3QgQ29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlKiBmaWx0ZXJz
V2l0aG91dERvbWFpbnNCeXRlY29kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YS5m
aWx0ZXJzV2l0aG91dERvbWFpbnMuZGF0YSgpOyB9CisgICAgdW5zaWduZWQgZmlsdGVyc1dpdGhv
dXREb21haW5zQnl0ZWNvZGVMZW5ndGgoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2RhdGEu
ZmlsdGVyc1dpdGhvdXREb21haW5zLnNpemUoKTsgfQorICAgIGNvbnN0IENvbnRlbnRFeHRlbnNp
b25zOjpERkFCeXRlY29kZSogZmlsdGVyc1dpdGhEb21haW5zQnl0ZWNvZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX2RhdGEuZmlsdGVyc1dpdGhEb21haW5zLmRhdGEoKTsgfQorICAgIHVu
c2lnbmVkIGZpbHRlcnNXaXRoRG9tYWluc0J5dGVjb2RlTGVuZ3RoKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gbV9kYXRhLmZpbHRlcnNXaXRoRG9tYWlucy5zaXplKCk7IH0KKyAgICBjb25zdCBD
b250ZW50RXh0ZW5zaW9uczo6REZBQnl0ZWNvZGUqIGRvbWFpbkZpbHRlcnNCeXRlY29kZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fZGF0YS5kb21haW5GaWx0ZXJzLmRhdGEoKTsgfQorICAg
IHVuc2lnbmVkIGRvbWFpbkZpbHRlcnNCeXRlY29kZUxlbmd0aCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1fZGF0YS5kb21haW5GaWx0ZXJzLnNpemUoKTsgfQogCiBwcml2YXRlOgogICAgIElu
TWVtb3J5Q29tcGlsZWRDb250ZW50RXh0ZW5zaW9uKENvbXBpbGVkQ29udGVudEV4dGVuc2lvbkRh
dGEmJiBkYXRhKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVT
eXN0ZW0uY3BwCmluZGV4IGZiMjNhNGI3Y2MzNWEwNDRlMTEyNTZmZTVmYmQ2ZmM4MWUwNjMzODgu
Ljc3NWJkMmVlOWYyNDY1MTMwNGFkOGFlZTM4OTY5YmNiYjM4MDVlY2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZVN5c3RlbS5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgY29uc3QgY2hhciogRmlsZVN5c3RlbVRlc3REYXRhID0gIlRoaXMgaXMgYSB0ZXN0IjsK
IC8vIEZJWE1FOiBSZWZhY3RvciBGaWxlU3lzdGVtVGVzdCBhbmQgU2hhcmVkQnVmZmVyVGVzdCBh
cyBhIHNpbmdsZSBjbGFzcy4KIGNsYXNzIEZpbGVTeXN0ZW1UZXN0IDogcHVibGljIHRlc3Rpbmc6
OlRlc3QgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkKCk7CiAgICAgICAgIApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNs
b3NlRmlsZShoYW5kbGUpOyAKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZQorICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgZGVs
ZXRlRmlsZShtX3RlbXBGaWxlUGF0aCk7CiAgICAgICAgIGRlbGV0ZUZpbGUobV90ZW1wRW1wdHlG
aWxlUGF0aCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IDI5NTI4MWVmOWZmYzFlMDllODE1OWQwYjBlMGFlMWU3Nzc4NjAy
MzMuLmIyZGY4N2U3ZmQzZjQwNjViMTUzY2RjYjljODZiMDdmOWE3YzA2NjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0z
OCw3ICszOCw3IEBAIGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlclRlc3REYXRhID0gIlRoaXMgaXMg
YSB0ZXN0IjsKIAogY2xhc3MgU2hhcmVkQnVmZmVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVh
ZCgpOwogICAgICAgICAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBjbG9zZUZp
bGUoaGFuZGxlKTsgCiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGRlbGV0ZUZp
bGUobV90ZW1wRmlsZVBhdGgpOwogICAgICAgICBkZWxldGVGaWxlKG1fdGVtcEVtcHR5RmlsZVBh
dGgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RpZEFz
c29jaWF0ZUZvcm1Db250cm9sc19CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0RpZEFzc29jaWF0ZUZvcm1Db250cm9sc19CdW5kbGUuY3BwCmluZGV4IDVkY2Q5
MWRhODRhYmM1MDEyZGNlZTE5NmJhNDYyMDdmZTYzNmM2ZmIuLjRlMzBlZWU1ZjVlOGI3NTIzOGU5
NGRlMzRmZWZkNWU1NzU0NDcyZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9EaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNfQnVuZGxlLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzX0J1
bmRsZS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
VGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAgIERpZEFzc29j
aWF0ZUZvcm1Db250cm9sc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJl
Zikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRs
ZVBhZ2VSZWYpIG92ZXJyaWRlOwogfTsKIAogc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVn
aXN0ZXI8RGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGVzdD4gcmVnaXN0cmFyKCJEaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHNUZXN0Iik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdF9C
dW5kbGUuY3BwCmluZGV4IDE0ODA2Njg1ZTU0NjA5ODE2N2JmYTlhNzdkZGJjZTIxZDk4MjRjNDMu
Ljc0Nzg1ODUwMTZiOTBkZDQ1ZjAyYTAwZDgwNzk5MzZiMTEzYTBlMmEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVz
dF9CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Jbmpl
Y3RlZEJ1bmRsZUZyYW1lSGl0VGVzdF9CdW5kbGUuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5k
bGVSZWYsIFdLQnVuZGxlUGFnZVJlZikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVhdGVQYWdl
KFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpIG92ZXJyaWRlOwogICAgIHZvaWQgZnJhbWVM
b2FkRmluaXNoZWQoV0tCdW5kbGVGcmFtZVJlZik7CiAKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRs
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TdG9wTG9h
ZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25h
bExvYWRfYnVuZGxlLmNwcAppbmRleCA1NjEwNTUyMmJlODdmNTAxNjcyYzBmY2FlN2MyYTQ4NzY1
MjU5ZTQwLi5hZDMwMmZmNTFkODU3ZDhjMjczYzUxOGE5ZjVhOTIwYjgxYzY0Yjc3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3RvcExvYWRpbmdEdXJpbmdE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1N0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9i
dW5kbGUuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBh
Z2VSZWYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZChXS0J1bmRs
ZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYpOwogCiAgICAgV0tCdW5kbGVSZWYgbV9idW5kbGU7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tCdW5kbGVG
aWxlSGFuZGxlX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
V0tCdW5kbGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAKaW5kZXggMjdkMzU5YmE2MmNiNzg1ZjdkZDc5
ZjQ1MWVjOWYyY2ZjNmU5ZGU2Mi4uZmNiMGFiN2EwYjI4YzdjYjk2ZGNmMWFjYjczYWIwYjc3OTg2
NDVmNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLQnVu
ZGxlRmlsZUhhbmRsZV9CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XS0J1bmRsZUZpbGVIYW5kbGVfQnVuZGxlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0J1
bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIVdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJUZXN0RmlsZSIpKSB7CiAgICAgICAgICAgICBXS0J1bmRs
ZVBvc3RNZXNzYWdlKGJ1bmRsZSwgVXRpbDo6dG9XSygiRkFJTCIpLmdldCgpLCBVdGlsOjp0b1dL
KCJSZWNpZXZlZCBpbnZhbGlkIG1lc3NhZ2UiKS5nZXQoKSk7CkBAIC04Niw3ICs4Niw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKGJ1bmRsZSwgVXRpbDo6dG9X
SygiRkFJTCIpLmdldCgpLCBVdGlsOjp0b1dLKCJTY3JpcHQgZmFpbGVkIikuZ2V0KCkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwg
V0tCdW5kbGVQYWdlUmVmIHBhZ2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVQYWdlKFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICBsb2FkZWRQYWdlID0gcGFnZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2lsbExvYWRfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsTG9hZF9CdW5kbGUuY3BwCmluZGV4IDA5MWU1YTk0
MmExZTg5MWZkYTdjMTgzNmJkYmIyZWU4YWRhNjA0YjQuLjkwNmZmMDViNzJlMDMxNWRiODM4MWEz
NzY2MGM1MmFhYTJmMjkxZjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XaWxsTG9hZF9CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9XaWxsTG9hZF9CdW5kbGUuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwg
V0tCdW5kbGVQYWdlUmVmIGJ1bmRsZVBhZ2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgYnVuZGxlUGFnZSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudFY2IHBhZ2VMb2FkZXJDbGllbnQ7
CiAgICAgICAgIG1lbXNldCgmcGFnZUxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKHBhZ2VMb2FkZXJD
bGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJHdGsvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDJkMWQyMTZmNDNjMTU4Njdm
MjRmNGMwNDgyMTdiNWQ4YWU0NWYyM2UuLjJkZGRlYjI2ODE1NDg0YmNhYjA3MWU5NjQ2YWI5MmJi
Y2RjNDAyMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0
ay9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMjgwLDcgKzI4MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUo
bV93ZWJDb250ZXh0LmdldCgpLCBzY2hlbWUsIHVyaVNjaGVtZVJlcXVlc3RDYWxsYmFjaywgdGhp
cywgMCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGxvYWRDb21taXR0ZWQoKSBvdmVycmlk
ZQorICAgIHZvaWQgbG9hZENvbW1pdHRlZCgpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
bV9maW5pc2hPbkNvbW1pdHRlZCkgewogICAgICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVy
cm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFpbiks
IGVycm9yQ29kZSwgYWZ0ZXJJbml0aWFsQ2h1bmtFcnJvck1lc3NhZ2UpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzSW52
YWxpZFNjaGVtZV9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAKaW5kZXggMjg3ZjMy
ZmY1OTVhNGUyYTg5NTM5NDQ5YWNiZGQwMTNjMGE4ZDNhOC4uMjc5ZGRkMjY4ZGNhNTFlNzA4ZjZh
YTM0YjNiMWYyZTQzZTE5ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJ
bnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIH0K
IAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwg
V0tCdW5kbGVQYWdlUmVmIGJ1bmRsZVBhZ2UpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDcmVhdGVQ
YWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYgYnVuZGxlUGFnZSkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIFdLQnVuZGxlUGFnZVBvbGljeUNsaWVudFYwIHBvbGljeUNsaWVudDsKICAg
ICAgICAgbWVtc2V0KCZwb2xpY3lDbGllbnQsIDAsIHNpemVvZihwb2xpY3lDbGllbnQpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0Z1bGxzY3JlZW5ab29tSW5p
dGlhbEZyYW1lLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRnVsbHNjcmVlblpv
b21Jbml0aWFsRnJhbWUubW0KaW5kZXggNTJmMDFmNmMwZjNiMTc2NTc4MTBlZmEzMjUyMDc5YmFj
YjgwNzgxMi4uZDMyYWFjZTAzNThkODEzNGRiYzg2YzYyMjc4YThlNmYyM2EwY2I0YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRnVsbHNjcmVlblpvb21Jbml0aWFs
RnJhbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRnVsbHNjcmVlblpv
b21Jbml0aWFsRnJhbWUubW0KQEAgLTczLDE1ICs3MywxNSBAQCBwdWJsaWM6CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFZpZXc+IHZvaWQgcnVuVGVzdChWaWV3KTsKIAogICAgIC8vIFdlYktpdEFn
bm9zdGljVGVzdAotICAgIHZpcnR1YWwgTlNVUkwgKnVybCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJGdWxsc2NyZWVuWm9v
bUluaXRpYWxGcmFtZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFVSTChXZWJW
aWV3ICp3ZWJWaWV3KSBvdmVycmlkZSB7IHJ1blRlc3Qod2ViVmlldyk7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9hZFVSTChXS1ZpZXcgKndrVmlldykgb3ZlcnJpZGUgeyBydW5UZXN0KHdrVmll
dyk7IH0KKyAgICBOU1VSTCAqdXJsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1l
IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXTsgfQorICAgIHZvaWQgZGlkTG9hZFVSTChXZWJWaWV3ICp3ZWJWaWV3KSBvdmVycmlk
ZSB7IHJ1blRlc3Qod2ViVmlldyk7IH0KKyAgICB2b2lkIGRpZExvYWRVUkwoV0tWaWV3ICp3a1Zp
ZXcpIG92ZXJyaWRlIHsgcnVuVGVzdCh3a1ZpZXcpOyB9CiAKICAgICAvLyBTZXR1cCBhbmQgdGVh
cmRvd24gdGhlIFVJRGVsZWdhdGUgd2hpY2ggZ2V0cyBhbGVydCgpIHNpZ25hbHMgZnJvbSB0aGUg
cGFnZS4KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV2ViVmlldyAqKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICopIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCB0ZWFyZG93blZpZXcoV2ViVmlldyAqKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgdGVhcmRvd25WaWV3KFdLVmlldyAqKSBvdmVycmlkZTsKKyAgICB2b2lkIGlu
aXRpYWxpemVWaWV3KFdlYlZpZXcgKikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplVmll
dyhXS1ZpZXcgKikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZWFyZG93blZpZXcoV2ViVmlldyAqKSBv
dmVycmlkZTsKKyAgICB2b2lkIHRlYXJkb3duVmlldyhXS1ZpZXcgKikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHNldFBhZ2VTY2FsZShXZWJWaWV3ICosIGRvdWJsZSk7CiAgICAgdm9pZCBzZXRQYWdl
U2NhbGUoV0tWaWV3ICosIGRvdWJsZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXMubW0KaW5kZXggYmRjY2MyZTM4MTliNjY2NzJiOTRiM2UzNzM4ZDJhYTE1OGJjZjUzOS4u
MzFjYzVkYzJlYWEwNDA3Y2Y0YzdkYjgyOTA0MjZkZjAxY2M2NTE3YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dD
aGFuZ2VzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1BhZ2VWaXNpYmls
aXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbQpAQCAtNjgsMTUgKzY4LDE1IEBAIHB1YmxpYzoK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlldz4gdm9pZCBydW5UZXN0KFZpZXcpOwogCiAgICAg
Ly8gV2ViS2l0QWdub3N0aWNUZXN0Ci0gICAgdmlydHVhbCBOU1VSTCAqdXJsKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIlBh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcyIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07IH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkTG9hZFVSTChXZWJWaWV3ICp3ZWJWaWV3KSBvdmVycmlkZSB7IHJ1blRlc3Qod2Vi
Vmlldyk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFVSTChXS1ZpZXcgKndrVmlldykgb3Zl
cnJpZGUgeyBydW5UZXN0KHdrVmlldyk7IH0KKyAgICBOU1VSTCAqdXJsKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIlBhZ2VW
aXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07IH0KKyAgICB2b2lkIGRpZExv
YWRVUkwoV2ViVmlldyAqd2ViVmlldykgb3ZlcnJpZGUgeyBydW5UZXN0KHdlYlZpZXcpOyB9Cisg
ICAgdm9pZCBkaWRMb2FkVVJMKFdLVmlldyAqd2tWaWV3KSBvdmVycmlkZSB7IHJ1blRlc3Qod2tW
aWV3KTsgfQogCiAgICAgLy8gU2V0dXAgYW5kIHRlYXJkb3duIHRoZSBVSURlbGVnYXRlIHdoaWNo
IGdldHMgYWxlcnQoKSBzaWduYWxzIGZyb20gdGhlIHBhZ2UuCi0gICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemVWaWV3KFdlYlZpZXcgKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemVWaWV3KFdLVmlldyAqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgdGVhcmRvd25W
aWV3KFdlYlZpZXcgKikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHRlYXJkb3duVmlldyhX
S1ZpZXcgKikgb3ZlcnJpZGU7CisgICAgdm9pZCBpbml0aWFsaXplVmlldyhXZWJWaWV3ICopIG92
ZXJyaWRlOworICAgIHZvaWQgaW5pdGlhbGl6ZVZpZXcoV0tWaWV3ICopIG92ZXJyaWRlOworICAg
IHZvaWQgdGVhcmRvd25WaWV3KFdlYlZpZXcgKikgb3ZlcnJpZGU7CisgICAgdm9pZCB0ZWFyZG93
blZpZXcoV0tWaWV3ICopIG92ZXJyaWRlOwogfTsKIAogdm9pZCBQYWdlVmlzaWJpbGl0eVN0YXRl
V2l0aFdpbmRvd0NoYW5nZXM6OmluaXRpYWxpemVWaWV3KFdlYlZpZXcgKndlYlZpZXcpCg==
</data>
<flag name="review"
          id="297590"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>