<?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>60256</bug_id>
          
          <creation_ts>2011-05-05 01:18:14 -0700</creation_ts>
          <short_desc>Web Inspector: rename BrowserDebugger to DOMDebugger</short_desc>
          <delta_ts>2011-05-05 22:27:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (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>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>398606</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-05 01:18:14 -0700</bug_when>
    <thetext>The protocol domain name was changed a few days ago.
It&apos;d be nice to change corresponding backend agent name accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398633</commentid>
    <comment_count>1</comment_count>
      <attachid>92393</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-05 02:13:15 -0700</bug_when>
    <thetext>Created attachment 92393
[patch] initial version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398657</commentid>
    <comment_count>2</comment_count>
      <attachid>92393</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-05-05 04:01:28 -0700</bug_when>
    <thetext>Comment on attachment 92393
[patch] initial version

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

Looks good except that DOMDebuggerAgent variables should become domDebuggerAgent

&gt; Source/WebCore/ChangeLog:9
&gt; +        browserDebugger =&gt; DOMDebugger

should be domDebugger, not DOMDebugger

&gt; Source/WebCore/inspector/CodeGeneratorInspector.pm:41
&gt; +    &quot;domainAccessor&quot; =&gt; &quot;m_DOMDebuggerAgent&quot;,

m_domDebuggerAgent

&gt; Source/WebCore/inspector/InspectorAgent.h:136
&gt; +    InspectorDOMDebuggerAgent* DOMDebuggerAgent() const { return m_DOMDebuggerAgent.get(); }

domDebuggerAgent (see domStorageAgent above)

&gt; Source/WebCore/inspector/InspectorAgent.h:223
&gt; +    OwnPtr&lt;InspectorDOMDebuggerAgent&gt; m_DOMDebuggerAgent;

ditto

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:147
&gt; +        DOMDebuggerAgent-&gt;willModifyDOMAttr(element);

DOMDebuggerAgent -&gt; domDebuggerAgent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>398658</commentid>
    <comment_count>3</comment_count>
      <attachid>92402</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-05 04:34:16 -0700</bug_when>
    <thetext>Created attachment 92402
[patch] second version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399329</commentid>
    <comment_count>4</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-05 22:27:28 -0700</bug_when>
    <thetext>manually landed as r85850</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92393</attachid>
            <date>2011-05-05 02:13:15 -0700</date>
            <delta_ts>2011-05-05 04:34:16 -0700</delta_ts>
            <desc>[patch] initial version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>70018</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDFhZmQ2NS4uNmViYTlhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg4NywxMiArODg3LDEyIEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAot
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVmOThkZS4uMTgwZjM4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDcxIEBACisyMDExLTA1LTA1ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgQnJvd3NlckRlYnVnZ2VyIHRvIERPTURlYnVn
Z2VyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDI1NgorICAgICAgICBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCA9PiBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50CisgICAgICAgIGJyb3dzZXJEZWJ1Z2dlciA9PiBET01EZWJ1Z2dlcgor
ICAgICAgICBCcm93c2VyRGVidWdnZXIgPT4gRE9NRGVidWdnZXIKKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5wbToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckFnZW50OjppbnNwZWN0ZWRQYWdlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckFnZW50OjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBZ2VudC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6OkRP
TURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJE
ZWJ1Z2dlckFnZW50LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyV2FzRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZWJ1Z2dl
cldhc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpkaXNjYXJkQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlk
SW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9k
aWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBhdXNlT25OYXRpdmVFdmVudElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNl
dFhIUkJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlWEhSQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmguCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlSW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGVJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZURPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBhdXNlT25OYXRp
dmVFdmVudElmTmVlZGVkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50
cy5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6SW5zdHJ1bWVudGlu
Z0FnZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjppbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnNldEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisKIDIwMTEtMDUtMDQgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI4NTc4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDgyNWRlNGQuLjJlOTA5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTkw
OSw4ICsxOTA5LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBcCi0JU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBcCi0JU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBcCkBAIC0xOTI5LDYgKzE5MjcsOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggXAogCVNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAyOTAxMTE0Li5kNDI4OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zMjE1LDggKzMyMTUsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBZ2Vu
dC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmgnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudC5jcHAnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAnLApAQCAtMzIyNSw2ICsz
MjIzLDggQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUluc3RydW1l
bnRhdGlvbi5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAnLAorICAg
ICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCcsCisgICAg
ICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCcsCiAgICAgICAg
ICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCcsCiAgICAgICAgICAgICAn
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpp
bmRleCBmMGJhYmJjLi4xNmNkMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtODA1LDcgKzgwNSw2IEBA
IFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIFwK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBcCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIFwKQEAgLTgxNCw2ICs4MTMsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgXAogICAg
IGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBcCisgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgXAogICAgIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBcCkBAIC0xNzQzLDcgKzE3
NDMsNiBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggXAotICAgIGluc3BlY3Rvci9JbnNwZWN0b3JC
cm93c2VyRGVidWdnZXJBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggXApAQCAtMTc1Miw2ICsxNzUx
LDcgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlSW5zdHJ1
bWVudGF0aW9uLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgg
XAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggXAorICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZS5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA3MmVkNzgx
Li4xNjk1NjM1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagpAQCAtNjYyNTgsMTQgKzY2MjU4LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgiCi0JCQkJPgot
CQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxJbnNw
ZWN0b3JDbGllbnQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTY2MzM4LDYgKzY2MzMwLDE0
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAiCiAJCQkJPgog
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGE3M2EzNTQuLjBmZGQyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU2NDMsOCArNTY0Myw4IEBA
CiAJCUYzQUJGRTBDMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0FCRkUwQjEzMEU5
REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oICovOyB9OwogCQlGM0Q0NjE0ODEx
NjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNENDYxNDYxMTYxRDUzMjAwQ0EwRDA5IC8qIEpT
RXJyb3JIYW5kbGVyLmNwcCAqLzsgfTsKIAkJRjNENDYxNDkxMTYxRDUzMjAwQ0EwRDA5IC8qIEpT
RXJyb3JIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGM0Q0NjE0NzExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLzsgfTsK
LQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYz
RDRDNDc2MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5j
cHAgKi87IH07Ci0JCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjNENEM0NzcxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50LmggKi87IH07CisJCUYzRDRDNDc4MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzRDRDNDc2MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcCAqLzsgfTsKKwkJRjNENEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEYzRDRDNDc3MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmggKi87IH07CiAJCUYzRjVDRjExMTJFRDgxQTgwMDg0QzU2OSAvKiBJbnNwZWN0b3JD
b25zb2xlSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGM0Y1Q0YxMDEyRUQ4MUE4MDA4NEM1NjkgLyogSW5zcGVjdG9yQ29uc29s
ZUluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQlGM0Y1Q0YxMzEyRUQ4MUIzMDA4NEM1NjkgLyog
SW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRjVDRjEyMTJFRDgxQjMwMDg0QzU2OSAvKiBJbnNw
ZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oICovOyB9OwogCQlGNEVBRjRBRTEwQzc0MkIx
MDA5MTAwRDMgLyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRFQUY0QUMxMEM3NDJCMTAwOTEwMEQzIC8qIE9wZW5U
eXBlU2FuaXRpemVyLmNwcCAqLzsgfTsKQEAgLTEyMTA5LDggKzEyMTA5LDggQEAKIAkJRjNBQkZF
MEIxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2VudHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zdHJ1bWVudGluZ0FnZW50cy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGM0Q0NjE0NjExNjFENTMyMDBDQTBEMDkgLyogSlNFcnJvckhhbmRs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFcnJvckhhbmRs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0Q0NjE0NzExNjFENTMyMDBD
QTBEMDkgLyogSlNFcnJvckhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFcnJvckhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjNENEM0
NzYxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjNENEM0NzcxMkUw
NzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzRDRDNDc2MTJFMDc2NjMwMDNEQTE1MCAv
KiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGM0Q0QzQ3NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRjVD
RjEwMTJFRDgxQTgwMDg0QzU2OSAvKiBJbnNwZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNvbnNvbGVJbnN0cnVt
ZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjNGNUNGMTIxMkVEODFC
MzAwODRDNTY5IC8qIEluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RUFGNEFDMTBDNzQyQjEwMDkxMDBE
MyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBPcGVuVHlwZVNhbml0aXplci5jcHA7IHBhdGggPSBvcGVudHlwZS9PcGVuVHlwZVNh
bml0aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzEzOCw4ICsxMzEz
OCw2IEBACiAJCQkJNEYyRDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50Lmgg
Ki8sCiAJCQkJQjg4NUU4RDIxMUUwNkREMjAwOUZGQkY0IC8qIEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudC5jcHAgKi8sCiAJCQkJQjg4NUU4RDMxMUUwNkREMjAwOUZGQkY0IC8qIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oICovLAotCQkJCUYzRDRDNDc2MTJFMDc2NjMwMDNE
QTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgKi8sCi0JCQkJRjNENEM0
NzcxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggKi8s
CiAJCQkJN0ExRjJCNTExMjZDNjFCMjAwMDZBN0U2IC8qIEluc3BlY3RvckNsaWVudC5jcHAgKi8s
CiAJCQkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovLAog
CQkJCUYzMzM1QkY2MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
ICovLApAQCAtMTMxNTgsNiArMTMxNTYsOCBAQAogCQkJCUYzM0YwNTNDMTIwQjBEQTUwMEU1NzQz
QSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggKi8sCiAJCQkJN0EyNDU4NzkxMDIxRUFGNDAw
MEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmNwcCAqLywKIAkJCQk3QTI0NTg3QTEwMjFFQUY0
MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCAqLywKKwkJCQlGM0Q0QzQ3NjEyRTA3NjYz
MDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgKi8sCisJCQkJRjNENEM0
NzcxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCAqLywKIAkJ
CQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cCAqLywKIAkJCQk3QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggKi8sCiAJCQkJNDFGMDYxNzMwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZS5jcHAgKi8sCkBAIC0yMTE1Myw3ICsyMTE1Myw2IEBACiAJCQkJNEYy
RDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCODg1RThENTExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNo
ZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjcwN0E5QTExRUY2Nzk0MDBBQ0RBNjkgLyog
SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUYzRDRDNDc5
MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjMzMzVCRjkxMkUwN0RDMzAwRDMzMDExIC8qIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNGNUNGMTExMkVEODFBODAw
ODRDNTY5IC8qIEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICov
LApAQCAtMjExNjQsNiArMjExNjMsNyBAQAogCQkJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzNGMDUz
RTEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0EyNDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E3NEVDQkIxMDE4MzlBNjAw
QkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDFGMDYxNzQwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzk0MSw3ICsyMzk0MSw2IEBA
CiAJCQkJNEYyRDIwNTUxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUI4ODVFOEQ0MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNEY3MDdBOTkxMUVGNjc5
NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUYzRDRDNDc4MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTFGMkI1MjEyNkM2MUIyMDAwNkE3RTYg
LyogSW5zcGVjdG9yQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzMzM1QkY4MTJFMDdE
QzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM4MUI5NUIwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0yMzk1MCw2ICsyMzk0OSw3IEBACiAJCQkJNDFGMDYyMTUwRjVGMTky
NjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjMzRjA1M0QxMjBCMERBNTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0EyNDU4N0IxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3Bl
Y3RvckRPTUFnZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzRDRDNDc4MTJFMDc2NjMwMDNE
QTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdBNzRFQ0JBMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGMDYxNzUwRjVGMDBBQzAwQTA3RUFDIC8qIEluc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjRGNUZGQjExQ0JE
MkUxMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29kZUdlbmVyYXRvckluc3BlY3Rvci5w
bSBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCmlu
ZGV4IDhlODRkZjIuLmVhYzBkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db2RlR2VuZXJhdG9ySW5zcGVjdG9yLnBtCkBAIC0zNiw5ICszNiw5IEBAICR0eXBlVHJhbnNm
b3JteyJEZWJ1Z2dlciJ9ID0gewogICAgICJkb21haW5BY2Nlc3NvciIgPT4gIm1fZGVidWdnZXJB
Z2VudCIsCiB9OwogJHR5cGVUcmFuc2Zvcm17IkRPTURlYnVnZ2VyIn0gPSB7Ci0gICAgImZvcndh
cmQiID0+ICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCIsCi0gICAgImhlYWRlciIgPT4g
Ikluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgiLAotICAgICJkb21haW5BY2Nlc3NvciIg
PT4gIm1fYnJvd3NlckRlYnVnZ2VyQWdlbnQiLAorICAgICJmb3J3YXJkIiA9PiAiSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCIsCisgICAgImhlYWRlciIgPT4gIkluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaCIsCisgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9ET01EZWJ1Z2dlckFnZW50IiwK
IH07CiAkdHlwZVRyYW5zZm9ybXsiRGF0YWJhc2UifSA9IHsKICAgICAiZm9yd2FyZCIgPT4gIklu
c3BlY3RvckRhdGFiYXNlQWdlbnQiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBZ2VudC5jcHAKaW5kZXggMDk0MWFiNy4uMmVlZThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5j
bHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKQEAgLTEzMSw3ICsxMzEs
NyBAQCBJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQoUGFnZSogcGFnZSwgSW5zcGVjdG9y
Q2xpZW50KiBjbGllbnQsIEluamVjdGVkU2NyaQogICAgICwgbV9jb25zb2xlQWdlbnQoYWRvcHRQ
dHIobmV3IEluc3BlY3RvckNvbnNvbGVBZ2VudChtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCks
IHRoaXMsIG1fc3RhdGUuZ2V0KCksIGluamVjdGVkU2NyaXB0TWFuYWdlciwgbV9kb21BZ2VudC5n
ZXQoKSkpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgICwgbV9kZWJ1Z2dl
ckFnZW50KFBhZ2VEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCBtX3N0YXRlLmdldCgpLCBwYWdlLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKQotICAgICwg
bV9icm93c2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6Y3Jl
YXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9zdGF0ZS5nZXQoKSwgbV9kb21BZ2Vu
dC5nZXQoKSwgbV9kZWJ1Z2dlckFnZW50LmdldCgpLCB0aGlzKSkKKyAgICAsIG1fRE9NRGVidWdn
ZXJBZ2VudChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5n
QWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2RvbUFnZW50LmdldCgpLCBtX2RlYnVnZ2Vy
QWdlbnQuZ2V0KCksIHRoaXMpKQogICAgICwgbV9wcm9maWxlckFnZW50KEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fY29uc29sZUFn
ZW50LmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpKSkKICNlbmRpZgogI2lmIEVOQUJMRShXT1JL
RVJTKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFBh
Z2VEZXN0cm95ZWQoKQogICAgIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQot
ICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQuY2xlYXIoKTsKKyAgICBtX0RPTURlYnVnZ2VyQWdl
bnQuY2xlYXIoKTsKICAgICBtX2RlYnVnZ2VyQWdlbnQuY2xlYXIoKTsKICNlbmRpZgogCkBAIC0y
ODAsNyArMjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6ZGlzY29ubmVjdEZyb250ZW5kKCkK
IAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIG1fZGVidWdnZXJBZ2VudC0+
Y2xlYXJGcm9udGVuZCgpOwotICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQtPmNsZWFyRnJvbnRl
bmQoKTsKKyAgICBtX0RPTURlYnVnZ2VyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX3By
b2ZpbGVyQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCmluZGV4IDU1YmNiNWEuLjAyNWVkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oCkBAIC01MCw3ICs1MCw3IEBAIGNs
YXNzIEhUVFBIZWFkZXJNYXA7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVk
U2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFycmF5OwotY2xhc3MgSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yQ1NTQWdlbnQ7CkBAIC0xMzMsNyArMTMzLDcgQEAgcHVibGljOgogICAgIEluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudCogZG9tU3RvcmFnZUFnZW50KCkgeyByZXR1cm4gbV9kb21TdG9y
YWdlQWdlbnQuZ2V0KCk7IH0KICNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQotICAgIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVidWdnZXJBZ2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQuZ2V0KCk7IH0KKyAgICBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBET01EZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1
cm4gbV9ET01EZWJ1Z2dlckFnZW50LmdldCgpOyB9CiAgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudC5nZXQoKTsg
fQogICAgIEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIHByb2ZpbGVyQWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX3Byb2ZpbGVyQWdlbnQuZ2V0KCk7IH0KICNlbmRpZgpAQCAtMjIwLDcgKzIyMCw3IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1faW5zcGVjdG9yRXh0ZW5zaW9uQVBJOwogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIE93blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
PiBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50PiBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50OworICAgIE93blB0cjxJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50PiBtX0RPTURlYnVnZ2VyQWdlbnQ7CiAgICAgT3duUHRyPEluc3BlY3RvclByb2Zp
bGVyQWdlbnQ+IG1fcHJvZmlsZXJBZ2VudDsKICNlbmRpZgogI2lmIEVOQUJMRShXT1JLRVJTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZjJhMjUu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJE
ZWJ1Z2dlckFnZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4OCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIK
LQotI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQot
Ci0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JBZ2VudC5oIgot
I2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+Ci0KLW5hbWVzcGFjZSB7Ci0KLWVudW0gRE9N
QnJlYWtwb2ludFR5cGUgewotICAgIFN1YnRyZWVNb2RpZmllZCA9IDAsCi0gICAgQXR0cmlidXRl
TW9kaWZpZWQsCi0gICAgTm9kZVJlbW92ZWQsCi0gICAgRE9NQnJlYWtwb2ludFR5cGVzQ291bnQK
LX07Ci0KLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBkb21OYXRpdmVCcmVha3BvaW50VHlwZSA9
ICJET00iOwotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV2ZW50TGlzdGVuZXJOYXRpdmVCcmVh
a3BvaW50VHlwZSA9ICJFdmVudExpc3RlbmVyIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB4
aHJOYXRpdmVCcmVha3BvaW50VHlwZSA9ICJYSFIiOwotCi1jb25zdCB1aW50MzJfdCBpbmhlcml0
YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2sgPSAoMSA8PCBTdWJ0cmVlTW9kaWZpZWQpOwotY29u
c3QgaW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0gMTY7Ci0KLX0KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZSB7Ci1z
dGF0aWMgY29uc3QgY2hhciBldmVudExpc3RlbmVyQnJlYWtwb2ludHNbXSA9ICJldmVudExpc3Rl
bmVyQnJlYWtwb2ludHMiOwotc3RhdGljIGNvbnN0IGNoYXIgcGF1c2VPbkFsbFhIUnNbXSA9ICJw
YXVzZU9uQWxsWEhScyI7Ci1zdGF0aWMgY29uc3QgY2hhciB4aHJCcmVha3BvaW50c1tdID0gInho
ckJyZWFrcG9pbnRzIjsKLX0KLQotUGFzc093blB0cjxJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudD4gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3Rh
dGUsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
ZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQotewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVu
dGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGRvbUFnZW50LCBkZWJ1Z2dlckFnZW50LCBpbnNw
ZWN0b3JBZ2VudCkpOwotfQotCi1JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6SW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbnNwZWN0b3JET01BZ2Vu
dCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQsIEluc3Bl
Y3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCkKLSAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhp
bnN0cnVtZW50aW5nQWdlbnRzKQotICAgICwgbV9pbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JTdGF0
ZSkKLSAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCi0gICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVi
dWdnZXJBZ2VudCkKLSAgICAsIG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCi17Ci0g
ICAgbV9kZWJ1Z2dlckFnZW50LT5zZXRMaXN0ZW5lcih0aGlzKTsKLX0KLQotSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpCi17Ci0g
ICAgbV9kZWJ1Z2dlckFnZW50LT5zZXRMaXN0ZW5lcigwKTsKLSAgICBBU1NFUlQoIW1faW5zdHJ1
bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoKSk7Ci19Ci0KLS8v
IEJyb3dzZXIgZGVidWdnZXIgYWdlbnQgZW5hYmxlZCBvbmx5IHdoZW4gSlMgZGVidWdnZXIgaXMg
ZW5hYmxlZC4KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyV2Fz
RW5hYmxlZCgpCi17Ci0gICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudCh0aGlzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudDo6ZGVidWdnZXJXYXNEaXNhYmxlZCgpCi17Ci0gICAgZGlzYWJsZSgpOwotfQotCi12
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKLXsKLSAgICBtX2lu
c3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KDApOwot
ICAgIGNsZWFyKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQoKQotewotICAgIGRpc2FibGUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6ZGlzY2FyZEJpbmRpbmdzKCkKLXsKLSAgICBtX2RvbUJyZWFrcG9p
bnRzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNl
dEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5n
JiBldmVudE5hbWUpCi17Ci0gICAgaWYgKGV2ZW50TmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
KmVycm9yID0gIkV2ZW50IG5hbWUgaXMgZW1wdHkiOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzID0g
bV9pbnNwZWN0b3JTdGF0ZS0+Z2V0T2JqZWN0KEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OmV2
ZW50TGlzdGVuZXJCcmVha3BvaW50cyk7Ci0gICAgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLT5z
ZXRCb29sZWFuKGV2ZW50TmFtZSwgdHJ1ZSk7Ci0gICAgbV9pbnNwZWN0b3JTdGF0ZS0+c2V0T2Jq
ZWN0KEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OmV2ZW50TGlzdGVuZXJCcmVha3BvaW50cywg
ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVy
cm9yLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKLXsKLSAgICBpZiAoZXZlbnROYW1lLmlzRW1w
dHkoKSkgewotICAgICAgICAqZXJyb3IgPSAiRXZlbnQgbmFtZSBpcyBlbXB0eSI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudExpc3Rl
bmVyQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvclN0YXRlLT5nZXRPYmplY3QoQnJvd3NlckRlYnVn
Z2VyQWdlbnRTdGF0ZTo6ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKTsKLSAgICBldmVudExpc3Rl
bmVyQnJlYWtwb2ludHMtPnJlbW92ZShldmVudE5hbWUpOwotICAgIG1faW5zcGVjdG9yU3RhdGUt
PnNldE9iamVjdChCcm93c2VyRGVidWdnZXJBZ2VudFN0YXRlOjpldmVudExpc3RlbmVyQnJlYWtw
b2ludHMsIGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBp
ZiAobV9kb21CcmVha3BvaW50cy5zaXplKCkpIHsKLSAgICAgICAgdWludDMyX3QgbWFzayA9IG1f
ZG9tQnJlYWtwb2ludHMuZ2V0KEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUobm9k
ZSkpOwotICAgICAgICB1aW50MzJfdCBpbmhlcml0YWJsZVR5cGVzTWFzayA9IChtYXNrIHwgKG1h
c2sgPj4gZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpKSAmIGluaGVyaXRhYmxlRE9NQnJl
YWtwb2ludFR5cGVzTWFzazsKLSAgICAgICAgaWYgKGluaGVyaXRhYmxlVHlwZXNNYXNrKQotICAg
ICAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKG5vZGUsIGluaGVyaXRhYmxlVHlwZXNN
YXNrLCB0cnVlKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9kb21CcmVha3Bv
aW50cy5zaXplKCkpIHsKLSAgICAgICAgLy8gUmVtb3ZlIHN1YnRyZWUgYnJlYWtwb2ludHMuCi0g
ICAgICAgIG1fZG9tQnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwotICAgICAgICBWZWN0b3I8Tm9k
ZSo+IHN0YWNrKDEsIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSkpOwot
ICAgICAgICBkbyB7Ci0gICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOwotICAg
ICAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1v
dmUobm9kZSk7Ci0gICAgICAgICAgICBzdGFjay5hcHBlbmQoSW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVyRmlyc3RDaGlsZChub2RlKSk7Ci0gICAgICAgICAgICBzdGFjay5hcHBlbmQoSW5zcGVjdG9y
RE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcobm9kZSkpOwotICAgICAgICB9IHdoaWxlICghc3Rh
Y2suaXNFbXB0eSgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdHlw
ZSkKLXsKLSAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7Ci0g
ICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1aW50MzJfdCByb290Qml0ID0g
MSA8PCB0eXBlOwotICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0KG5vZGUsIG1fZG9tQnJlYWtwb2lu
dHMuZ2V0KG5vZGUpIHwgcm9vdEJpdCk7Ci0gICAgaWYgKHJvb3RCaXQgJiBpbmhlcml0YWJsZURP
TUJyZWFrcG9pbnRUeXBlc01hc2spIHsKLSAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKLSAgICAgICAgICAgIHVwZGF0
ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwgdHJ1ZSk7Ci0gICAgfQotfQotCi12
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHR5cGUpCi17Ci0gICAgTm9kZSogbm9kZSA9IG1f
ZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgdWludDMyX3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKLSAgICB1aW50MzJfdCBt
YXNrID0gbV9kb21CcmVha3BvaW50cy5nZXQobm9kZSkgJiB+cm9vdEJpdDsKLSAgICBpZiAobWFz
aykKLSAgICAgICAgbV9kb21CcmVha3BvaW50cy5zZXQobm9kZSwgbWFzayk7Ci0gICAgZWxzZQot
ICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKLQotICAgIGlmICgocm9vdEJp
dCAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgJiYgIShtYXNrICYgKHJvb3RC
aXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQpKSkgewotICAgICAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hp
bGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQot
ICAgICAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCByb290Qml0LCBmYWxz
ZSk7Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxs
SW5zZXJ0RE9NTm9kZShOb2RlKiwgTm9kZSogcGFyZW50KQotewotICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgaWYgKCFkZWJ1
Z2dlckFnZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoaGFzQnJlYWtwb2ludChwYXJl
bnQsIFN1YnRyZWVNb2RpZmllZCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGVzY3JpcHRp
b25Gb3JET01FdmVudChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCwgdHJ1ZSwgZXZlbnREYXRhLmdl
dCgpKTsKLSAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgZG9t
TmF0aXZlQnJlYWtwb2ludFR5cGUpOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dy
YW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgp
KTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OndpbGxS
ZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
ZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKLSAgICBpZiAoIWRlYnVnZ2VyQWdlbnQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIE5vZGUqIHBhcmVudE5vZGUgPSBJbnNwZWN0b3JET01B
Z2VudDo6aW5uZXJQYXJlbnROb2RlKG5vZGUpOwotICAgIGlmIChoYXNCcmVha3BvaW50KG5vZGUs
IE5vZGVSZW1vdmVkKSkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERh
dGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlvbkZvckRP
TUV2ZW50KG5vZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAg
ICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgZG9tTmF0aXZlQnJlYWtw
b2ludFR5cGUpOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJl
YWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgpKTsKLSAgICB9IGVs
c2UgaWYgKHBhcmVudE5vZGUgJiYgaGFzQnJlYWtwb2ludChwYXJlbnROb2RlLCBTdWJ0cmVlTW9k
aWZpZWQpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
bm9kZSwgU3VidHJlZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAgICAg
ZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgZG9tTmF0aXZlQnJlYWtwb2lu
dFR5cGUpOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtw
b2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgpKTsKLSAgICB9Ci19Ci0K
LXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKEVs
ZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IG1fZGVidWdnZXJBZ2VudDsKLSAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChoYXNCcmVha3BvaW50KGVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlm
aWVkKSkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNw
ZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KGVs
ZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKLSAgICAg
ICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgZG9tTmF0aXZlQnJlYWtw
b2ludFR5cGUpOwotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJl
YWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgpKTsKLSAgICB9Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9N
RXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJ
bnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKQotewotICAgIEFTU0VSVChoYXNCcmVha3BvaW50
KHRhcmdldCwgYnJlYWtwb2ludFR5cGUpKTsKLQotICAgIE5vZGUqIGJyZWFrcG9pbnRPd25lciA9
IHRhcmdldDsKLSAgICBpZiAoKDEgPDwgYnJlYWtwb2ludFR5cGUpICYgaW5oZXJpdGFibGVET01C
cmVha3BvaW50VHlwZXNNYXNrKSB7Ci0gICAgICAgIC8vIEZvciBpbmhlcml0YWJsZSBicmVha3Bv
aW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24ndCBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIG5vZGUg
dGhhdCBvd25zIGEgYnJlYWtwb2ludC4KLSAgICAgICAgLy8gVGFyZ2V0IG5vZGUgbWF5IGJlIHVu
a25vd24gdG8gZnJvbnRlbmQsIHNvIHdlIG5lZWQgdG8gcHVzaCBpdCBmaXJzdC4KLSAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1fZG9tQWdlbnQtPnJl
c29sdmVOb2RlKHRhcmdldCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uLT5zZXRPYmplY3QoInRhcmdl
dE5vZGUiLCB0YXJnZXROb2RlT2JqZWN0KTsKLQotICAgICAgICAvLyBGaW5kIGJyZWFrcG9pbnQg
b3duZXIgbm9kZS4KLSAgICAgICAgaWYgKCFpbnNlcnRpb24pCi0gICAgICAgICAgICBicmVha3Bv
aW50T3duZXIgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKHRhcmdldCk7Ci0g
ICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXIpOwotICAgICAgICB3aGlsZSAoIShtX2RvbUJy
ZWFrcG9pbnRzLmdldChicmVha3BvaW50T3duZXIpICYgKDEgPDwgYnJlYWtwb2ludFR5cGUpKSkg
ewotICAgICAgICAgICAgYnJlYWtwb2ludE93bmVyID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVy
UGFyZW50Tm9kZShicmVha3BvaW50T3duZXIpOwotICAgICAgICAgICAgQVNTRVJUKGJyZWFrcG9p
bnRPd25lcik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYnJlYWtwb2ludFR5cGUgPT0gU3Vi
dHJlZU1vZGlmaWVkKQotICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJvb2xlYW4oImluc2Vy
dGlvbiIsIGluc2VydGlvbik7Ci0gICAgfQotCi0gICAgaW50IGJyZWFrcG9pbnRPd25lck5vZGVJ
ZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGJyZWFrcG9pbnRPd25lcik7Ci0gICAgQVNTRVJU
KGJyZWFrcG9pbnRPd25lck5vZGVJZCk7Ci0gICAgZGVzY3JpcHRpb24tPnNldE51bWJlcigibm9k
ZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICBkZXNjcmlwdGlvbi0+c2V0TnVtYmVy
KCJ0eXBlIiwgYnJlYWtwb2ludFR5cGUpOwotfQotCi1ib29sIEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50OjpoYXNCcmVha3BvaW50KE5vZGUqIG5vZGUsIGludCB0eXBlKQotewotICAgIHVp
bnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5cGU7Ci0gICAgdWludDMyX3QgZGVyaXZlZEJpdCA9IHJv
b3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7Ci0gICAgcmV0dXJuIG1fZG9t
QnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgKHJvb3RCaXQgfCBkZXJpdmVkQml0KTsKLX0KLQotdm9p
ZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRz
KE5vZGUqIG5vZGUsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCkKLXsKLSAgICB1aW50MzJf
dCBvbGRNYXNrID0gbV9kb21CcmVha3BvaW50cy5nZXQobm9kZSk7Ci0gICAgdWludDMyX3QgZGVy
aXZlZE1hc2sgPSByb290TWFzayA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKLSAg
ICB1aW50MzJfdCBuZXdNYXNrID0gc2V0ID8gb2xkTWFzayB8IGRlcml2ZWRNYXNrIDogb2xkTWFz
ayAmIH5kZXJpdmVkTWFzazsKLSAgICBpZiAobmV3TWFzaykKLSAgICAgICAgbV9kb21CcmVha3Bv
aW50cy5zZXQobm9kZSwgbmV3TWFzayk7Ci0gICAgZWxzZQotICAgICAgICBtX2RvbUJyZWFrcG9p
bnRzLnJlbW92ZShub2RlKTsKLQotICAgIHVpbnQzMl90IG5ld1Jvb3RNYXNrID0gcm9vdE1hc2sg
JiB+bmV3TWFzazsKLSAgICBpZiAoIW5ld1Jvb3RNYXNrKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChu
b2RlKTsgY2hpbGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmco
Y2hpbGQpKQotICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIG5ld1Jvb3RN
YXNrLCBzZXQpOwotfQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpwYXVz
ZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChjb25zdCBTdHJpbmcmIGNhdGVnb3J5VHlwZSwgY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpCi17Ci0gICAgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKLSAgICBpZiAoIWRl
YnVnZ2VyQWdlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBmdWxsRXZlbnROYW1l
ID0gbWFrZVN0cmluZyhjYXRlZ29yeVR5cGUsICI6IiwgZXZlbnROYW1lKTsKLSAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBldmVudExpc3RlbmVyQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvclN0
YXRlLT5nZXRPYmplY3QoQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZTo6ZXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnRzKTsKLSAgICBpZiAoZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLT5maW5kKGZ1bGxF
dmVudE5hbWUpID09IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cy0+ZW5kKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRU
eXBlIiwgZXZlbnRMaXN0ZW5lck5hdGl2ZUJyZWFrcG9pbnRUeXBlKTsKLSAgICBldmVudERhdGEt
PnNldFN0cmluZygiZXZlbnROYW1lIiwgZnVsbEV2ZW50TmFtZSk7Ci0gICAgaWYgKHN5bmNocm9u
b3VzKQotICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2lu
dERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgpKTsKLSAgICBlbHNlCi0gICAg
ICAgIGRlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoTmF0aXZlQnJl
YWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVsZWFzZSgpKTsKLX0KLQotdm9p
ZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIG1faW5zcGVjdG9yU3RhdGUtPnNldEJvb2xlYW4oQnJvd3NlckRlYnVnZ2VyQWdlbnRT
dGF0ZTo6cGF1c2VPbkFsbFhIUnMsIHRydWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4geGhyQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvclN0
YXRlLT5nZXRPYmplY3QoQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZTo6eGhyQnJlYWtwb2ludHMp
OwotICAgIHhockJyZWFrcG9pbnRzLT5zZXRCb29sZWFuKHVybCwgdHJ1ZSk7Ci0gICAgbV9pbnNw
ZWN0b3JTdGF0ZS0+c2V0T2JqZWN0KEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OnhockJyZWFr
cG9pbnRzLCB4aHJCcmVha3BvaW50cyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQ6OnJlbW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHVybCkKLXsKLSAgICBpZiAodXJsLmlzRW1wdHkoKSkgewotICAgICAgICBtX2luc3BlY3RvclN0
YXRlLT5zZXRCb29sZWFuKEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OnBhdXNlT25BbGxYSFJz
LCBmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiB4aHJCcmVha3BvaW50cyA9IG1faW5zcGVjdG9yU3RhdGUtPmdldE9iamVjdChCcm93
c2VyRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVha3BvaW50cyk7Ci0gICAgeGhyQnJlYWtwb2lu
dHMtPnJlbW92ZSh1cmwpOwotICAgIG1faW5zcGVjdG9yU3RhdGUtPnNldE9iamVjdChCcm93c2Vy
RGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVha3BvaW50cywgeGhyQnJlYWtwb2ludHMpOwotfQot
Ci12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1
ZXN0KGNvbnN0IFN0cmluZyYgdXJsKQotewotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQgPSBtX2RlYnVnZ2VyQWdlbnQ7Ci0gICAgaWYgKCFkZWJ1Z2dlckFnZW50KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgYnJlYWtwb2ludFVSTDsKLSAgICBpZiAobV9p
bnNwZWN0b3JTdGF0ZS0+Z2V0Qm9vbGVhbihCcm93c2VyRGVidWdnZXJBZ2VudFN0YXRlOjpwYXVz
ZU9uQWxsWEhScykpCi0gICAgICAgIGJyZWFrcG9pbnRVUkwgPSAiIjsKLSAgICBlbHNlIHsKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4geGhyQnJlYWtwb2ludHMgPSBtX2luc3BlY3Rv
clN0YXRlLT5nZXRPYmplY3QoQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZTo6eGhyQnJlYWtwb2lu
dHMpOwotICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSB4aHJCcmVh
a3BvaW50cy0+YmVnaW4oKTsgaXQgIT0geGhyQnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7Ci0g
ICAgICAgICAgICBpZiAodXJsLmNvbnRhaW5zKGl0LT5maXJzdCkpIHsKLSAgICAgICAgICAgICAg
ICBicmVha3BvaW50VVJMID0gaXQtPmZpcnN0OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGJyZWFrcG9pbnRVUkwuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2
ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZXZlbnREYXRhLT5zZXRT
dHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgeGhyTmF0aXZlQnJlYWtwb2ludFR5cGUpOwotICAgIGV2
ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7Ci0gICAg
ZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhLnJl
bGVhc2UoKSk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmNsZWFy
KCkKLXsKLSAgICBtX2RvbUJyZWFrcG9pbnRzLmNsZWFyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYWRkMGMwNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudF9oCi0jZGVmaW5lIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50X2gKLQotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEluc3Bl
Y3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7Ci1jbGFzcyBJbnNwZWN0b3JPYmpl
Y3Q7Ci1jbGFzcyBJbnNwZWN0b3JTdGF0ZTsKLWNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1j
bGFzcyBOb2RlOwotCi10eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKLQotY2xhc3MgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
TGlzdGVuZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50KTsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCosIEluc3Bl
Y3RvckFnZW50Kik7Ci0KLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dCgpOwotCi0gICAgdm9pZCBjbGVhckZyb250ZW5kKCk7Ci0KLSAgICAvLyBCcm93c2VyRGVidWdn
ZXIgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAotICAgIHZvaWQgc2V0WEhSQnJlYWtwb2ludChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHJlbW92ZVhIUkJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBzZXRFdmVu
dExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXZlbnROYW1l
KTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBldmVudE5hbWUpOwotICAgIHZvaWQgc2V0RE9NQnJlYWtwb2ludChFcnJv
clN0cmluZyosIGludCBub2RlSWQsIGludCB0eXBlKTsKLSAgICB2b2lkIHJlbW92ZURPTUJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdHlwZSk7Ci0KLSAgICAvLyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCi0gICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2Rl
KiwgTm9kZSogcGFyZW50KTsKLSAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSopOwotICAg
IHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9k
ZShOb2RlKik7Ci0gICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7Ci0gICAgdm9p
ZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIHBh
dXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBlLCBjb25z
dCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7Ci0KLXByaXZhdGU6Ci0gICAg
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Kiwg
SW5zcGVjdG9yQWdlbnQqKTsKLQotICAgIC8vIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3Rl
bmVyIGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQo
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpOwotICAgIHZvaWQgZGlz
YWJsZSgpOwotCi0gICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwg
aW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0KiBkZXNj
cmlwdGlvbik7Ci0gICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSosIHVpbnQz
Ml90IHJvb3RNYXNrLCBib29sIHNldCk7Ci0gICAgYm9vbCBoYXNCcmVha3BvaW50KE5vZGUqLCBp
bnQgdHlwZSk7Ci0gICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKLQotICAgIHZvaWQgY2xlYXIo
KTsKLQotICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKLSAg
ICBJbnNwZWN0b3JTdGF0ZSogbV9pbnNwZWN0b3JTdGF0ZTsKLSAgICBJbnNwZWN0b3JET01BZ2Vu
dCogbV9kb21BZ2VudDsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdl
bnQ7Ci0gICAgSW5zcGVjdG9yQWdlbnQqIG1faW5zcGVjdG9yQWdlbnQ7Ci0gICAgSGFzaE1hcDxO
b2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxF
KElOU1BFQ1RPUikKLQotI2VuZGlmIC8vICFkZWZpbmVkKEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggNWMzN2IyNi4uZmMyZDBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzksNyArMzksNiBAQAogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuaCIKLSNpbmNsdWRlICJJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JET01BZ2VudC5oIgpAQCAtMTIzLDcgKzEyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+Y29uc29s
ZUFnZW50KCksCiAgICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmRvbUFnZW50KCksCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPmJyb3dz
ZXJEZWJ1Z2dlckFnZW50KCksCisgICAgICAgIG1faW5zcGVjdG9yQWdlbnQtPkRPTURlYnVnZ2Vy
QWdlbnQoKSwKICNlbmRpZgogI2lmIEVOQUJMRShET01fU1RPUkFHRSkKICAgICAgICAgbV9pbnNw
ZWN0b3JBZ2VudC0+ZG9tU3RvcmFnZUFnZW50KCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uYzNlNmE5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtMCwwICsx
LDM4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQorCisjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlLmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmg+CisKK25hbWVzcGFjZSB7
CisKK2VudW0gRE9NQnJlYWtwb2ludFR5cGUgeworICAgIFN1YnRyZWVNb2RpZmllZCA9IDAsCisg
ICAgQXR0cmlidXRlTW9kaWZpZWQsCisgICAgTm9kZVJlbW92ZWQsCisgICAgRE9NQnJlYWtwb2lu
dFR5cGVzQ291bnQKK307CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBkb21OYXRpdmVCcmVh
a3BvaW50VHlwZSA9ICJET00iOworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGV2ZW50TGlzdGVu
ZXJOYXRpdmVCcmVha3BvaW50VHlwZSA9ICJFdmVudExpc3RlbmVyIjsKK3N0YXRpYyBjb25zdCBj
aGFyKiBjb25zdCB4aHJOYXRpdmVCcmVha3BvaW50VHlwZSA9ICJYSFIiOworCitjb25zdCB1aW50
MzJfdCBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2sgPSAoMSA8PCBTdWJ0cmVlTW9k
aWZpZWQpOworY29uc3QgaW50IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0ID0gMTY7CisK
K30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgRE9NRGVidWdnZXJBZ2VudFN0
YXRlIHsKK3N0YXRpYyBjb25zdCBjaGFyIGV2ZW50TGlzdGVuZXJCcmVha3BvaW50c1tdID0gImV2
ZW50TGlzdGVuZXJCcmVha3BvaW50cyI7CitzdGF0aWMgY29uc3QgY2hhciBwYXVzZU9uQWxsWEhS
c1tdID0gInBhdXNlT25BbGxYSFJzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHhockJyZWFrcG9pbnRz
W10gPSAieGhyQnJlYWtwb2ludHMiOworfQorCitQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ+IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3Rh
dGUsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
ZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQoreworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5n
QWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgZG9tQWdlbnQsIGRlYnVnZ2VyQWdlbnQsIGluc3BlY3Rv
ckFnZW50KSk7Cit9CisKK0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5z
cGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQs
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQsIEluc3BlY3RvckFnZW50KiBp
bnNwZWN0b3JBZ2VudCkKKyAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5n
QWdlbnRzKQorICAgICwgbV9pbnNwZWN0b3JTdGF0ZShpbnNwZWN0b3JTdGF0ZSkKKyAgICAsIG1f
ZG9tQWdlbnQoZG9tQWdlbnQpCisgICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2VudCkK
KyAgICAsIG1faW5zcGVjdG9yQWdlbnQoaW5zcGVjdG9yQWdlbnQpCit7CisgICAgbV9kZWJ1Z2dl
ckFnZW50LT5zZXRMaXN0ZW5lcih0aGlzKTsKK30KKworSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6fkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKQoreworICAgIG1fZGVidWdnZXJBZ2VudC0+
c2V0TGlzdGVuZXIoMCk7CisgICAgQVNTRVJUKCFtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQoKSk7Cit9CisKKy8vIEJyb3dzZXIgZGVidWdnZXIgYWdlbnQg
ZW5hYmxlZCBvbmx5IHdoZW4gSlMgZGVidWdnZXIgaXMgZW5hYmxlZC4KK3ZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJXYXNFbmFibGVkKCkKK3sKKyAgICBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQodGhpcyk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJXYXNEaXNhYmxlZCgpCit7Cisg
ICAgZGlzYWJsZSgpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2Fi
bGUoKQoreworICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgwKTsKKyAgICBjbGVhcigpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQoreworICAgIGRpc2FibGUoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQoreworICAgIG1fZG9tQnJl
YWtwb2ludHMuY2xlYXIoKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpz
ZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgZXZlbnROYW1lKQoreworICAgIGlmIChldmVudE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAg
ICplcnJvciA9ICJFdmVudCBuYW1lIGlzIGVtcHR5IjsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyA9
IG1faW5zcGVjdG9yU3RhdGUtPmdldE9iamVjdChET01EZWJ1Z2dlckFnZW50U3RhdGU6OmV2ZW50
TGlzdGVuZXJCcmVha3BvaW50cyk7CisgICAgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLT5zZXRC
b29sZWFuKGV2ZW50TmFtZSwgdHJ1ZSk7CisgICAgbV9pbnNwZWN0b3JTdGF0ZS0+c2V0T2JqZWN0
KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLCBldmVudExp
c3RlbmVyQnJlYWtwb2ludHMpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3Qg
U3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgaWYgKGV2ZW50TmFtZS5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgKmVycm9yID0gIkV2ZW50IG5hbWUgaXMgZW1wdHkiOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnRzID0gbV9pbnNwZWN0b3JTdGF0ZS0+Z2V0T2JqZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6
ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKTsKKyAgICBldmVudExpc3RlbmVyQnJlYWtwb2ludHMt
PnJlbW92ZShldmVudE5hbWUpOworICAgIG1faW5zcGVjdG9yU3RhdGUtPnNldE9iamVjdChET01E
ZWJ1Z2dlckFnZW50U3RhdGU6OmV2ZW50TGlzdGVuZXJCcmVha3BvaW50cywgZXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnRzKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRJ
bnNlcnRET01Ob2RlKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKG1fZG9tQnJlYWtwb2ludHMuc2l6
ZSgpKSB7CisgICAgICAgIHVpbnQzMl90IG1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChJbnNw
ZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKG5vZGUpKTsKKyAgICAgICAgdWludDMyX3Qg
aW5oZXJpdGFibGVUeXBlc01hc2sgPSAobWFzayB8IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJp
dmVkVHlwZVNoaWZ0KSkgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2s7CisgICAg
ICAgIGlmIChpbmhlcml0YWJsZVR5cGVzTWFzaykKKyAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVC
cmVha3BvaW50cyhub2RlLCBpbmhlcml0YWJsZVR5cGVzTWFzaywgdHJ1ZSk7CisgICAgfQorfQor
Cit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSog
bm9kZSkKK3sKKyAgICBpZiAobV9kb21CcmVha3BvaW50cy5zaXplKCkpIHsKKyAgICAgICAgLy8g
UmVtb3ZlIHN1YnRyZWUgYnJlYWtwb2ludHMuCisgICAgICAgIG1fZG9tQnJlYWtwb2ludHMucmVt
b3ZlKG5vZGUpOworICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIEluc3BlY3RvckRPTUFn
ZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSkpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBO
b2RlKiBub2RlID0gc3RhY2subGFzdCgpOworICAgICAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgp
OworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICBzdGFj
ay5hcHBlbmQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAg
ICAgICAgICBzdGFjay5hcHBlbmQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmco
bm9kZSkpOworICAgICAgICB9IHdoaWxlICghc3RhY2suaXNFbXB0eSgpKTsKKyAgICB9Cit9CisK
K3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGludCB0eXBlKQoreworICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFn
ZW50LT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsK
KworICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5cGU7CisgICAgbV9kb21CcmVha3BvaW50
cy5zZXQobm9kZSwgbV9kb21CcmVha3BvaW50cy5nZXQobm9kZSkgfCByb290Qml0KTsKKyAgICBp
ZiAocm9vdEJpdCAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgeworICAgICAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChu
b2RlKTsgY2hpbGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmco
Y2hpbGQpKQorICAgICAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCByb290
Qml0LCB0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
cmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGludCB0eXBlKQor
eworICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8
IHR5cGU7CisgICAgdWludDMyX3QgbWFzayA9IG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpICYg
fnJvb3RCaXQ7CisgICAgaWYgKG1hc2spCisgICAgICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0KG5v
ZGUsIG1hc2spOworICAgIGVsc2UKKyAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9k
ZSk7CisKKyAgICBpZiAoKHJvb3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01h
c2spICYmICEobWFzayAmIChyb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0
KSkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5l
ckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5l
ck5leHRTaWJsaW5nKGNoaWxkKSkKKyAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50
cyhjaGlsZCwgcm9vdEJpdCwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50Ojp3aWxsSW5zZXJ0RE9NTm9kZShOb2RlKiwgTm9kZSogcGFyZW50KQorewor
ICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2RlYnVnZ2VyQWdl
bnQ7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
aGFzQnJlYWtwb2ludChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
KyAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCwg
dHJ1ZSwgZXZlbnREYXRhLmdldCgpKTsKKyAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJy
ZWFrcG9pbnRUeXBlIiwgZG9tTmF0aXZlQnJlYWtwb2ludFR5cGUpOworICAgICAgICBkZWJ1Z2dl
ckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBl
dmVudERhdGEucmVsZWFzZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9kZWJ1Z2dlckFnZW50OworICAgIGlmICgh
ZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZSogcGFyZW50Tm9kZSA9
IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUobm9kZSk7CisgICAgaWYgKGhhc0Jy
ZWFrcG9pbnQobm9kZSwgTm9kZVJlbW92ZWQpKSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgICAgIGRl
c2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgTm9kZVJlbW92ZWQsIGZhbHNlLCBldmVudERhdGEu
Z2V0KCkpOworICAgICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBk
b21OYXRpdmVCcmVha3BvaW50VHlwZSk7CisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJv
Z3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNl
KCkpOworICAgIH0gZWxzZSBpZiAocGFyZW50Tm9kZSAmJiBoYXNCcmVha3BvaW50KHBhcmVudE5v
ZGUsIFN1YnRyZWVNb2RpZmllZCkpIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
ZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgZGVzY3JpcHRp
b25Gb3JET01FdmVudChub2RlLCBTdWJ0cmVlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0
KCkpOworICAgICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21O
YXRpdmVCcmVha3BvaW50VHlwZSk7CisgICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3Jh
bShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkp
OworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsTW9kaWZ5
RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQoreworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQq
IGRlYnVnZ2VyQWdlbnQgPSBtX2RlYnVnZ2VyQWdlbnQ7CisgICAgaWYgKCFkZWJ1Z2dlckFnZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoaGFzQnJlYWtwb2ludChlbGVtZW50LCBBdHRy
aWJ1dGVNb2RpZmllZCkpIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRE
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAgZGVzY3JpcHRpb25Gb3JE
T01FdmVudChlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQo
KSk7CisgICAgICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VHlwZSIsIGRvbU5h
dGl2ZUJyZWFrcG9pbnRUeXBlKTsKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFt
KE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhLnJlbGVhc2UoKSk7
CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0
aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0aW9uKQoreworICAgIEFTU0VSVChoYXNCcmVh
a3BvaW50KHRhcmdldCwgYnJlYWtwb2ludFR5cGUpKTsKKworICAgIE5vZGUqIGJyZWFrcG9pbnRP
d25lciA9IHRhcmdldDsKKyAgICBpZiAoKDEgPDwgYnJlYWtwb2ludFR5cGUpICYgaW5oZXJpdGFi
bGVET01CcmVha3BvaW50VHlwZXNNYXNrKSB7CisgICAgICAgIC8vIEZvciBpbmhlcml0YWJsZSBi
cmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24ndCBhbHdheXMgdGhlIHNhbWUgYXMgdGhl
IG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2ludC4KKyAgICAgICAgLy8gVGFyZ2V0IG5vZGUgbWF5
IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNvIHdlIG5lZWQgdG8gcHVzaCBpdCBmaXJzdC4KKyAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1fZG9tQWdl
bnQtPnJlc29sdmVOb2RlKHRhcmdldCk7CisgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRPYmplY3Qo
InRhcmdldE5vZGUiLCB0YXJnZXROb2RlT2JqZWN0KTsKKworICAgICAgICAvLyBGaW5kIGJyZWFr
cG9pbnQgb3duZXIgbm9kZS4KKyAgICAgICAgaWYgKCFpbnNlcnRpb24pCisgICAgICAgICAgICBi
cmVha3BvaW50T3duZXIgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKHRhcmdl
dCk7CisgICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXIpOworICAgICAgICB3aGlsZSAoISht
X2RvbUJyZWFrcG9pbnRzLmdldChicmVha3BvaW50T3duZXIpICYgKDEgPDwgYnJlYWtwb2ludFR5
cGUpKSkgeworICAgICAgICAgICAgYnJlYWtwb2ludE93bmVyID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OmlubmVyUGFyZW50Tm9kZShicmVha3BvaW50T3duZXIpOworICAgICAgICAgICAgQVNTRVJUKGJy
ZWFrcG9pbnRPd25lcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYnJlYWtwb2ludFR5cGUg
PT0gU3VidHJlZU1vZGlmaWVkKQorICAgICAgICAgICAgZGVzY3JpcHRpb24tPnNldEJvb2xlYW4o
Imluc2VydGlvbiIsIGluc2VydGlvbik7CisgICAgfQorCisgICAgaW50IGJyZWFrcG9pbnRPd25l
ck5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGJyZWFrcG9pbnRPd25lcik7CisgICAg
QVNTRVJUKGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CisgICAgZGVzY3JpcHRpb24tPnNldE51bWJl
cigibm9kZUlkIiwgYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKKyAgICBkZXNjcmlwdGlvbi0+c2V0
TnVtYmVyKCJ0eXBlIiwgYnJlYWtwb2ludFR5cGUpOworfQorCitib29sIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6Omhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgaW50IHR5cGUpCit7CisgICAg
dWludDMyX3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICB1aW50MzJfdCBkZXJpdmVkQml0ID0g
cm9vdEJpdCA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKKyAgICByZXR1cm4gbV9k
b21CcmVha3BvaW50cy5nZXQobm9kZSkgJiAocm9vdEJpdCB8IGRlcml2ZWRCaXQpOworfQorCit2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhO
b2RlKiBub2RlLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpCit7CisgICAgdWludDMyX3Qg
b2xkTWFzayA9IG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpOworICAgIHVpbnQzMl90IGRlcml2
ZWRNYXNrID0gcm9vdE1hc2sgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CisgICAg
dWludDMyX3QgbmV3TWFzayA9IHNldCA/IG9sZE1hc2sgfCBkZXJpdmVkTWFzayA6IG9sZE1hc2sg
JiB+ZGVyaXZlZE1hc2s7CisgICAgaWYgKG5ld01hc2spCisgICAgICAgIG1fZG9tQnJlYWtwb2lu
dHMuc2V0KG5vZGUsIG5ld01hc2spOworICAgIGVsc2UKKyAgICAgICAgbV9kb21CcmVha3BvaW50
cy5yZW1vdmUobm9kZSk7CisKKyAgICB1aW50MzJfdCBuZXdSb290TWFzayA9IHJvb3RNYXNrICYg
fm5ld01hc2s7CisgICAgaWYgKCFuZXdSb290TWFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9k
ZSk7IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNo
aWxkKSkKKyAgICAgICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCBuZXdSb290TWFz
aywgc2V0KTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpwYXVzZU9uTmF0
aXZlRXZlbnRJZk5lZWRlZChjb25zdCBTdHJpbmcmIGNhdGVnb3J5VHlwZSwgY29uc3QgU3RyaW5n
JiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpCit7CisgICAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKKyAgICBpZiAoIWRlYnVnZ2Vy
QWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBmdWxsRXZlbnROYW1lID0gbWFr
ZVN0cmluZyhjYXRlZ29yeVR5cGUsICI6IiwgZXZlbnROYW1lKTsKKyAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBldmVudExpc3RlbmVyQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvclN0YXRlLT5n
ZXRPYmplY3QoRE9NRGVidWdnZXJBZ2VudFN0YXRlOjpldmVudExpc3RlbmVyQnJlYWtwb2ludHMp
OworICAgIGlmIChldmVudExpc3RlbmVyQnJlYWtwb2ludHMtPmZpbmQoZnVsbEV2ZW50TmFtZSkg
PT0gZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLT5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBldmVu
dExpc3RlbmVyTmF0aXZlQnJlYWtwb2ludFR5cGUpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5n
KCJldmVudE5hbWUiLCBmdWxsRXZlbnROYW1lKTsKKyAgICBpZiAoc3luY2hyb25vdXMpCisgICAg
ICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJF
dmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOworICAgIGVsc2UKKyAgICAgICAgZGVidWdn
ZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChOYXRpdmVCcmVha3BvaW50RGVi
dWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOworfQorCit2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OnNldFhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzRW1wdHkoKSkgeworICAgICAgICBtX2luc3Bl
Y3RvclN0YXRlLT5zZXRCb29sZWFuKERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VPbkFsbFhI
UnMsIHRydWUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4geGhyQnJlYWtwb2ludHMgPSBtX2luc3BlY3RvclN0YXRlLT5nZXRPYmplY3QoRE9N
RGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVha3BvaW50cyk7CisgICAgeGhyQnJlYWtwb2ludHMt
PnNldEJvb2xlYW4odXJsLCB0cnVlKTsKKyAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRPYmplY3Qo
RE9NRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVha3BvaW50cywgeGhyQnJlYWtwb2ludHMpOwor
fQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZVhIUkJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzRW1wdHko
KSkgeworICAgICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFuKERPTURlYnVnZ2VyQWdl
bnRTdGF0ZTo6cGF1c2VPbkFsbFhIUnMsIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHhockJyZWFrcG9pbnRzID0gbV9pbnNwZWN0
b3JTdGF0ZS0+Z2V0T2JqZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6eGhyQnJlYWtwb2ludHMp
OworICAgIHhockJyZWFrcG9pbnRzLT5yZW1vdmUodXJsKTsKKyAgICBtX2luc3BlY3RvclN0YXRl
LT5zZXRPYmplY3QoRE9NRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVha3BvaW50cywgeGhyQnJl
YWtwb2ludHMpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxTZW5k
WE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKKyAgICBpZiAoIWRlYnVn
Z2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBicmVha3BvaW50VVJMOwor
ICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKERPTURlYnVnZ2VyQWdlbnRTdGF0
ZTo6cGF1c2VPbkFsbFhIUnMpKQorICAgICAgICBicmVha3BvaW50VVJMID0gIiI7CisgICAgZWxz
ZSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHhockJyZWFrcG9pbnRzID0gbV9p
bnNwZWN0b3JTdGF0ZS0+Z2V0T2JqZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6eGhyQnJlYWtw
b2ludHMpOworICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSB4aHJC
cmVha3BvaW50cy0+YmVnaW4oKTsgaXQgIT0geGhyQnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7
CisgICAgICAgICAgICBpZiAodXJsLmNvbnRhaW5zKGl0LT5maXJzdCkpIHsKKyAgICAgICAgICAg
ICAgICBicmVha3BvaW50VVJMID0gaXQtPmZpcnN0OworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGJyZWFrcG9pbnRVUkwu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZXZlbnREYXRhLT5z
ZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBlIiwgeGhyTmF0aXZlQnJlYWtwb2ludFR5cGUpOworICAg
IGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VVJMIiwgYnJlYWtwb2ludFVSTCk7Cisg
ICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRh
LnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y2xlYXIo
KQoreworICAgIG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40
Y2U5MzVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudF9oCisjZGVmaW5lIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnRfaAor
CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisK
KyNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBFbGVtZW50OworY2xhc3MgSW5zcGVjdG9yQWdlbnQ7CitjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKK2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CitjbGFzcyBJbnNwZWN0
b3JGcm9udGVuZDsKK2NsYXNzIEluc3BlY3Rvck9iamVjdDsKK2NsYXNzIEluc3BlY3RvclN0YXRl
OworY2xhc3MgSW5zdHJ1bWVudGluZ0FnZW50czsKK2NsYXNzIE5vZGU7CisKK3R5cGVkZWYgU3Ry
aW5nIEVycm9yU3RyaW5nOworCitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IDogcHVi
bGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KTsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiwgSW5zcGVjdG9yQWdlbnQqKTsKKworICAgIHZpcnR1YWwgfkluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQoKTsKKworICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworCisgICAg
Ly8gRE9NRGVidWdnZXIgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAorICAgIHZvaWQgc2V0WEhS
QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHJl
bW92ZVhIUkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAg
dm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZXZlbnROYW1lKTsKKyAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgc2V0RE9NQnJl
YWtwb2ludChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGludCB0eXBlKTsKKyAgICB2b2lkIHJl
bW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdHlwZSk7CisK
KyAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCisgICAgdm9pZCB3aWxsSW5zZXJ0
RE9NTm9kZShOb2RlKiwgTm9kZSogcGFyZW50KTsKKyAgICB2b2lkIGRpZEluc2VydERPTU5vZGUo
Tm9kZSopOworICAgIHZvaWQgd2lsbFJlbW92ZURPTU5vZGUoTm9kZSopOworICAgIHZvaWQgZGlk
UmVtb3ZlRE9NTm9kZShOb2RlKik7CisgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50
Kik7CisgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsK
KyAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdv
cnlUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7CisKK3By
aXZhdGU6CisgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOworCisgICAgLy8gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2Fz
RW5hYmxlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CisgICAg
dm9pZCBkaXNhYmxlKCk7CisKKyAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSog
dGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3JPYmpl
Y3QqIGRlc2NyaXB0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKKyAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKKyAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOworCisgICAgdm9p
ZCBjbGVhcigpOworCisgICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdl
bnRzOworICAgIEluc3BlY3RvclN0YXRlKiBtX2luc3BlY3RvclN0YXRlOworICAgIEluc3BlY3Rv
ckRPTUFnZW50KiBtX2RvbUFnZW50OworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVi
dWdnZXJBZ2VudDsKKyAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKKyAgICBI
YXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVha3BvaW50czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBiMDJjMTM3Li4wZGRlYjFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtNDAsNyArNDAsNyBAQAogI2luY2x1ZGUgIkV2ZW50Q29udGV4dC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ1NT
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCkBAIC0xMDcsOCArMTA3LDggQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWRJbXBsKEluc3BlY3RvckFn
ZW50KiBpbnNwZWMKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9N
Tm9kZUltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBOb2RlKiBub2RlLCBOb2Rl
KiBwYXJlbnQpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKElu
c3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVidWdnZXJBZ2VudCA9IGluc3Bl
Y3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50KCkpCi0gICAgICAgIGJyb3dzZXJEZWJ1Z2dlckFnZW50LT53aWxsSW5zZXJ0RE9NTm9k
ZShub2RlLCBwYXJlbnQpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBET01E
ZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBET01EZWJ1Z2dlckFnZW50LT53aWxs
SW5zZXJ0RE9NTm9kZShub2RlLCBwYXJlbnQpOwogI2VuZGlmCiB9CiAKQEAgLTExNywyNCArMTE3
LDI0IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1w
bChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlCiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50
KiBkb21BZ2VudCA9IGluc3BlY3RvckFnZW50LT5kb21BZ2VudCgpKQogICAgICAgICBkb21BZ2Vu
dC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKLSAgICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dl
ckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9y
QnJvd3NlckRlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPmRp
ZEluc2VydERPTU5vZGUobm9kZSk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQq
IERPTURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygp
LT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIERPTURlYnVnZ2VyQWdlbnQt
PmRpZEluc2VydERPTU5vZGUobm9kZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVj
dG9yQWdlbnQsIE5vZGUqIG5vZGUpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgaWYgKEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVidWdnZXJB
Z2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGJyb3dzZXJEZWJ1Z2dlckFnZW50LT53aWxs
UmVtb3ZlRE9NTm9kZShub2RlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCog
RE9NRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCkt
Pmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgRE9NRGVidWdnZXJBZ2VudC0+
d2lsbFJlbW92ZURPTU5vZGUobm9kZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0
b3JBZ2VudCwgTm9kZSogbm9kZSkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
LSAgICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFn
ZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPmRpZFJl
bW92ZURPTU5vZGUobm9kZSk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIERP
TURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5p
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIERPTURlYnVnZ2VyQWdlbnQtPmRp
ZFJlbW92ZURPTU5vZGUobm9kZSk7CiAjZW5kaWYKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQq
IGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRvbUFnZW50KCkpCiAgICAgICAgIGRvbUFnZW50
LT5kaWRSZW1vdmVET01Ob2RlKG5vZGUpOwpAQCAtMTQzLDggKzE0Myw4IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlSW1wbChJbnNwZWN0b3JBZ2VudCog
aW5zcGVjdG9yQWdlCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlmeURP
TUF0dHJJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgRWxlbWVudCogZWxlbWVu
dCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoSW5zcGVjdG9y
QnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQWdl
bnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQo
KSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKGVsZW1l
bnQpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBET01EZWJ1Z2dlckFnZW50
ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudCgpKQorICAgICAgICBET01EZWJ1Z2dlckFnZW50LT53aWxsTW9kaWZ5RE9NQXR0
cihlbGVtZW50KTsKICNlbmRpZgogfQogCkBAIC0xODIsOCArMTgyLDggQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zcGVjdG9yQWdl
bnQqIGluc3BlY3QKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0
dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIGNvbnN0IFN0cmlu
ZyYgdXJsKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmIChJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCogYnJvd3NlckRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudCgpKQotICAgICAgICBicm93c2VyRGVidWdnZXJBZ2VudC0+d2lsbFNlbmRYTUxIdHRwUmVx
dWVzdCh1cmwpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBET01EZWJ1Z2dl
ckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBET01EZWJ1Z2dlckFnZW50LT53aWxsU2VuZFhN
TEh0dHBSZXF1ZXN0KHVybCk7CiAjZW5kaWYKIH0KIApAQCAtNzc1LDggKzc3NSw4IEBAIGJvb2wg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZChJbnNwZWN0b3JBZ2VudCogaW5z
cGVjdG9yQWdlbnQpCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cGF1c2VPbk5hdGl2
ZUV2ZW50SWZOZWVkZWQoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBjb25zdCBTdHJp
bmcmIGNhdGVnb3J5VHlwZSwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25v
dXMpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFn
ZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
KCkpCi0gICAgICAgIGJyb3dzZXJEZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmF0aXZlRXZlbnRJZk5l
ZWRlZChjYXRlZ29yeVR5cGUsIGV2ZW50TmFtZSwgc3luY2hyb25vdXMpOworICAgIGlmIChJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50KiBET01EZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQt
Pmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAg
ICAgICBET01EZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChjYXRlZ29y
eVR5cGUsIGV2ZW50TmFtZSwgc3luY2hyb25vdXMpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCmluZGV4IDMxNTA2ZjEuLmQx
YjA1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2Vu
dHMuaApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKIGNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Owor
Y2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50
OwogY2xhc3MgSW5zcGVjdG9yQ29uc29sZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7
CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogICAgICAgICAsIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudCgwKQotICAgICAg
ICAsIG1faW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoMCkKKyAgICAgICAgLCBtX2luc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQoMCkKICAgICAgICAgLCBtX2luc3BlY3RvclByb2ZpbGVyQWdl
bnQoMCkKICNlbmRpZgogI2lmIEVOQUJMRShXT1JLRVJTKQpAQCAtMTI1LDggKzEyNSw4IEBAIHB1
YmxpYzoKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBpbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50OyB9CiAgICAgdm9pZCBz
ZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGFnZW50KSB7
IG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudCA9IGFnZW50OyB9CiAKLSAgICBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudCogaW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7
IHJldHVybiBtX2luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OyB9Ci0gICAgdm9pZCBzZXRJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dCogYWdlbnQpIHsgbV9pbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCA9IGFnZW50OyB9Cisg
ICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsgfQorICAgIHZvaWQg
c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBh
Z2VudCkgeyBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQogCiAgICAgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudCogaW5zcGVjdG9yUHJvZmlsZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsgfQogICAgIHZvaWQgc2V0SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudChJbnNwZWN0b3JQcm9maWxlckFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvclBy
b2ZpbGVyQWdlbnQgPSBhZ2VudDsgfQpAQCAtMTU2LDcgKzE1Niw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQ7Ci0gICAgSW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ7CisgICAgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudCogbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogICAgIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQqIG1faW5zcGVjdG9yUHJvZmlsZXJBZ2VudDsKICNlbmRpZgog
I2lmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGRiY2I4NzYuLjYyM2RlYzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFdvcmtlckluc3BlY3RvckNvbnRy
b2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGNoYW5uZQog
ICAgICAgICAwLCAvLyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQKICNlbmRpZgogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgICAgICAwLCAvLyBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudAorICAgICAgICAwLCAvLyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
CiAjZW5kaWYKICAgICAgICAgMCwgLy8gSW5zcGVjdG9yQ1NTQWdlbnQKICAgICAgICAgMCwgLy8g
SW5zcGVjdG9yQ29uc29sZUFnZW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92402</attachid>
            <date>2011-05-05 04:34:16 -0700</date>
            <delta_ts>2011-05-05 05:59:24 -0700</delta_ts>
            <desc>[patch] second version</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>69969</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTI3OWIwZi4uZTFiZjk5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTg4NywxMiArODg3LDEyIEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAot
ICAgIGluc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNsaWVu
dC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKICAg
ICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRh
dGFiYXNlQWdlbnQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NhODhkNi4uMDQ3Yjc5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDcwIEBACisyMDExLTA1LTA1ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW5hbWUgQnJvd3NlckRlYnVnZ2VyIHRvIERPTURlYnVn
Z2VyLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MDI1NgorICAgICAgICBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCA9PiBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50CisgICAgICAgIGJyb3dzZXJEZWJ1Z2dlciA9PiBkb21EZWJ1Z2dlcgor
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9Db2RlR2VuZXJh
dG9ySW5zcGVjdG9yLnBtOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFBhZ2VEZXN0cm95ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JBZ2VudDo6RE9NRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6fkluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGVidWdnZXJXYXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OmRlYnVnZ2VyV2FzRGlzYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpjbGVhckZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVF
dmVudExpc3RlbmVyQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNl
cnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxNb2RpZnlET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6aGFzQnJlYWtwb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJlYWtw
b2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cGF1
c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVYSFJCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1MSHR0cFJlcXVlc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y2xlYXIpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQuaC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERP
TU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1M
SHR0cFJlcXVlc3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6cGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdl
bnRzOjpJbnN0cnVtZW50aW5nQWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRp
bmdBZ2VudHM6Omluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zdHJ1bWVudGluZ0FnZW50czo6c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKToKKwog
MjAxMS0wNS0wNCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggYWQzMTI2Yy4uZTc3MWQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0xOTA5LDggKzE5MDksNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIFwKQEAgLTE5MjksNiArMTkyNyw4IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmgg
XAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNw
cCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUxODVhZjguLjg0Mjk2NmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTMyMTYsOCArMzIxNiw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcCcsCi0gICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCcsCkBAIC0z
MjI2LDYgKzMyMjQsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb25zb2xl
SW5zdHJ1bWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
JywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oJywK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCcsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCmluZGV4IGIzYzA1NjEuLmQyYjVjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC04MDUsNyAr
ODA1LDYgQEAgU09VUkNFUyArPSBcCiAgICAgaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdl
ci5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuY3BwIFwKLSAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmNwcCBcCiAgICAg
aW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgXApAQCAtODE0LDYgKzgxMyw3IEBA
IFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNw
cCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIFwKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIFwKKyAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIFwKQEAgLTE3
NDQsNyArMTc0NCw2IEBAIEhFQURFUlMgKz0gXAogICAgIGluc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmggXAogICAgIGluc3Bl
Y3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBcCi0gICAgaW5zcGVjdG9yL0lu
c3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JD
b25zb2xlQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50
YXRpb24uaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBcCkBAIC0xNzUz
LDYgKzE3NTIsNyBAQCBIRUFERVJTICs9IFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VJbnN0cnVtZW50YXRpb24uaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBcCisgICAg
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmggXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4
IGU1M2JkZjYuLjlhYjEwNGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC02NjI2NiwxNCArNjYyNjYsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVs
YXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIK
LQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVj
dG9yXEluc3BlY3RvckNsaWVudC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjYzNDYsNiAr
NjYzMzgsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIgorCQkJCT4KKwkJ
CTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCIK
IAkJCQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDBjZjY5Ni4uMDI0MjFiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTY0NSw4ICs1
NjQ1LDggQEAKIAkJRjNBQkZFMEMxMzBFOURBMDAwRTdGN0QxIC8qIEluc3RydW1lbnRpbmdBZ2Vu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzQUJG
RTBCMTMwRTlEQTAwMEU3RjdEMSAvKiBJbnN0cnVtZW50aW5nQWdlbnRzLmggKi87IH07CiAJCUYz
RDQ2MTQ4MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGM0Q0NjE0NjExNjFENTMyMDBDQTBE
MDkgLyogSlNFcnJvckhhbmRsZXIuY3BwICovOyB9OwogCQlGM0Q0NjE0OTExNjFENTMyMDBDQTBE
MDkgLyogSlNFcnJvckhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEYzRDQ2MTQ3MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5o
ICovOyB9OwotCQlGM0Q0QzQ3ODEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjNENEM0NzYxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50LmNwcCAqLzsgfTsKLQkJRjNENEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGM0Q0QzQ3NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKKwkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjNENEM0NzYxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwICovOyB9OworCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyog
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjNENEM0NzcxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKIAkJRjNGNUNGMTExMkVEODFBODAwODRDNTY5IC8qIElu
c3BlY3RvckNvbnNvbGVJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzRjVDRjEwMTJFRDgxQTgwMDg0QzU2OSAvKiBJbnNwZWN0
b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCUYzRjVDRjEzMTJFRDgxQjMwMDg0
QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjNGNUNGMTIxMkVEODFCMzAwODRDNTY5
IC8qIEluc3BlY3RvckRhdGFiYXNlSW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCUY0RUFGNEFF
MTBDNzQyQjEwMDkxMDBEMyAvKiBPcGVuVHlwZVNhbml0aXplci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEVBRjRBQzEwQzc0MkIxMDA5MTAwRDMg
LyogT3BlblR5cGVTYW5pdGl6ZXIuY3BwICovOyB9OwpAQCAtMTIxMTMsOCArMTIxMTMsOCBAQAog
CQlGM0FCRkUwQjEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnN0cnVtZW50aW5nQWdlbnRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRDQ2MTQ2MTE2MUQ1MzIwMENBMEQwOSAvKiBKU0Vy
cm9ySGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Vy
cm9ySGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzRDQ2MTQ3MTE2
MUQ1MzIwMENBMEQwOSAvKiBKU0Vycm9ySGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0Vycm9ySGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGM0Q0QzQ3NjEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGM0Q0
QzQ3NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjNENEM0NzYxMkUwNzY2MzAw
M0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzRDRDNDc3MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjNGNUNGMTAxMkVEODFBODAwODRDNTY5IC8qIEluc3BlY3RvckNvbnNvbGVJbnN0cnVtZW50
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQ29uc29s
ZUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGM0Y1Q0Yx
MjEyRUQ4MUIzMDA4NEM1NjkgLyogSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVt
ZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRFQUY0QUMxMEM3NDJC
MTAwOTEwMEQzIC8qIE9wZW5UeXBlU2FuaXRpemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IE9wZW5UeXBlU2FuaXRpemVyLmNwcDsgcGF0aCA9IG9wZW50eXBlL09w
ZW5UeXBlU2FuaXRpemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTQy
LDggKzEzMTQyLDYgQEAKIAkJCQk0RjJEMjA1MjEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9y
QWdlbnQuaCAqLywKIAkJCQlCODg1RThEMjExRTA2REQyMDA5RkZCRjQgLyogSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmNwcCAqLywKIAkJCQlCODg1RThEMzExRTA2REQyMDA5RkZCRjQg
LyogSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmggKi8sCi0JCQkJRjNENEM0NzYxMkUw
NzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcCAqLywKLQkJ
CQlGM0Q0QzQ3NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQuaCAqLywKIAkJCQk3QTFGMkI1MTEyNkM2MUIyMDAwNkE3RTYgLyogSW5zcGVjdG9yQ2xpZW50
LmNwcCAqLywKIAkJCQkxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50
LmggKi8sCiAJCQkJRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVB
Z2VudC5jcHAgKi8sCkBAIC0xMzE2Miw2ICsxMzE2MCw4IEBACiAJCQkJRjMzRjA1M0MxMjBCMERB
NTAwRTU3NDNBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLywKIAkJCQk3QTI0NTg3OTEw
MjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwICovLAogCQkJCTdBMjQ1ODdB
MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5oICovLAorCQkJCUYzRDRDNDc2
MTJFMDc2NjMwMDNEQTE1MCAvKiBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJ
CQlGM0Q0QzQ3NzEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5o
ICovLAogCQkJCTdBNzRFQ0I4MTAxODM5QTUwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwICovLAogCQkJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuaCAqLywKIAkJCQk0MUYwNjE3MzBGNUYwMEFDMDBBMDdFQUMgLyogSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCAqLywKQEAgLTIxMTU5LDcgKzIxMTU5LDYgQEAK
IAkJCQk0RjJEMjA1NDEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFD
REE2OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
RjNENEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzMzNUJGOTEyRTA3REMzMDBEMzMwMTEg
LyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGM0Y1Q0YxMTEy
RUQ4MUE4MDA4NEM1NjkgLyogSW5zcGVjdG9yQ29uc29sZUluc3RydW1lbnRhdGlvbi5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMTE3MCw2ICsyMTE2OSw3IEBACiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUYzM0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9N
QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUYzRDRDNDc5MTJFMDc2NjMwMDNEQTE1MCAvKiBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTc0RUNCQjEw
MTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk0MUYwNjE3NDBGNUYwMEFDMDBBMDdFQUMgLyogSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyog
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKQEAgLTIzOTQ4LDcgKzIz
OTQ4LDYgQEAKIAkJCQk0RjJEMjA1NTEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjg4NUU4RDQxMUUwNkREMjAwOUZGQkY0IC8qIEluc3Bl
Y3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0RjcwN0E5
OTExRUY2Nzk0MDBBQ0RBNjkgLyogSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdBMUYyQjUyMTI2QzYxQjIw
MDA2QTdFNiAvKiBJbnNwZWN0b3JDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjMzMzVC
RjgxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQzgxQjk1QjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTIzOTU3LDYgKzIzOTU2LDcgQEAKIAkJCQk0MUYwNjIx
NTBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGMzNGMDUzRDEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEg
LyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjNENEM0NzgxMkUw
NzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0E3NEVDQkExMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjE3NTBGNUYwMEFDMDBBMDdFQUMgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRGNEY1
RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db2RlR2VuZXJhdG9ySW5z
cGVjdG9yLnBtIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0
b3IucG0KaW5kZXggOGU4NGRmMi4uYzhkN2MyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvZGVHZW5lcmF0b3JJbnNwZWN0b3IucG0KQEAgLTM2LDkgKzM2LDkgQEAgJHR5
cGVUcmFuc2Zvcm17IkRlYnVnZ2VyIn0gPSB7CiAgICAgImRvbWFpbkFjY2Vzc29yIiA9PiAibV9k
ZWJ1Z2dlckFnZW50IiwKIH07CiAkdHlwZVRyYW5zZm9ybXsiRE9NRGVidWdnZXIifSA9IHsKLSAg
ICAiZm9yd2FyZCIgPT4gIkluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50IiwKLSAgICAiaGVh
ZGVyIiA9PiAiSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCIsCi0gICAgImRvbWFpbkFj
Y2Vzc29yIiA9PiAibV9icm93c2VyRGVidWdnZXJBZ2VudCIsCisgICAgImZvcndhcmQiID0+ICJJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IiwKKyAgICAiaGVhZGVyIiA9PiAiSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oIiwKKyAgICAiZG9tYWluQWNjZXNzb3IiID0+ICJtX2RvbURlYnVnZ2Vy
QWdlbnQiLAogfTsKICR0eXBlVHJhbnNmb3JteyJEYXRhYmFzZSJ9ID0gewogICAgICJmb3J3YXJk
IiA9PiAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFnZW50LmNwcAppbmRleCAwOTQxYWI3Li43MjMwZTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3Qu
aCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgpAQCAtMTMx
LDcgKzEzMSw3IEBAIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3JpCiAgICAgLCBtX2NvbnNvbGVBZ2Vu
dChhZG9wdFB0cihuZXcgSW5zcGVjdG9yQ29uc29sZUFnZW50KG1faW5zdHJ1bWVudGluZ0FnZW50
cy5nZXQoKSwgdGhpcywgbV9zdGF0ZS5nZXQoKSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBtX2Rv
bUFnZW50LmdldCgpKSkpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLCBt
X2RlYnVnZ2VyQWdlbnQoUGFnZURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdB
Z2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikp
Ci0gICAgLCBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50KEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBt
X2RvbUFnZW50LmdldCgpLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCksIHRoaXMpKQorICAgICwgbV9k
b21EZWJ1Z2dlckFnZW50KEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmNyZWF0ZShtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIG1fZG9tQWdlbnQuZ2V0KCksIG1f
ZGVidWdnZXJBZ2VudC5nZXQoKSwgdGhpcykpCiAgICAgLCBtX3Byb2ZpbGVyQWdlbnQoSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9j
b25zb2xlQWdlbnQuZ2V0KCksIHBhZ2UsIG1fc3RhdGUuZ2V0KCkpKQogI2VuZGlmCiAjaWYgRU5B
QkxFKFdPUktFUlMpCkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6aW5z
cGVjdGVkUGFnZURlc3Ryb3llZCgpCiAgICAgfQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0gICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC5jbGVhcigpOworICAgIG1fZG9tRGVi
dWdnZXJBZ2VudC5jbGVhcigpOwogICAgIG1fZGVidWdnZXJBZ2VudC5jbGVhcigpOwogI2VuZGlm
CiAKQEAgLTI4MCw3ICsyODAsNyBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpkaXNjb25uZWN0RnJv
bnRlbmQoKQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5jbGVhckZyb250ZW5kKCk7Ci0gICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC0+Y2xl
YXJGcm9udGVuZCgpOworICAgIG1fZG9tRGVidWdnZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwog
ICAgIG1fcHJvZmlsZXJBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggNTViY2I1YS4uNTA5YWQ3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTUwLDcgKzUw
LDcgQEAgY2xhc3MgSFRUUEhlYWRlck1hcDsKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7Ci1jbGFzcyBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7
CiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDsKQEAgLTEzMyw3ICsxMzMsNyBAQCBwdWJsaWM6CiAg
ICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBkb21TdG9yYWdlQWdlbnQoKSB7IHJldHVybiBt
X2RvbVN0b3JhZ2VBZ2VudC5nZXQoKTsgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCi0gICAgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1
Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9icm93c2VyRGVidWdnZXJBZ2VudC5nZXQoKTsg
fQorICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQoKSBjb25z
dCB7IHJldHVybiBtX2RvbURlYnVnZ2VyQWdlbnQuZ2V0KCk7IH0KICAgICBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z2dlckFnZW50
LmdldCgpOyB9CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogcHJvZmlsZXJBZ2VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJvZmlsZXJBZ2VudC5nZXQoKTsgfQogI2VuZGlmCkBAIC0yMjAsNyAr
MjIwLDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9pbnNwZWN0b3JFeHRlbnNpb25BUEk7CiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgT3duUHRyPEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ+IG1fZGVidWdnZXJBZ2VudDsKLSAgICBPd25QdHI8SW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ+IG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQ7CisgICAgT3duUHRyPEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ+IG1fZG9tRGVidWdnZXJBZ2VudDsKICAgICBPd25QdHI8SW5zcGVj
dG9yUHJvZmlsZXJBZ2VudD4gbV9wcm9maWxlckFnZW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKFdP
UktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWNmMmEyNS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzg4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
ICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
LSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpCi0KLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckFn
ZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JWYWx1ZXMuaCIKLSNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KLQotbmFtZXNwYWNlIHsKLQot
ZW51bSBET01CcmVha3BvaW50VHlwZSB7Ci0gICAgU3VidHJlZU1vZGlmaWVkID0gMCwKLSAgICBB
dHRyaWJ1dGVNb2RpZmllZCwKLSAgICBOb2RlUmVtb3ZlZCwKLSAgICBET01CcmVha3BvaW50VHlw
ZXNDb3VudAotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRvbU5hdGl2ZUJyZWFrcG9p
bnRUeXBlID0gIkRPTSI7Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZlbnRMaXN0ZW5lck5h
dGl2ZUJyZWFrcG9pbnRUeXBlID0gIkV2ZW50TGlzdGVuZXIiOwotc3RhdGljIGNvbnN0IGNoYXIq
IGNvbnN0IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIlhIUiI7Ci0KLWNvbnN0IHVpbnQzMl90
IGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzayA9ICgxIDw8IFN1YnRyZWVNb2RpZmll
ZCk7Ci1jb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQgPSAxNjsKLQotfQot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBCcm93c2VyRGVidWdnZXJBZ2VudFN0
YXRlIHsKLXN0YXRpYyBjb25zdCBjaGFyIGV2ZW50TGlzdGVuZXJCcmVha3BvaW50c1tdID0gImV2
ZW50TGlzdGVuZXJCcmVha3BvaW50cyI7Ci1zdGF0aWMgY29uc3QgY2hhciBwYXVzZU9uQWxsWEhS
c1tdID0gInBhdXNlT25BbGxYSFJzIjsKLXN0YXRpYyBjb25zdCBjaGFyIHhockJyZWFrcG9pbnRz
W10gPSAieGhyQnJlYWtwb2ludHMiOwotfQotCi1QYXNzT3duUHRyPEluc3BlY3RvckJyb3dzZXJE
ZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNw
ZWN0b3JTdGF0ZSwgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChp
bnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgZG9tQWdlbnQsIGRlYnVnZ2VyQWdl
bnQsIGluc3BlY3RvckFnZW50KSk7Ci19Ci0KLUluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
OjpJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2Vu
dCwgSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50KQotICAgIDogbV9pbnN0cnVtZW50aW5n
QWdlbnRzKGluc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX2luc3BlY3RvclN0YXRlKGluc3Bl
Y3RvclN0YXRlKQotICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKLSAgICAsIG1fZGVidWdnZXJB
Z2VudChkZWJ1Z2dlckFnZW50KQotICAgICwgbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2Vu
dCkKLXsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldExpc3RlbmVyKHRoaXMpOwotfQotCi1JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6fkluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50
KCkKLXsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNldExpc3RlbmVyKDApOwotICAgIEFTU0VSVCgh
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpKTsK
LX0KLQotLy8gQnJvd3NlciBkZWJ1Z2dlciBhZ2VudCBlbmFibGVkIG9ubHkgd2hlbiBKUyBkZWJ1
Z2dlciBpcyBlbmFibGVkLgotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGVi
dWdnZXJXYXNFbmFibGVkKCkKLXsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KHRoaXMpOwotfQotCi12b2lkIEluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlcldhc0Rpc2FibGVkKCkKLXsKLSAgICBkaXNhYmxlKCk7
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQotewot
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQoMCk7Ci0gICAgY2xlYXIoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudDo6Y2xlYXJGcm9udGVuZCgpCi17Ci0gICAgZGlzYWJsZSgpOwotfQotCi12b2lkIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3MoKQotewotICAgIG1fZG9t
QnJlYWtwb2ludHMuY2xlYXIoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudDo6c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25z
dCBTdHJpbmcmIGV2ZW50TmFtZSkKLXsKLSAgICBpZiAoZXZlbnROYW1lLmlzRW1wdHkoKSkgewot
ICAgICAgICAqZXJyb3IgPSAiRXZlbnQgbmFtZSBpcyBlbXB0eSI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudExpc3RlbmVyQnJlYWtw
b2ludHMgPSBtX2luc3BlY3RvclN0YXRlLT5nZXRPYmplY3QoQnJvd3NlckRlYnVnZ2VyQWdlbnRT
dGF0ZTo6ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKTsKLSAgICBldmVudExpc3RlbmVyQnJlYWtw
b2ludHMtPnNldEJvb2xlYW4oZXZlbnROYW1lLCB0cnVlKTsKLSAgICBtX2luc3BlY3RvclN0YXRl
LT5zZXRPYmplY3QoQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZTo6ZXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnRzLCBldmVudExpc3RlbmVyQnJlYWtwb2ludHMpOwotfQotCi12b2lkIEluc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lKQotewotICAgIGlmIChldmVudE5h
bWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICplcnJvciA9ICJFdmVudCBuYW1lIGlzIGVtcHR5IjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2
ZW50TGlzdGVuZXJCcmVha3BvaW50cyA9IG1faW5zcGVjdG9yU3RhdGUtPmdldE9iamVjdChCcm93
c2VyRGVidWdnZXJBZ2VudFN0YXRlOjpldmVudExpc3RlbmVyQnJlYWtwb2ludHMpOwotICAgIGV2
ZW50TGlzdGVuZXJCcmVha3BvaW50cy0+cmVtb3ZlKGV2ZW50TmFtZSk7Ci0gICAgbV9pbnNwZWN0
b3JTdGF0ZS0+c2V0T2JqZWN0KEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OmV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50cywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKTsKLX0KLQotdm9pZCBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQot
ewotICAgIGlmIChtX2RvbUJyZWFrcG9pbnRzLnNpemUoKSkgewotICAgICAgICB1aW50MzJfdCBt
YXNrID0gbV9kb21CcmVha3BvaW50cy5nZXQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50
Tm9kZShub2RlKSk7Ci0gICAgICAgIHVpbnQzMl90IGluaGVyaXRhYmxlVHlwZXNNYXNrID0gKG1h
c2sgfCAobWFzayA+PiBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkpICYgaW5oZXJpdGFi
bGVET01CcmVha3BvaW50VHlwZXNNYXNrOwotICAgICAgICBpZiAoaW5oZXJpdGFibGVUeXBlc01h
c2spCi0gICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMobm9kZSwgaW5oZXJpdGFi
bGVUeXBlc01hc2ssIHRydWUpOwotICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQotewotICAgIGlmIChtX2Rv
bUJyZWFrcG9pbnRzLnNpemUoKSkgewotICAgICAgICAvLyBSZW1vdmUgc3VidHJlZSBicmVha3Bv
aW50cy4KLSAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9kZSk7Ci0gICAgICAgIFZl
Y3RvcjxOb2RlKj4gc3RhY2soMSwgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChu
b2RlKSk7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBzdGFjay5sYXN0
KCk7Ci0gICAgICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgICAgICBpZiAoIW5v
ZGUpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtX2RvbUJyZWFrcG9p
bnRzLnJlbW92ZShub2RlKTsKLSAgICAgICAgICAgIHN0YWNrLmFwcGVuZChJbnNwZWN0b3JET01B
Z2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKLSAgICAgICAgICAgIHN0YWNrLmFwcGVuZChJ
bnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhub2RlKSk7Ci0gICAgICAgIH0gd2hp
bGUgKCFzdGFjay5pc0VtcHR5KCkpOwotICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGludCB0eXBlKQotewotICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5ub2RlRm9ySWQobm9k
ZUlkKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVpbnQzMl90IHJv
b3RCaXQgPSAxIDw8IHR5cGU7Ci0gICAgbV9kb21CcmVha3BvaW50cy5zZXQobm9kZSwgbV9kb21C
cmVha3BvaW50cy5nZXQobm9kZSkgfCByb290Qml0KTsKLSAgICBpZiAocm9vdEJpdCAmIGluaGVy
aXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzaykgewotICAgICAgICBmb3IgKE5vZGUqIGNoaWxk
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxk
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQotICAgICAgICAg
ICAgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKGNoaWxkLCByb290Qml0LCB0cnVlKTsKLSAgICB9
Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdHlwZSkKLXsKLSAgICBOb2RlKiBu
b2RlID0gbV9kb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7Ci0gICAgaWYgKCFub2RlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB1aW50MzJfdCByb290Qml0ID0gMSA8PCB0eXBlOwotICAgIHVp
bnQzMl90IG1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKSAmIH5yb290Qml0OwotICAg
IGlmIChtYXNrKQotICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fZG9tQnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwotCi0gICAgaWYg
KChyb290Qml0ICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrKSAmJiAhKG1hc2sg
JiAocm9vdEJpdCA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdCkpKSB7Ci0gICAgICAg
IGZvciAoTm9kZSogY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5v
ZGUpOyBjaGlsZDsgY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhj
aGlsZCkpCi0gICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIHJvb3RC
aXQsIGZhbHNlKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OndpbGxJbnNlcnRET01Ob2RlKE5vZGUqLCBOb2RlKiBwYXJlbnQpCi17Ci0gICAgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKLSAgICBp
ZiAoIWRlYnVnZ2VyQWdlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChoYXNCcmVha3Bv
aW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkKSkgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBk
ZXNjcmlwdGlvbkZvckRPTUV2ZW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkLCB0cnVlLCBldmVu
dERhdGEuZ2V0KCkpOwotICAgICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5
cGUiLCBkb21OYXRpdmVCcmVha3BvaW50VHlwZSk7Ci0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJy
ZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5y
ZWxlYXNlKCkpOwotICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dDo6d2lsbFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9kZWJ1Z2dlckFnZW50OwotICAgIGlmICghZGVidWdn
ZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTm9kZSogcGFyZW50Tm9kZSA9IEluc3Bl
Y3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUobm9kZSk7Ci0gICAgaWYgKGhhc0JyZWFrcG9p
bnQobm9kZSwgTm9kZVJlbW92ZWQpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2NyaXB0
aW9uRm9yRE9NRXZlbnQobm9kZSwgTm9kZVJlbW92ZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkp
OwotICAgICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21OYXRp
dmVCcmVha3BvaW50VHlwZSk7Ci0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShO
YXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwot
ICAgIH0gZWxzZSBpZiAocGFyZW50Tm9kZSAmJiBoYXNCcmVha3BvaW50KHBhcmVudE5vZGUsIFN1
YnRyZWVNb2RpZmllZCkpIHsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRE
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGVzY3JpcHRpb25Gb3JE
T01FdmVudChub2RlLCBTdWJ0cmVlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkpOwot
ICAgICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21OYXRpdmVC
cmVha3BvaW50VHlwZSk7Ci0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRp
dmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwotICAg
IH0KLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlmeURP
TUF0dHIoRWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gbV9kZWJ1Z2dlckFnZW50OwotICAgIGlmICghZGVidWdnZXJBZ2VudCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGhhc0JyZWFrcG9pbnQoZWxlbWVudCwgQXR0cmli
dXRlTW9kaWZpZWQpKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0
YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uRm9yRE9N
RXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZhbHNlLCBldmVudERhdGEuZ2V0KCkp
OwotICAgICAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21OYXRp
dmVCcmVha3BvaW50VHlwZSk7Ci0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShO
YXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwot
ICAgIH0KLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRp
b25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNl
cnRpb24sIEluc3BlY3Rvck9iamVjdCogZGVzY3JpcHRpb24pCi17Ci0gICAgQVNTRVJUKGhhc0Jy
ZWFrcG9pbnQodGFyZ2V0LCBicmVha3BvaW50VHlwZSkpOwotCi0gICAgTm9kZSogYnJlYWtwb2lu
dE93bmVyID0gdGFyZ2V0OwotICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0
YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKLSAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxl
IGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0
aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgotICAgICAgICAvLyBUYXJnZXQgbm9kZSBt
YXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0Lgot
ICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21B
Z2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0KTsKLSAgICAgICAgZGVzY3JpcHRpb24tPnNldE9iamVj
dCgidGFyZ2V0Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOwotCi0gICAgICAgIC8vIEZpbmQgYnJl
YWtwb2ludCBvd25lciBub2RlLgotICAgICAgICBpZiAoIWluc2VydGlvbikKLSAgICAgICAgICAg
IGJyZWFrcG9pbnRPd25lciA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUodGFy
Z2V0KTsKLSAgICAgICAgQVNTRVJUKGJyZWFrcG9pbnRPd25lcik7Ci0gICAgICAgIHdoaWxlICgh
KG1fZG9tQnJlYWtwb2ludHMuZ2V0KGJyZWFrcG9pbnRPd25lcikgJiAoMSA8PCBicmVha3BvaW50
VHlwZSkpKSB7Ci0gICAgICAgICAgICBicmVha3BvaW50T3duZXIgPSBJbnNwZWN0b3JET01BZ2Vu
dDo6aW5uZXJQYXJlbnROb2RlKGJyZWFrcG9pbnRPd25lcik7Ci0gICAgICAgICAgICBBU1NFUlQo
YnJlYWtwb2ludE93bmVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChicmVha3BvaW50VHlw
ZSA9PSBTdWJ0cmVlTW9kaWZpZWQpCi0gICAgICAgICAgICBkZXNjcmlwdGlvbi0+c2V0Qm9vbGVh
bigiaW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKLSAgICB9Ci0KLSAgICBpbnQgYnJlYWtwb2ludE93
bmVyTm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoYnJlYWtwb2ludE93bmVyKTsKLSAg
ICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICBkZXNjcmlwdGlvbi0+c2V0TnVt
YmVyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOwotICAgIGRlc2NyaXB0aW9uLT5z
ZXROdW1iZXIoInR5cGUiLCBicmVha3BvaW50VHlwZSk7Ci19Ci0KLWJvb2wgSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6Omhhc0JyZWFrcG9pbnQoTm9kZSogbm9kZSwgaW50IHR5cGUpCi17
Ci0gICAgdWludDMyX3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKLSAgICB1aW50MzJfdCBkZXJpdmVk
Qml0ID0gcm9vdEJpdCA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKLSAgICByZXR1
cm4gbV9kb21CcmVha3BvaW50cy5nZXQobm9kZSkgJiAocm9vdEJpdCB8IGRlcml2ZWRCaXQpOwot
fQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp1cGRhdGVTdWJ0cmVlQnJl
YWtwb2ludHMoTm9kZSogbm9kZSwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KQotewotICAg
IHVpbnQzMl90IG9sZE1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKTsKLSAgICB1aW50
MzJfdCBkZXJpdmVkTWFzayA9IHJvb3RNYXNrIDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNo
aWZ0OwotICAgIHVpbnQzMl90IG5ld01hc2sgPSBzZXQgPyBvbGRNYXNrIHwgZGVyaXZlZE1hc2sg
OiBvbGRNYXNrICYgfmRlcml2ZWRNYXNrOwotICAgIGlmIChuZXdNYXNrKQotICAgICAgICBtX2Rv
bUJyZWFrcG9pbnRzLnNldChub2RlLCBuZXdNYXNrKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZG9t
QnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwotCi0gICAgdWludDMyX3QgbmV3Um9vdE1hc2sgPSBy
b290TWFzayAmIH5uZXdNYXNrOwotICAgIGlmICghbmV3Um9vdE1hc2spCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGZvciAoTm9kZSogY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJz
dENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0
U2libGluZyhjaGlsZCkpCi0gICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwg
bmV3Um9vdE1hc2ssIHNldCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBl
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cykKLXsKLSAgICBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9kZWJ1Z2dlckFnZW50OwotICAg
IGlmICghZGVidWdnZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU3RyaW5nIGZ1bGxF
dmVudE5hbWUgPSBtYWtlU3RyaW5nKGNhdGVnb3J5VHlwZSwgIjoiLCBldmVudE5hbWUpOwotICAg
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyA9IG1faW5z
cGVjdG9yU3RhdGUtPmdldE9iamVjdChCcm93c2VyRGVidWdnZXJBZ2VudFN0YXRlOjpldmVudExp
c3RlbmVyQnJlYWtwb2ludHMpOwotICAgIGlmIChldmVudExpc3RlbmVyQnJlYWtwb2ludHMtPmZp
bmQoZnVsbEV2ZW50TmFtZSkgPT0gZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLT5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygiYnJl
YWtwb2ludFR5cGUiLCBldmVudExpc3RlbmVyTmF0aXZlQnJlYWtwb2ludFR5cGUpOwotICAgIGV2
ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVudE5hbWUiLCBmdWxsRXZlbnROYW1lKTsKLSAgICBpZiAo
c3luY2hyb25vdXMpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVC
cmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwotICAgIGVs
c2UKLSAgICAgICAgZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChO
YXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwot
fQotCi12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpzZXRYSFJCcmVha3BvaW50
KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgaWYgKHVybC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgbV9pbnNwZWN0b3JTdGF0ZS0+c2V0Qm9vbGVhbihCcm93c2VyRGVidWdn
ZXJBZ2VudFN0YXRlOjpwYXVzZU9uQWxsWEhScywgdHJ1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB4aHJCcmVha3BvaW50cyA9IG1faW5z
cGVjdG9yU3RhdGUtPmdldE9iamVjdChCcm93c2VyRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVh
a3BvaW50cyk7Ci0gICAgeGhyQnJlYWtwb2ludHMtPnNldEJvb2xlYW4odXJsLCB0cnVlKTsKLSAg
ICBtX2luc3BlY3RvclN0YXRlLT5zZXRPYmplY3QoQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZTo6
eGhyQnJlYWtwb2ludHMsIHhockJyZWFrcG9pbnRzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgdXJsKQotewotICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1faW5z
cGVjdG9yU3RhdGUtPnNldEJvb2xlYW4oQnJvd3NlckRlYnVnZ2VyQWdlbnRTdGF0ZTo6cGF1c2VP
bkFsbFhIUnMsIGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHhockJyZWFrcG9pbnRzID0gbV9pbnNwZWN0b3JTdGF0ZS0+Z2V0T2Jq
ZWN0KEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OnhockJyZWFrcG9pbnRzKTsKLSAgICB4aHJC
cmVha3BvaW50cy0+cmVtb3ZlKHVybCk7Ci0gICAgbV9pbnNwZWN0b3JTdGF0ZS0+c2V0T2JqZWN0
KEJyb3dzZXJEZWJ1Z2dlckFnZW50U3RhdGU6OnhockJyZWFrcG9pbnRzLCB4aHJCcmVha3BvaW50
cyk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OndpbGxTZW5kWE1M
SHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpCi17Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKLSAgICBpZiAoIWRlYnVnZ2Vy
QWdlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBicmVha3BvaW50VVJMOwotICAg
IGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKEJyb3dzZXJEZWJ1Z2dlckFnZW50U3Rh
dGU6OnBhdXNlT25BbGxYSFJzKSkKLSAgICAgICAgYnJlYWtwb2ludFVSTCA9ICIiOwotICAgIGVs
c2UgewotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB4aHJCcmVha3BvaW50cyA9IG1f
aW5zcGVjdG9yU3RhdGUtPmdldE9iamVjdChCcm93c2VyRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJC
cmVha3BvaW50cyk7Ci0gICAgICAgIGZvciAoSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBpdCA9
IHhockJyZWFrcG9pbnRzLT5iZWdpbigpOyBpdCAhPSB4aHJCcmVha3BvaW50cy0+ZW5kKCk7ICsr
aXQpIHsKLSAgICAgICAgICAgIGlmICh1cmwuY29udGFpbnMoaXQtPmZpcnN0KSkgewotICAgICAg
ICAgICAgICAgIGJyZWFrcG9pbnRVUkwgPSBpdC0+Zmlyc3Q7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoYnJlYWtwb2lu
dFVSTC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBldmVudERh
dGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCB4aHJOYXRpdmVCcmVha3BvaW50VHlwZSk7
Ci0gICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRVUkwiLCBicmVha3BvaW50VVJM
KTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBkZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVu
dERhdGEucmVsZWFzZSgpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dDo6Y2xlYXIoKQotewotICAgIG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhZGQwYzA1Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50X2gKLSNkZWZpbmUg
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnRfaAotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFbGVtZW50OwotY2xh
c3MgSW5zcGVjdG9yQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLWNsYXNzIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ7Ci1jbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKLWNsYXNzIEluc3Bl
Y3Rvck9iamVjdDsKLWNsYXNzIEluc3BlY3RvclN0YXRlOwotY2xhc3MgSW5zdHJ1bWVudGluZ0Fn
ZW50czsKLWNsYXNzIE5vZGU7Ci0KLXR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwotCi1jbGFz
cyBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpMaXN0ZW5lciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQpOwotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIElu
c3BlY3RvclN0YXRlKiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiwgSW5zcGVjdG9yQWdlbnQqKTsKLQotICAgIHZpcnR1YWwgfkluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50KCk7Ci0KLSAgICB2b2lkIGNsZWFyRnJvbnRlbmQoKTsKLQotICAgIC8vIEJyb3dz
ZXJEZWJ1Z2dlciBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCi0gICAgdm9pZCBzZXRYSFJCcmVh
a3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZvaWQgcmVtb3Zl
WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lk
IHNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBl
dmVudE5hbWUpOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdm9pZCBzZXRET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHR5cGUpOwotICAgIHZvaWQgcmVtb3Zl
RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGludCB0eXBlKTsKLQotICAg
IC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKLSAgICB2b2lkIHdpbGxJbnNlcnRET01O
b2RlKE5vZGUqLCBOb2RlKiBwYXJlbnQpOwotICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2Rl
Kik7Ci0gICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShOb2RlKik7Ci0gICAgdm9pZCBkaWRSZW1v
dmVET01Ob2RlKE5vZGUqKTsKLSAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsK
LSAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwotICAg
IHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoY29uc3QgU3RyaW5nJiBjYXRlZ29yeVR5
cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKLQotcHJpdmF0
ZToKLSAgICBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOwotCi0gICAgLy8gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2Fz
RW5hYmxlZCgpOwotICAgIHZpcnR1YWwgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCk7Ci0gICAg
dm9pZCBkaXNhYmxlKCk7Ci0KLSAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSog
dGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3JPYmpl
Y3QqIGRlc2NyaXB0aW9uKTsKLSAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKLSAgICBib29sIGhhc0JyZWFrcG9pbnQo
Tm9kZSosIGludCB0eXBlKTsKLSAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwotCi0gICAgdm9p
ZCBjbGVhcigpOwotCi0gICAgSW5zdHJ1bWVudGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdl
bnRzOwotICAgIEluc3BlY3RvclN0YXRlKiBtX2luc3BlY3RvclN0YXRlOwotICAgIEluc3BlY3Rv
ckRPTUFnZW50KiBtX2RvbUFnZW50OwotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVi
dWdnZXJBZ2VudDsKLSAgICBJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudDsKLSAgICBI
YXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVha3BvaW50czsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBFTkFCTEUoSU5TUEVDVE9SKQotCi0jZW5kaWYgLy8gIWRlZmluZWQoSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAppbmRleCA1YzM3YjI2Li41ZjIzYzVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0zOSw3ICszOSw2
IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCkBAIC0xMjMsNyArMTIyLDcgQEAgdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgICAgICBtX2luc3BlY3RvckFnZW50
LT5jb25zb2xlQWdlbnQoKSwKICAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSwK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICAgICAgbV9pbnNwZWN0b3JBZ2Vu
dC0+YnJvd3NlckRlYnVnZ2VyQWdlbnQoKSwKKyAgICAgICAgbV9pbnNwZWN0b3JBZ2VudC0+ZG9t
RGVidWdnZXJBZ2VudCgpLAogI2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAg
ICBtX2luc3BlY3RvckFnZW50LT5kb21TdG9yYWdlQWdlbnQoKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2U2YTk4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBA
IC0wLDAgKzEsMzg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJJbnN0cnVtZW50aW5n
QWdlbnRzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKworbmFt
ZXNwYWNlIHsKKworZW51bSBET01CcmVha3BvaW50VHlwZSB7CisgICAgU3VidHJlZU1vZGlmaWVk
ID0gMCwKKyAgICBBdHRyaWJ1dGVNb2RpZmllZCwKKyAgICBOb2RlUmVtb3ZlZCwKKyAgICBET01C
cmVha3BvaW50VHlwZXNDb3VudAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGRvbU5h
dGl2ZUJyZWFrcG9pbnRUeXBlID0gIkRPTSI7CitzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXZl
bnRMaXN0ZW5lck5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIkV2ZW50TGlzdGVuZXIiOworc3RhdGlj
IGNvbnN0IGNoYXIqIGNvbnN0IHhock5hdGl2ZUJyZWFrcG9pbnRUeXBlID0gIlhIUiI7CisKK2Nv
bnN0IHVpbnQzMl90IGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFzayA9ICgxIDw8IFN1
YnRyZWVNb2RpZmllZCk7Citjb25zdCBpbnQgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQg
PSAxNjsKKworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBET01EZWJ1Z2dl
ckFnZW50U3RhdGUgeworc3RhdGljIGNvbnN0IGNoYXIgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRz
W10gPSAiZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzIjsKK3N0YXRpYyBjb25zdCBjaGFyIHBhdXNl
T25BbGxYSFJzW10gPSAicGF1c2VPbkFsbFhIUnMiOworc3RhdGljIGNvbnN0IGNoYXIgeGhyQnJl
YWtwb2ludHNbXSA9ICJ4aHJCcmVha3BvaW50cyI7Cit9CisKK1Bhc3NPd25QdHI8SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudD4gSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNw
ZWN0b3JTdGF0ZSwgSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50LCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50LCBJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBkb21BZ2VudCwgZGVidWdnZXJBZ2VudCwg
aW5zcGVjdG9yQWdlbnQpKTsKK30KKworSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCwgSW5zcGVjdG9y
QWdlbnQqIGluc3BlY3RvckFnZW50KQorICAgIDogbV9pbnN0cnVtZW50aW5nQWdlbnRzKGluc3Ry
dW1lbnRpbmdBZ2VudHMpCisgICAgLCBtX2luc3BlY3RvclN0YXRlKGluc3BlY3RvclN0YXRlKQor
ICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKKyAgICAsIG1fZGVidWdnZXJBZ2VudChkZWJ1Z2dl
ckFnZW50KQorICAgICwgbV9pbnNwZWN0b3JBZ2VudChpbnNwZWN0b3JBZ2VudCkKK3sKKyAgICBt
X2RlYnVnZ2VyQWdlbnQtPnNldExpc3RlbmVyKHRoaXMpOworfQorCitJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50Ojp+SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpCit7CisgICAgbV9kZWJ1Z2dl
ckFnZW50LT5zZXRMaXN0ZW5lcigwKTsKKyAgICBBU1NFUlQoIW1faW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKTsKK30KKworLy8gQnJvd3NlciBkZWJ1Z2dl
ciBhZ2VudCBlbmFibGVkIG9ubHkgd2hlbiBKUyBkZWJ1Z2dlciBpcyBlbmFibGVkLgordm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlcldhc0VuYWJsZWQoKQoreworICAgIG1f
aW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCh0aGlzKTsK
K30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlcldhc0Rpc2FibGVk
KCkKK3sKKyAgICBkaXNhYmxlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGlzYWJsZSgpCit7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50KDApOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit7CisgICAgZGlzYWJsZSgpOworfQorCit2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCit7CisgICAg
bV9kb21CcmVha3BvaW50cy5jbGVhcigpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvciwgY29u
c3QgU3RyaW5nJiBldmVudE5hbWUpCit7CisgICAgaWYgKGV2ZW50TmFtZS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgKmVycm9yID0gIkV2ZW50IG5hbWUgaXMgZW1wdHkiOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnRzID0gbV9pbnNwZWN0b3JTdGF0ZS0+Z2V0T2JqZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0
ZTo6ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKTsKKyAgICBldmVudExpc3RlbmVyQnJlYWtwb2lu
dHMtPnNldEJvb2xlYW4oZXZlbnROYW1lLCB0cnVlKTsKKyAgICBtX2luc3BlY3RvclN0YXRlLT5z
ZXRPYmplY3QoRE9NRGVidWdnZXJBZ2VudFN0YXRlOjpldmVudExpc3RlbmVyQnJlYWtwb2ludHMs
IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSkKK3sKKyAgICBpZiAoZXZlbnROYW1lLmlzRW1wdHko
KSkgeworICAgICAgICAqZXJyb3IgPSAiRXZlbnQgbmFtZSBpcyBlbXB0eSI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudExpc3RlbmVy
QnJlYWtwb2ludHMgPSBtX2luc3BlY3RvclN0YXRlLT5nZXRPYmplY3QoRE9NRGVidWdnZXJBZ2Vu
dFN0YXRlOjpldmVudExpc3RlbmVyQnJlYWtwb2ludHMpOworICAgIGV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50cy0+cmVtb3ZlKGV2ZW50TmFtZSk7CisgICAgbV9pbnNwZWN0b3JTdGF0ZS0+c2V0T2Jq
ZWN0KERPTURlYnVnZ2VyQWdlbnRTdGF0ZTo6ZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLCBldmVu
dExpc3RlbmVyQnJlYWtwb2ludHMpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9kb21CcmVha3Bv
aW50cy5zaXplKCkpIHsKKyAgICAgICAgdWludDMyX3QgbWFzayA9IG1fZG9tQnJlYWtwb2ludHMu
Z2V0KEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUobm9kZSkpOworICAgICAgICB1
aW50MzJfdCBpbmhlcml0YWJsZVR5cGVzTWFzayA9IChtYXNrIHwgKG1hc2sgPj4gZG9tQnJlYWtw
b2ludERlcml2ZWRUeXBlU2hpZnQpKSAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5cGVzTWFz
azsKKyAgICAgICAgaWYgKGluaGVyaXRhYmxlVHlwZXNNYXNrKQorICAgICAgICAgICAgdXBkYXRl
U3VidHJlZUJyZWFrcG9pbnRzKG5vZGUsIGluaGVyaXRhYmxlVHlwZXNNYXNrLCB0cnVlKTsKKyAg
ICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9k
ZShOb2RlKiBub2RlKQoreworICAgIGlmIChtX2RvbUJyZWFrcG9pbnRzLnNpemUoKSkgeworICAg
ICAgICAvLyBSZW1vdmUgc3VidHJlZSBicmVha3BvaW50cy4KKyAgICAgICAgbV9kb21CcmVha3Bv
aW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgIFZlY3RvcjxOb2RlKj4gc3RhY2soMSwgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RDaGlsZChub2RlKSk7CisgICAgICAgIGRvIHsKKyAgICAg
ICAgICAgIE5vZGUqIG5vZGUgPSBzdGFjay5sYXN0KCk7CisgICAgICAgICAgICBzdGFjay5yZW1v
dmVMYXN0KCk7CisgICAgICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAg
ICAgIHN0YWNrLmFwcGVuZChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUp
KTsKKyAgICAgICAgICAgIHN0YWNrLmFwcGVuZChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0
U2libGluZyhub2RlKSk7CisgICAgICAgIH0gd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpOworICAg
IH0KK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHR5cGUpCit7CisgICAgTm9kZSogbm9kZSA9
IG1fZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgdWludDMyX3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKKyAgICBtX2RvbUJy
ZWFrcG9pbnRzLnNldChub2RlLCBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKSB8IHJvb3RCaXQp
OworICAgIGlmIChyb290Qml0ICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrKSB7
CisgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJz
dENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0
U2libGluZyhjaGlsZCkpCisgICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hp
bGQsIHJvb3RCaXQsIHRydWUpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50
IHR5cGUpCit7CisgICAgTm9kZSogbm9kZSA9IG1fZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQp
OworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdWludDMyX3Qgcm9vdEJp
dCA9IDEgPDwgdHlwZTsKKyAgICB1aW50MzJfdCBtYXNrID0gbV9kb21CcmVha3BvaW50cy5nZXQo
bm9kZSkgJiB+cm9vdEJpdDsKKyAgICBpZiAobWFzaykKKyAgICAgICAgbV9kb21CcmVha3BvaW50
cy5zZXQobm9kZSwgbWFzayk7CisgICAgZWxzZQorICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJl
bW92ZShub2RlKTsKKworICAgIGlmICgocm9vdEJpdCAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2lu
dFR5cGVzTWFzaykgJiYgIShtYXNrICYgKHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRU
eXBlU2hpZnQpKSkgeworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQorICAgICAgICAgICAgdXBkYXRlU3VidHJlZUJy
ZWFrcG9pbnRzKGNoaWxkLCByb290Qml0LCBmYWxzZSk7CisgICAgfQorfQorCit2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKE5vZGUqLCBOb2RlKiBwYXJl
bnQpCit7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVi
dWdnZXJBZ2VudDsKKyAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChoYXNCcmVha3BvaW50KHBhcmVudCwgU3VidHJlZU1vZGlmaWVkKSkgeworICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNy
ZWF0ZSgpOworICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KHBhcmVudCwgU3VidHJlZU1v
ZGlmaWVkLCB0cnVlLCBldmVudERhdGEuZ2V0KCkpOworICAgICAgICBldmVudERhdGEtPnNldFN0
cmluZygiYnJlYWtwb2ludFR5cGUiLCBkb21OYXRpdmVCcmVha3BvaW50VHlwZSk7CisgICAgICAg
IGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRpdmVCcmVha3BvaW50RGVidWdnZXJFdmVu
dFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50Ojp3aWxsUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQoreworICAgIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBtX2RlYnVnZ2VyQWdlbnQ7Cisg
ICAgaWYgKCFkZWJ1Z2dlckFnZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBOb2RlKiBwYXJl
bnROb2RlID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShub2RlKTsKKyAgICBp
ZiAoaGFzQnJlYWtwb2ludChub2RlLCBOb2RlUmVtb3ZlZCkpIHsKKyAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAg
ICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBOb2RlUmVtb3ZlZCwgZmFsc2UsIGV2
ZW50RGF0YS5nZXQoKSk7CisgICAgICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50
VHlwZSIsIGRvbU5hdGl2ZUJyZWFrcG9pbnRUeXBlKTsKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+
YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRh
LnJlbGVhc2UoKSk7CisgICAgfSBlbHNlIGlmIChwYXJlbnROb2RlICYmIGhhc0JyZWFrcG9pbnQo
cGFyZW50Tm9kZSwgU3VidHJlZU1vZGlmaWVkKSkgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBk
ZXNjcmlwdGlvbkZvckRPTUV2ZW50KG5vZGUsIFN1YnRyZWVNb2RpZmllZCwgZmFsc2UsIGV2ZW50
RGF0YS5nZXQoKSk7CisgICAgICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VHlw
ZSIsIGRvbU5hdGl2ZUJyZWFrcG9pbnRUeXBlKTsKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJl
YWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhLnJl
bGVhc2UoKSk7CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxNb2RpZnlET01BdHRyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IG1fZGVidWdnZXJBZ2VudDsKKyAgICBpZiAoIWRlYnVn
Z2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChoYXNCcmVha3BvaW50KGVsZW1l
bnQsIEF0dHJpYnV0ZU1vZGlmaWVkKSkgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBldmVudERhdGEgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgICAgICBkZXNjcmlw
dGlvbkZvckRPTUV2ZW50KGVsZW1lbnQsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnRE
YXRhLmdldCgpKTsKKyAgICAgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRUeXBl
IiwgZG9tTmF0aXZlQnJlYWtwb2ludFR5cGUpOworICAgICAgICBkZWJ1Z2dlckFnZW50LT5icmVh
a1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVudERhdGEucmVs
ZWFzZSgpKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVz
Y3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9v
bCBpbnNlcnRpb24sIEluc3BlY3Rvck9iamVjdCogZGVzY3JpcHRpb24pCit7CisgICAgQVNTRVJU
KGhhc0JyZWFrcG9pbnQodGFyZ2V0LCBicmVha3BvaW50VHlwZSkpOworCisgICAgTm9kZSogYnJl
YWtwb2ludE93bmVyID0gdGFyZ2V0OworICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBp
bmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKKyAgICAgICAgLy8gRm9yIGluaGVy
aXRhYmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2Ft
ZSBhcyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgorICAgICAgICAvLyBUYXJnZXQg
bm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZp
cnN0LgorICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0g
bV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUodGFyZ2V0KTsKKyAgICAgICAgZGVzY3JpcHRpb24tPnNl
dE9iamVjdCgidGFyZ2V0Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOworCisgICAgICAgIC8vIEZp
bmQgYnJlYWtwb2ludCBvd25lciBub2RlLgorICAgICAgICBpZiAoIWluc2VydGlvbikKKyAgICAg
ICAgICAgIGJyZWFrcG9pbnRPd25lciA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5v
ZGUodGFyZ2V0KTsKKyAgICAgICAgQVNTRVJUKGJyZWFrcG9pbnRPd25lcik7CisgICAgICAgIHdo
aWxlICghKG1fZG9tQnJlYWtwb2ludHMuZ2V0KGJyZWFrcG9pbnRPd25lcikgJiAoMSA8PCBicmVh
a3BvaW50VHlwZSkpKSB7CisgICAgICAgICAgICBicmVha3BvaW50T3duZXIgPSBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKGJyZWFrcG9pbnRPd25lcik7CisgICAgICAgICAgICBB
U1NFUlQoYnJlYWtwb2ludE93bmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChicmVha3Bv
aW50VHlwZSA9PSBTdWJ0cmVlTW9kaWZpZWQpCisgICAgICAgICAgICBkZXNjcmlwdGlvbi0+c2V0
Qm9vbGVhbigiaW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKKyAgICB9CisKKyAgICBpbnQgYnJlYWtw
b2ludE93bmVyTm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoYnJlYWtwb2ludE93bmVy
KTsKKyAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKKyAgICBkZXNjcmlwdGlvbi0+
c2V0TnVtYmVyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOworICAgIGRlc2NyaXB0
aW9uLT5zZXROdW1iZXIoInR5cGUiLCBicmVha3BvaW50VHlwZSk7Cit9CisKK2Jvb2wgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6aGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBpbnQgdHlwZSkK
K3sKKyAgICB1aW50MzJfdCByb290Qml0ID0gMSA8PCB0eXBlOworICAgIHVpbnQzMl90IGRlcml2
ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OworICAgIHJl
dHVybiBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKSAmIChyb290Qml0IHwgZGVyaXZlZEJpdCk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFr
cG9pbnRzKE5vZGUqIG5vZGUsIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNldCkKK3sKKyAgICB1
aW50MzJfdCBvbGRNYXNrID0gbV9kb21CcmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgdWludDMy
X3QgZGVyaXZlZE1hc2sgPSByb290TWFzayA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlm
dDsKKyAgICB1aW50MzJfdCBuZXdNYXNrID0gc2V0ID8gb2xkTWFzayB8IGRlcml2ZWRNYXNrIDog
b2xkTWFzayAmIH5kZXJpdmVkTWFzazsKKyAgICBpZiAobmV3TWFzaykKKyAgICAgICAgbV9kb21C
cmVha3BvaW50cy5zZXQobm9kZSwgbmV3TWFzayk7CisgICAgZWxzZQorICAgICAgICBtX2RvbUJy
ZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKworICAgIHVpbnQzMl90IG5ld1Jvb3RNYXNrID0gcm9v
dE1hc2sgJiB+bmV3TWFzazsKKyAgICBpZiAoIW5ld1Jvb3RNYXNrKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmlyc3RD
aGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyTmV4dFNp
YmxpbmcoY2hpbGQpKQorICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoY2hpbGQsIG5l
d1Jvb3RNYXNrLCBzZXQpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnBh
dXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBlLCBjb25z
dCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cykKK3sKKyAgICBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9kZWJ1Z2dlckFnZW50OworICAgIGlmICgh
ZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGZ1bGxFdmVudE5h
bWUgPSBtYWtlU3RyaW5nKGNhdGVnb3J5VHlwZSwgIjoiLCBldmVudE5hbWUpOworICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cyA9IG1faW5zcGVjdG9y
U3RhdGUtPmdldE9iamVjdChET01EZWJ1Z2dlckFnZW50U3RhdGU6OmV2ZW50TGlzdGVuZXJCcmVh
a3BvaW50cyk7CisgICAgaWYgKGV2ZW50TGlzdGVuZXJCcmVha3BvaW50cy0+ZmluZChmdWxsRXZl
bnROYW1lKSA9PSBldmVudExpc3RlbmVyQnJlYWtwb2ludHMtPmVuZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBldmVudERhdGEgPSBJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpOworICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJicmVha3BvaW50VHlw
ZSIsIGV2ZW50TGlzdGVuZXJOYXRpdmVCcmVha3BvaW50VHlwZSk7CisgICAgZXZlbnREYXRhLT5z
ZXRTdHJpbmcoImV2ZW50TmFtZSIsIGZ1bGxFdmVudE5hbWUpOworICAgIGlmIChzeW5jaHJvbm91
cykKKyAgICAgICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnRE
ZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhLnJlbGVhc2UoKSk7CisgICAgZWxzZQorICAgICAg
ICBkZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KE5hdGl2ZUJyZWFr
cG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhLnJlbGVhc2UoKSk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICh1cmwuaXNFbXB0eSgpKSB7CisgICAgICAg
IG1faW5zcGVjdG9yU3RhdGUtPnNldEJvb2xlYW4oRE9NRGVidWdnZXJBZ2VudFN0YXRlOjpwYXVz
ZU9uQWxsWEhScywgdHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiB4aHJCcmVha3BvaW50cyA9IG1faW5zcGVjdG9yU3RhdGUtPmdldE9i
amVjdChET01EZWJ1Z2dlckFnZW50U3RhdGU6OnhockJyZWFrcG9pbnRzKTsKKyAgICB4aHJCcmVh
a3BvaW50cy0+c2V0Qm9vbGVhbih1cmwsIHRydWUpOworICAgIG1faW5zcGVjdG9yU3RhdGUtPnNl
dE9iamVjdChET01EZWJ1Z2dlckFnZW50U3RhdGU6OnhockJyZWFrcG9pbnRzLCB4aHJCcmVha3Bv
aW50cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlWEhSQnJl
YWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICh1cmwu
aXNFbXB0eSgpKSB7CisgICAgICAgIG1faW5zcGVjdG9yU3RhdGUtPnNldEJvb2xlYW4oRE9NRGVi
dWdnZXJBZ2VudFN0YXRlOjpwYXVzZU9uQWxsWEhScywgZmFsc2UpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4geGhyQnJlYWtwb2ludHMgPSBt
X2luc3BlY3RvclN0YXRlLT5nZXRPYmplY3QoRE9NRGVidWdnZXJBZ2VudFN0YXRlOjp4aHJCcmVh
a3BvaW50cyk7CisgICAgeGhyQnJlYWtwb2ludHMtPnJlbW92ZSh1cmwpOworICAgIG1faW5zcGVj
dG9yU3RhdGUtPnNldE9iamVjdChET01EZWJ1Z2dlckFnZW50U3RhdGU6OnhockJyZWFrcG9pbnRz
LCB4aHJCcmVha3BvaW50cyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gbV9kZWJ1Z2dlckFnZW50OworICAgIGlm
ICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIGJyZWFrcG9p
bnRVUkw7CisgICAgaWYgKG1faW5zcGVjdG9yU3RhdGUtPmdldEJvb2xlYW4oRE9NRGVidWdnZXJB
Z2VudFN0YXRlOjpwYXVzZU9uQWxsWEhScykpCisgICAgICAgIGJyZWFrcG9pbnRVUkwgPSAiIjsK
KyAgICBlbHNlIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4geGhyQnJlYWtwb2lu
dHMgPSBtX2luc3BlY3RvclN0YXRlLT5nZXRPYmplY3QoRE9NRGVidWdnZXJBZ2VudFN0YXRlOjp4
aHJCcmVha3BvaW50cyk7CisgICAgICAgIGZvciAoSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBp
dCA9IHhockJyZWFrcG9pbnRzLT5iZWdpbigpOyBpdCAhPSB4aHJCcmVha3BvaW50cy0+ZW5kKCk7
ICsraXQpIHsKKyAgICAgICAgICAgIGlmICh1cmwuY29udGFpbnMoaXQtPmZpcnN0KSkgeworICAg
ICAgICAgICAgICAgIGJyZWFrcG9pbnRVUkwgPSBpdC0+Zmlyc3Q7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYnJlYWtw
b2ludFVSTC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBldmVu
dERhdGEtPnNldFN0cmluZygiYnJlYWtwb2ludFR5cGUiLCB4aHJOYXRpdmVCcmVha3BvaW50VHlw
ZSk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImJyZWFrcG9pbnRVUkwiLCBicmVha3BvaW50
VVJMKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKKyAgICBkZWJ1Z2dl
ckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBl
dmVudERhdGEucmVsZWFzZSgpKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpjbGVhcigpCit7CisgICAgbV9kb21CcmVha3BvaW50cy5jbGVhcigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjRjZTkzNWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50X2gKKyNkZWZpbmUgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudF9oCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BF
Q1RPUikKKworI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBJbnNwZWN0b3JBZ2VudDsKK2NsYXNz
IEluc3BlY3RvckRPTUFnZW50OworY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKK2NsYXNz
IEluc3BlY3RvckZyb250ZW5kOworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgSW5zcGVj
dG9yU3RhdGU7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOworY2xhc3MgTm9kZTsKKwordHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzT3duUHRyPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+IGNyZWF0ZShJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yU3RhdGUqLCBJbnNwZWN0b3JET01BZ2VudCosIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqLCBJbnNwZWN0b3JBZ2VudCopOworCisgICAgdmlydHVhbCB+
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpOworCisgICAgdm9pZCBjbGVhckZyb250ZW5kKCk7
CisKKyAgICAvLyBET01EZWJ1Z2dlciBBUEkgZm9yIEluc3BlY3RvckZyb250ZW5kCisgICAgdm9p
ZCBzZXRYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAg
IHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJs
KTsKKyAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBldmVudE5hbWUpOworICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7CisgICAgdm9pZCBz
ZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgaW50IHR5cGUpOworICAg
IHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGludCB0
eXBlKTsKKworICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKKyAgICB2b2lkIHdp
bGxJbnNlcnRET01Ob2RlKE5vZGUqLCBOb2RlKiBwYXJlbnQpOworICAgIHZvaWQgZGlkSW5zZXJ0
RE9NTm9kZShOb2RlKik7CisgICAgdm9pZCB3aWxsUmVtb3ZlRE9NTm9kZShOb2RlKik7CisgICAg
dm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRy
KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5n
JiB1cmwpOworICAgIHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoY29uc3QgU3RyaW5n
JiBjYXRlZ29yeVR5cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3Vz
KTsKKworcHJpdmF0ZToKKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCosIEluc3BlY3RvckFnZW50Kik7CisKKyAgICAvLyBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpMaXN0ZW5lciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgZGVi
dWdnZXJXYXNFbmFibGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQo
KTsKKyAgICB2b2lkIGRpc2FibGUoKTsKKworICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JET01FdmVu
dChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEluc3Bl
Y3Rvck9iamVjdCogZGVzY3JpcHRpb24pOworICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOworICAgIGJvb2wgaGFzQnJl
YWtwb2ludChOb2RlKiwgaW50IHR5cGUpOworICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CisK
KyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1l
bnRpbmdBZ2VudHM7CisgICAgSW5zcGVjdG9yU3RhdGUqIG1faW5zcGVjdG9yU3RhdGU7CisgICAg
SW5zcGVjdG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogbV9kZWJ1Z2dlckFnZW50OworICAgIEluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50
OworICAgIEhhc2hNYXA8Tm9kZSosIHVpbnQzMl90PiBtX2RvbUJyZWFrcG9pbnRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyAhZGVmaW5lZChJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGIwMmMxMzcuLjJhZTk5NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCkBAIC00MCw3ICs0MCw3IEBACiAjaW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnNvbGVBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCIKQEAgLTEwNyw4ICsxMDcsOCBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdGVkUGFnZURlc3Ryb3llZEltcGwoSW5z
cGVjdG9yQWdlbnQqIGluc3BlYwogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJ
bnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIE5vZGUqIG5v
ZGUsIE5vZGUqIHBhcmVudCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFnZW50
ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPndpbGxJbnNl
cnRET01Ob2RlKG5vZGUsIHBhcmVudCk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50
cygpLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdl
bnQtPndpbGxJbnNlcnRET01Ob2RlKG5vZGUsIHBhcmVudCk7CiAjZW5kaWYKIH0KIApAQCAtMTE3
LDI0ICsxMTcsMjQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERP
TU5vZGVJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2UKICAgICBpZiAoSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmRvbUFnZW50KCkpCiAgICAgICAg
IGRvbUFnZW50LT5kaWRJbnNlcnRET01Ob2RlKG5vZGUpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCogYnJvd3Nl
ckRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5p
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBicm93c2VyRGVidWdnZXJB
Z2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5n
QWdlbnRzKCktPmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgZG9tRGVidWdn
ZXJBZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKICNlbmRpZgogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckFnZW50
KiBpbnNwZWN0b3JBZ2VudCwgTm9kZSogbm9kZSkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKLSAgICBpZiAoSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJE
ZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdl
bnQtPndpbGxSZW1vdmVET01Ob2RlKG5vZGUpOworICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdB
Z2VudHMoKS0+aW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBkb21EZWJ1Z2dl
ckFnZW50LT53aWxsUmVtb3ZlRE9NTm9kZShub2RlKTsKICNlbmRpZgogfQogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQWdlbnQq
IGluc3BlY3RvckFnZW50LCBOb2RlKiBub2RlKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIGlmIChJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCogYnJvd3NlckRl
YnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBicm93c2VyRGVidWdnZXJBZ2Vu
dC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKKyAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCogZG9tRGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdl
bnRzKCktPmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgZG9tRGVidWdnZXJB
Z2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShub2RlKTsKICNlbmRpZgogICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+ZG9tQWdlbnQoKSkKICAgICAgICAg
ZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7CkBAIC0xNDMsOCArMTQzLDggQEAgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3Rv
ckFnZW50KiBpbnNwZWN0b3JBZ2UKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQWdlbnQqIGluc3BlY3RvckFnZW50LCBFbGVtZW50
KiBlbGVtZW50KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmIChJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCogYnJvd3NlckRlYnVnZ2VyQWdlbnQgPSBpbnNw
ZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JCcm93c2VyRGVidWdn
ZXJBZ2VudCgpKQotICAgICAgICBicm93c2VyRGVidWdnZXJBZ2VudC0+d2lsbE1vZGlmeURPTUF0
dHIoZWxlbWVudCk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVn
Z2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxNb2Rp
ZnlET01BdHRyKGVsZW1lbnQpOwogI2VuZGlmCiB9CiAKQEAgLTE4Miw4ICsxODIsOCBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNw
ZWN0b3JBZ2VudCogaW5zcGVjdAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxT
ZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckFnZW50KiBpbnNwZWN0b3JBZ2VudCwgY29u
c3QgU3RyaW5nJiB1cmwpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBicm93c2VyRGVidWdnZXJBZ2VudCA9
IGluc3BlY3RvckFnZW50LT5pbnN0cnVtZW50aW5nQWdlbnRzKCktPmluc3BlY3RvckJyb3dzZXJE
ZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGJyb3dzZXJEZWJ1Z2dlckFnZW50LT53aWxsU2VuZFhN
TEh0dHBSZXF1ZXN0KHVybCk7CisgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRv
bURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5p
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndp
bGxTZW5kWE1MSHR0cFJlcXVlc3QodXJsKTsKICNlbmRpZgogfQogCkBAIC03NzUsOCArNzc1LDgg
QEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kKEluc3BlY3RvckFn
ZW50KiBpbnNwZWN0b3JBZ2VudCkKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwYXVz
ZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChJbnNwZWN0b3JBZ2VudCogaW5zcGVjdG9yQWdlbnQsIGNv
bnN0IFN0cmluZyYgY2F0ZWdvcnlUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBz
eW5jaHJvbm91cykKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAo
SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQqIGJyb3dzZXJEZWJ1Z2dlckFnZW50ID0gaW5z
cGVjdG9yQWdlbnQtPmluc3RydW1lbnRpbmdBZ2VudHMoKS0+aW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQoKSkKLSAgICAgICAgYnJvd3NlckRlYnVnZ2VyQWdlbnQtPnBhdXNlT25OYXRpdmVF
dmVudElmTmVlZGVkKGNhdGVnb3J5VHlwZSwgZXZlbnROYW1lLCBzeW5jaHJvbm91cyk7CisgICAg
aWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0
b3JBZ2VudC0+aW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPnBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVk
KGNhdGVnb3J5VHlwZSwgZXZlbnROYW1lLCBzeW5jaHJvbm91cyk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKaW5kZXggMzE1
MDZmMS4uZDFiMDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Ry
dW1lbnRpbmdBZ2VudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEluc3BlY3RvckFnZW50OwogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwotY2xhc3MgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQ7CitjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9y
Q1NTQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb25zb2xlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JE
T01BZ2VudDsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgICAgICwgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KDAp
Ci0gICAgICAgICwgbV9pbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgwKQorICAgICAgICAs
IG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgwKQogICAgICAgICAsIG1faW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudCgwKQogI2VuZGlmCiAjaWYgRU5BQkxFKFdPUktFUlMpCkBAIC0xMjUsOCArMTI1
LDggQEAgcHVibGljOgogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQ7IH0KICAg
ICB2b2lkIHNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
YWdlbnQpIHsgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KIAotICAgIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KiBpbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ7IH0KLSAgICB2
b2lkIHNldEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KEluc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50ID0gYWdl
bnQ7IH0KKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBpbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OyB9Cisg
ICAgdm9pZCBzZXRJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCA9IGFnZW50OyB9CiAK
ICAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBpbnNwZWN0b3JQcm9maWxlckFnZW50KCkgY29u
c3QgeyByZXR1cm4gbV9pbnNwZWN0b3JQcm9maWxlckFnZW50OyB9CiAgICAgdm9pZCBzZXRJbnNw
ZWN0b3JQcm9maWxlckFnZW50KEluc3BlY3RvclByb2ZpbGVyQWdlbnQqIGFnZW50KSB7IG1faW5z
cGVjdG9yUHJvZmlsZXJBZ2VudCA9IGFnZW50OyB9CkBAIC0xNTYsNyArMTU2LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKLSAgICBJbnNwZWN0b3JC
cm93c2VyRGVidWdnZXJBZ2VudCogbV9pbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDsKKyAg
ICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7
CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogbV9pbnNwZWN0b3JQcm9maWxlckFnZW50Owog
I2VuZGlmCiAjaWYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZGJjYjg3Ni4uNjIz
ZGVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCog
Y2hhbm5lCiAgICAgICAgIDAsIC8vIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudAogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgICAgIDAsIC8vIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50CisgICAgICAgIDAsIC8vIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQKICNlbmRpZgogICAgICAgICAwLCAvLyBJbnNwZWN0b3JDU1NBZ2VudAogICAgICAg
ICAwLCAvLyBJbnNwZWN0b3JDb25zb2xlQWdlbnQK
</data>
<flag name="review"
          id="85372"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>