<?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>52615</bug_id>
          
          <creation_ts>2011-01-18 01:14:47 -0800</creation_ts>
          <short_desc>Web Inspector: set breakpoints by line:column</short_desc>
          <delta_ts>2011-01-24 06:10:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335697</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-18 01:14:47 -0800</bug_when>
    <thetext>Web Inspector: set breakpoints by line:column.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335698</commentid>
    <comment_count>1</comment_count>
      <attachid>79251</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-18 01:15:41 -0800</bug_when>
    <thetext>Created attachment 79251
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335704</commentid>
    <comment_count>2</comment_count>
      <attachid>79254</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-18 01:28:52 -0800</bug_when>
    <thetext>Created attachment 79254
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338945</commentid>
    <comment_count>3</comment_count>
      <attachid>79254</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-01-24 04:36:52 -0800</bug_when>
    <thetext>Comment on attachment 79254
Patch.

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

Please address the comments before landing.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:153
&gt; +    *actualColumnNumber = 1;

Please file a bug against JSC and add FIXME comment here.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.h:138
&gt; +    typedef HashMap&lt;long, ScriptBreakpoint&gt; ScriptBreakpoints;

ScriptBreakpoints -&gt; LineToScriptBreakpointMap

&gt; Source/WebCore/bindings/js/ScriptDebugServer.h:139
&gt; +    typedef HashMap&lt;intptr_t, ScriptBreakpoints&gt; BreakpointsMap;

BreakpointsMap -&gt; SourceIdToBreakpointsMap, I&apos;d also recommend renaming corresponding fields as m_breakpoints sounds too general.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.h:100
&gt; +    typedef HashMap&lt;Location, ScriptBreakpoint&gt; ScriptBreakpoints;

ScriptBreakpoints -&gt; LocationToBreakpointMap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338965</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 05:56:28 -0800</bug_when>
    <thetext>Committed r76509: &lt;http://trac.webkit.org/changeset/76509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338968</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-24 06:10:47 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76509 might have broken Leopard Intel Release (Build) and Leopard Intel Debug (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79251</attachid>
            <date>2011-01-18 01:15:41 -0800</date>
            <delta_ts>2011-01-18 01:28:52 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36675</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODA1MGI0OC4uZmI0YzAyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNzUsNyArMTE3NSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCi0gICAgaW5zcGVj
dG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5j
cHAKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAogICAgIGluc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1ODE3Zi4uMDczMGQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTAxLTE4ICBQYXZlbCBQb2Rpdmlsb3YgIDxw
b2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNldCBicmVha3BvaW50cyBieSBsaW5lOmNv
bHVtbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUy
NjE1CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRC
cmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVh
a3BvaW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U3RpY2t5QnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3RvcmVCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
cnNlU291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnJlYWtwb2ludDo6U2NyaXB0QnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9CcmVha3BvaW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCB1cmwp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5jb250aW51ZVRvTGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2Jy
ZWFrcG9pbnRTZXRPbkJhY2tlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlz
cGF0Y2hlci5wcm90b3R5cGUuYnJlYWtwb2ludFJlc29sdmVkKToKKwogMjAxMS0wMS0xNyAgTWFj
aWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
biBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVmYmJiNzAuLmY0MDUyMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTk0LDcgKzE5OTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRCcmVha3BvaW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsRnJhbWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZy
YW1lLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGY0YTIzOWYuLjhiZDc1NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTIwNDUsNyArMjA0NSw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmgnLAot
ICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L1NjcmlwdEFyZ3VtZW50cy5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQzN2NkYzcuLmY4MzYxMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC0xMDY2LDcgKzEwNjYsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwIFwKICAgICBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCi0gICAgaW5zcGVjdG9y
L1NjcmlwdEJyZWFrcG9pbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNw
cCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAgXAogICAgIGluc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMzk2NzFhMC4uYjY2MDFjMiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MjAyLDEwICs2NTIwMiw2
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxTY3JpcHRCcmVha3BvaW50LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEJyZWFrcG9pbnQuaCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZWQ4NmM2Ny4uMzY3ZDcyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ2LDcgKzY0Niw2
IEBACiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZC
RTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsgfTsK
IAkJMUNGNkJFMTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y2QkUxMzBF
OUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJMUNG
QUUzMjMwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0Qg
LyogbGlib2JqYy5keWxpYiAqLzsgfTsKLQkJMjAwQjE5MDkxMUMyNzdEOTAwRENDRDNBIC8qIFNj
cmlwdEJyZWFrcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjAwQjE5MDgxMUMyNzdEOTAwRENDRDNBIC8qIFNjcmlwdEJyZWFrcG9pbnQuY3Bw
ICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
ICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
MEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87
IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1
MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjk3MCw3ICs2OTY5LDYgQEAKIAkJMUNGNkJFMTIw
RTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAv
KiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHls
aWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTIwMEIxOTA4MTFDMjc3RDkwMERD
Q0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRX
cmFwcGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk4OSw3ICsxMjk4Nyw2IEBA
CiAJCQkJQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgKi8s
CiAJCQkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8s
CiAJCQkJRjM5QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAot
CQkJCTIwMEIxOTA4MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCAqLywK
IAkJCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLAog
CQkJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAog
CQkJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKQEAg
LTI0NTMzLDcgKzI0NTMwLDYgQEAKIAkJCQlCQ0VDMDFCRDBDMjc0REFDMDA5RjRFQzkgLyogU2Ny
ZWVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAvKiBT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM5QkU5NUIx
MjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNkU3NUNDMEVERjkwQzcwMDM2MEUxRCAv
KiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RTc1QkYwRURGOEZE
NzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA5ODQ1
Mjc3Li40NjlkMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC0xMzgsMTkgKzEzOCwyMCBAQCBib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpoYXNMaXN0ZW5lcnNJbnRlcmVzdGVkSW5QYWdlKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJu
IG1fcGFnZUxpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKTsKIH0KIAotU3RyaW5nIFNjcmlwdERl
YnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQsIHVuc2ln
bmVkKiBhY3R1YWxMaW5lTnVtYmVyKQorU3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNj
cmlwdEJyZWFrcG9pbnQsIGxvbmcqIGFjdHVhbExpbmVOdW1iZXIsIGxvbmcqIGFjdHVhbENvbHVt
bk51bWJlcikKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQ
dHIoKTsKICAgICBpZiAoIXNvdXJjZUlEVmFsdWUpCiAgICAgICAgIHJldHVybiAiIjsKICAgICBC
cmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX2JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURW
YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fYnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0g
bV9icmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgU291cmNlQnJlYWtwb2ludHMoKSkuZmly
c3Q7Ci0gICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMobGluZU51bWJlcikpCisgICAgICAgIGl0
ID0gbV9icmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgU2NyaXB0QnJlYWtwb2ludHMoKSku
Zmlyc3Q7CisgICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyKSkKICAgICAgICAgcmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0KGxpbmVOdW1i
ZXIsIFNjcmlwdEJyZWFrcG9pbnQoZW5hYmxlZCwgY29uZGl0aW9uKSk7Ci0gICAgKmFjdHVhbExp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHNvdXJjZUlELCAi
OiIsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKKyAgICBpdC0+c2Vjb25kLnNldChzY3Jp
cHRCcmVha3BvaW50LmxpbmVOdW1iZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgICphY3R1YWxM
aW5lTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyOworICAgICphY3R1YWxDb2x1
bW5OdW1iZXIgPSAxOworICAgIHJldHVybiBtYWtlU3RyaW5nKHNvdXJjZUlELCAiOiIsIFN0cmlu
Zzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcikpOwogfQogCiB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElk
KQpAQCAtMTc5LDcgKzE4MCw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9p
bnQoaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpIGNvCiAgICAgQnJlYWtw
b2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9icmVha3BvaW50cy5maW5kKHNvdXJjZUlE
KTsKICAgICBpZiAoaXQgPT0gbV9icmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIFNvdXJjZUJyZWFrcG9pbnRzOjpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQt
PnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOworICAgIFNjcmlwdEJyZWFrcG9pbnRzOjpjb25zdF9p
dGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwogICAgIGlmIChi
cmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkgfHwgIWJyZWFrSXQtPnNlY29uZC5lbmFibGVkKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDgxY2Q5YWMuLmRhMGVlNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFn
ZSopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBhZ2Uq
KTsKIAotICAgIFN0cmluZyBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQs
IHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKTsKKyAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiwgbG9uZyogYWN0
dWFsTGluZU51bWJlciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAgICB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogICAgIHZvaWQgY2xlYXJC
cmVha3BvaW50cygpOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCBhY3Rp
dmF0ZWQpOwpAQCAtMTM1LDcgKzEzNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVM
aXN0ZW5lcihQYWdlKik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0
Kj4gUGFnZUxpc3RlbmVyc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFNvdXJj
ZUJyZWFrcG9pbnRzPiBCcmVha3BvaW50c01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywg
U2NyaXB0QnJlYWtwb2ludD4gU2NyaXB0QnJlYWtwb2ludHM7CisgICAgdHlwZWRlZiBIYXNoTWFw
PGludHB0cl90LCBTY3JpcHRCcmVha3BvaW50cz4gQnJlYWtwb2ludHNNYXA7CiAKICAgICBQYWdl
TGlzdGVuZXJzTWFwIG1fcGFnZUxpc3RlbmVyc01hcDsKICAgICBib29sIG1fY2FsbGluZ0xpc3Rl
bmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2Ny
aXB0LmpzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5k
ZXggOGM5ZDk4ZS4uYzUxZmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanMKQEAgLTkxLDggKzkxLDkgQEAgRGVidWdnZXJTY3JpcHQuX2Zvcm1hdFNj
cmlwdCA9IGZ1bmN0aW9uKHNjcmlwdCkKIAogRGVidWdnZXJTY3JpcHQuc2V0QnJlYWtwb2ludCA9
IGZ1bmN0aW9uKGV4ZWNTdGF0ZSwgYXJncykKIHsKLSAgICBhcmdzLmxpbmVOdW1iZXIgPSBEZWJ1
Z2dlclNjcmlwdC5fd2Via2l0VG9WOExpbmVOdW1iZXIoYXJncy5saW5lTnVtYmVyKTsKLSAgICB2
YXIgYnJlYWtJZCA9IERlYnVnLnNldFNjcmlwdEJyZWFrUG9pbnRCeUlkKGFyZ3Muc2NyaXB0SWQs
IGFyZ3MubGluZU51bWJlciwgMCAvKiBjb2x1bW4gKi8sIGFyZ3MuY29uZGl0aW9uKTsKKyAgICB2
YXIgbGluZU51bWJlciA9IERlYnVnZ2VyU2NyaXB0Ll93ZWJraXRUb1Y4TGluZU51bWJlcihhcmdz
LmxpbmVOdW1iZXIpOworICAgIHZhciBjb2x1bW5OdW1iZXIgPSBEZWJ1Z2dlclNjcmlwdC5fd2Vi
a2l0VG9WOExpbmVOdW1iZXIoYXJncy5jb2x1bW5OdW1iZXIpOworICAgIHZhciBicmVha0lkID0g
RGVidWcuc2V0U2NyaXB0QnJlYWtQb2ludEJ5SWQoYXJncy5zY3JpcHRJZCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBhcmdzLmNvbmRpdGlvbik7CiAgICAgaWYgKCFhcmdzLmVuYWJsZWQpCiAg
ICAgICAgIERlYnVnLmRpc2FibGVTY3JpcHRCcmVha1BvaW50KGJyZWFrSWQpOwogCkBAIC0xMDAs
NiArMTAxLDcgQEAgRGVidWdnZXJTY3JpcHQuc2V0QnJlYWtwb2ludCA9IGZ1bmN0aW9uKGV4ZWNT
dGF0ZSwgYXJncykKICAgICBpZiAoIWxvY2F0aW9ucy5sZW5ndGgpCiAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7CiAgICAgYXJncy5saW5lTnVtYmVyID0gRGVidWdnZXJTY3JpcHQuX3Y4VG9XZWJr
aXRMaW5lTnVtYmVyKGxvY2F0aW9uc1swXS5saW5lKTsKKyAgICBhcmdzLmNvbHVtbk51bWJlciA9
IERlYnVnZ2VyU2NyaXB0Ll92OFRvV2Via2l0TGluZU51bWJlcihsb2NhdGlvbnNbMF0uY29sdW1u
KTsKICAgICByZXR1cm4gYnJlYWtJZC50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMWM3MGEwZS4uOTdj
NTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92
ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWdlCiAgICAg
Ly8gRklYTUU6IFJlbW92ZSBhbGwgYnJlYWtwb2ludHMgc2V0IGJ5IHRoZSBhZ2VudC4KIH0KIAot
U3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29s
IGVuYWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKQorU3RyaW5nIFNjcmlwdERlYnVn
U2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQsIGxvbmcqIGFjdHVhbExpbmVOdW1iZXIsIGxv
bmcqIGFjdHVhbENvbHVtbk51bWJlcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAg
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQgPSB2ODo6RGVidWc6Okdl
dERlYnVnQ29udGV4dCgpOwpAQCAtMTUxLDE1ICsxNTEsMTcgQEAgU3RyaW5nIFNjcmlwdERlYnVn
U2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxp
bmVOdW0KIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBhcmdzID0gdjg6Ok9iamVjdDo6TmV3
KCk7CiAgICAgYXJncy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic2NyaXB0SWQiKSwgdjhTdHJpbmco
c291cmNlSUQpKTsKLSAgICBhcmdzLT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaW5lTnVtYmVyIiks
IHY4OjpJbnRlZ2VyOjpOZXcobGluZU51bWJlcikpOwotICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5n
OjpOZXcoImNvbmRpdGlvbiIpLCB2OFN0cmluZyhjb25kaXRpb24pKTsKLSAgICBhcmdzLT5TZXQo
djg6OlN0cmluZzo6TmV3KCJlbmFibGVkIiksIHY4OjpCb29sZWFuOjpOZXcoZW5hYmxlZCkpOwor
ICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSwgdjg6OkludGVnZXI6
Ok5ldyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpKTsKKyAgICBhcmdzLT5TZXQodjg6OlN0
cmluZzo6TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhzY3JpcHRCcmVha3Bv
aW50LmNvbHVtbk51bWJlcikpOworICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5nOjpOZXcoImNvbmRp
dGlvbiIpLCB2OFN0cmluZyhzY3JpcHRCcmVha3BvaW50LmNvbmRpdGlvbikpOworICAgIGFyZ3Mt
PlNldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWQiKSwgdjg6OkJvb2xlYW46Ok5ldyhzY3JpcHRC
cmVha3BvaW50LmVuYWJsZWQpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRC
cmVha3BvaW50RnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzZXRCcmVha3BvaW50IikpKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtwb2ludElkID0gdjg6OkRlYnVnOjpDYWxs
KHNldEJyZWFrcG9pbnRGdW5jdGlvbiwgYXJncyk7CiAgICAgaWYgKCFicmVha3BvaW50SWQtPklz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiAiIjsKICAgICAqYWN0dWFsTGluZU51bWJlciA9IGFy
Z3MtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSktPkludDMyVmFsdWUoKTsKKyAg
ICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gYXJncy0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY29sdW1u
TnVtYmVyIikpLT5JbnQzMlZhbHVlKCk7CiAgICAgcmV0dXJuIHY4U3RyaW5nVG9XZWJDb3JlU3Ry
aW5nKGJyZWFrcG9pbnRJZC0+VG9TdHJpbmcoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDQwZGQ1ZmMuLjkzZjBjYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xp
c3RlbmVyKiwgUGFnZSopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciosIFBhZ2UqKTsKIAotICAgIFN0cmluZyBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYg
c291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBi
b29sIGVuYWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKTsKKyAgICBTdHJpbmcgc2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50
JiwgbG9uZyogYWN0dWFsTGluZU51bWJlciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAg
ICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogICAg
IHZvaWQgY2xlYXJCcmVha3BvaW50cygpOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0
ZWQoYm9vbCBhY3RpdmF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApp
bmRleCA2YzJjYzJlLi4yYzBkZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbApAQCAtMjM1LDcgKzIzNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1E
ZWJ1Z2dlcl0gdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAgICAgICAgIFtkb21haW49RGVi
dWdnZXJdIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAKLSAgICAgICAgW2RvbWFpbj1E
ZWJ1Z2dlcl0gdm9pZCBzZXRCcmVha3BvaW50KGluIFN0cmluZyBzb3VyY2VJRCwgaW4gdW5zaWdu
ZWQgaW50IGxpbmVOdW1iZXIsIGluIFN0cmluZyBjb25kaXRpb24sIGluIGJvb2xlYW4gZW5hYmxl
ZCwgb3V0IFN0cmluZyBicmVha3BvaW50SWQsIG91dCB1bnNpZ25lZCBpbnQgYWN0dWFsTGluZU51
bWJlcik7CisgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc2V0QnJlYWtwb2ludChpbiBP
YmplY3QgYnJlYWtwb2ludCwgb3V0IFN0cmluZyBicmVha3BvaW50SWQsIG91dCBsb25nIGFjdHVh
bExpbmVOdW1iZXIsIG91dCBsb25nIGFjdHVhbENvbHVtbk51bWJlcik7CiAgICAgICAgIFtkb21h
aW49RGVidWdnZXJdIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChpbiBTdHJpbmcgYnJlYWtwb2ludElk
KTsKIAogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBzZXRET01CcmVha3Bv
aW50KGluIGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBlZGl0U2NyaXB0U291
cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFu
IHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1lcyk7CiAg
ICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBz
b3VyY2VJRCwgb3V0IFN0cmluZyBzY3JpcHRTb3VyY2UpOwogCi0gICAgICAgIFtub3RpZnksIGRv
bWFpbj1EZWJ1Z2dlcl0gdm9pZCBicmVha3BvaW50UmVzb2x2ZWQob3V0IFN0cmluZyBicmVha3Bv
aW50SWQsIG91dCBTdHJpbmcgc291cmNlSUQsIG91dCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwg
b3V0IFN0cmluZyBjb25kaXRpb24sIG91dCBib29sZWFuIGVuYWJsZWQsIG91dCB1bnNpZ25lZCBp
bnQgb3JpZ2luYWxMaW5lTnVtYmVyKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2Vy
XSB2b2lkIGJyZWFrcG9pbnRSZXNvbHZlZChvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IE9i
amVjdCBicmVha3BvaW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1dPUktFUlMpICYmIEVOQUJM
RV9XT1JLRVJTCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkaWRDcmVh
dGVXb3JrZXIob3V0IGxvbmcgaWQsIG91dCBTdHJpbmcgdXJsLCBvdXQgYm9vbGVhbiBpc1NoYXJl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggNWExMzliNi4uMmUzOTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODMsNiArODMsNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0xMTQ2LDEwICsxMTQ3LDEzIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZVN0aWNreUJyZWFrcG9pbnQoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJyCiAgICAgICAgIGRvdWJsZSBsaW5lTnVtYmVyOwogICAgICAg
ICBpZiAoIWNvbmRpdGlvbi0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgJmxpbmVOdW1iZXIpKQog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkb3VibGUgY29sdW1uTnVtYmVyOworICAgICAg
ICBpZiAoIWNvbmRpdGlvbi0+Z2V0TnVtYmVyKCJjb2x1bW5OdW1iZXIiLCAmY29sdW1uTnVtYmVy
KSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25kaXRp
b247CiAgICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRTdHJpbmcoImNvbmRpdGlvbiIsICZqYXZh
U2NyaXB0Q29uZGl0aW9uKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5zZXRTdGlja3lCcmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxp
bmVOdW1iZXIpLCBqYXZhU2NyaXB0Q29uZGl0aW9uLCBlbmFibGVkKTsKKyAgICAgICAgbV9kZWJ1
Z2dlckFnZW50LT5zZXRTdGlja3lCcmVha3BvaW50KHVybCwgU2NyaXB0QnJlYWtwb2ludChsb25n
KGxpbmVOdW1iZXIpLCBsb25nKGNvbHVtbk51bWJlciksIGphdmFTY3JpcHRDb25kaXRpb24sIGVu
YWJsZWQpKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0geGhyQnJlYWtwb2ludFR5cGUgJiYgbV9i
cm93c2VyRGVidWdnZXJBZ2VudCkgewogICAgICAgICBpZiAoIWVuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggODJjMjUwYS4uMTU5MjYzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzksMjQg
Kzc5LDQwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzKCkKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U3RpY2t5QnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0U3RpY2t5QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU2NyaXB0QnJlYWtw
b2ludCYgYnJlYWtwb2ludCkKIHsKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0QnJlYWtwb2lu
dHM+OjppdGVyYXRvciBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuZmluZCh1cmwpOwogICAgIGlm
IChpdCA9PSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc3RpY2t5
QnJlYWtwb2ludHMuc2V0KHVybCwgU2NyaXB0QnJlYWtwb2ludHMoKSkuZmlyc3Q7Ci0gICAgaXQt
PnNlY29uZC5zZXQobGluZU51bWJlciwgQnJlYWtwb2ludChjb25kaXRpb24sIGVuYWJsZWQpKTsK
KyAgICBpdC0+c2Vjb25kLnNldChMb2NhdGlvbihicmVha3BvaW50LmxpbmVOdW1iZXIsIGJyZWFr
cG9pbnQuY29sdW1uTnVtYmVyKSwgYnJlYWtwb2ludCk7CiAKICAgICBVUkxUb1NvdXJjZUlEc01h
cDo6aXRlcmF0b3IgdXJsVG9Tb3VyY2VJRHNJdGVyYXRvciA9IG1fdXJsVG9Tb3VyY2VJRHMuZmlu
ZCh1cmwpOwogICAgIGlmICh1cmxUb1NvdXJjZUlEc0l0ZXJhdG9yID09IG1fdXJsVG9Tb3VyY2VJ
RHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc291
cmNlSURzID0gdXJsVG9Tb3VyY2VJRHNJdGVyYXRvci0+c2Vjb25kOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc291cmNlSURzLnNpemUoKTsgKytpKQotICAgICAgICByZXN0b3JlQnJlYWtw
b2ludChzb3VyY2VJRHNbaV0sIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CisgICAg
ICAgIHJlc3RvcmVCcmVha3BvaW50KHNvdXJjZUlEc1tpXSwgYnJlYWtwb2ludCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9v
bCBlbmFibGVkLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgdW5zaWduZWQgaW50KiBhY3R1YWxMaW5l
TnVtYmVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50LCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwg
bG9uZyogYWN0dWFsTGluZU51bWJlciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKQogewotICAg
ICpicmVha3BvaW50SWQgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2lu
dChzb3VyY2VJRCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkLCBhY3R1YWxMaW5lTnVt
YmVyKTsKKyAgICBTdHJpbmcgc291cmNlSUQ7CisgICAgaWYgKCFicmVha3BvaW50LT5nZXRTdHJp
bmcoInNvdXJjZUlEIiwgJnNvdXJjZUlEKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBs
aW5lTnVtYmVyOworICAgIGlmICghYnJlYWtwb2ludC0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwg
JmxpbmVOdW1iZXIpKQorICAgICAgICByZXR1cm47CisgICAgZG91YmxlIGNvbHVtbk51bWJlcjsK
KyAgICBpZiAoIWJyZWFrcG9pbnQtPmdldE51bWJlcigiY29sdW1uTnVtYmVyIiwgJmNvbHVtbk51
bWJlcikpCisgICAgICAgIHJldHVybjsKKyAgICBTdHJpbmcgY29uZGl0aW9uOworICAgIGlmICgh
YnJlYWtwb2ludC0+Z2V0U3RyaW5nKCJjb25kaXRpb24iLCAmY29uZGl0aW9uKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGJvb2wgZW5hYmxlZDsKKyAgICBpZiAoIWJyZWFrcG9pbnQtPmdldEJvb2xl
YW4oImVuYWJsZWQiLCAmZW5hYmxlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRCcmVh
a3BvaW50IHNjcmlwdEJyZWFrcG9pbnQobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRp
b24sIGVuYWJsZWQpOworICAgICpicmVha3BvaW50SWQgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hh
cmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgc2NyaXB0QnJlYWtwb2ludCwgYWN0dWFsTGlu
ZU51bWJlciwgYWN0dWFsQ29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQpAQCAt
MTA0LDEyICsxMjAsMjIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIFNjcmlwdERlYnVnU2VydmVy
OjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wg
ZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKIHsKLSAgICB1bnNpZ25lZCBhY3R1YWxMaW5lTnVtYmVyID0gMDsKLSAgICBTdHJpbmcgYnJl
YWtwb2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgJmFjdHVhbExpbmVOdW1iZXIp
OwotICAgIGlmICghYnJlYWtwb2ludElkLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcm9udGVuZC0+
YnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIGFjdHVhbExpbmVOdW1i
ZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgbGluZU51bWJlcik7CisgICAgbG9uZyBhY3R1YWxMaW5l
TnVtYmVyID0gMCwgYWN0dWFsQ29sdW1uTnVtYmVyID0gMDsKKyAgICBTdHJpbmcgYnJlYWtwb2lu
dElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSUQs
IGJyZWFrcG9pbnQsICZhY3R1YWxMaW5lTnVtYmVyLCAmYWN0dWFsQ29sdW1uTnVtYmVyKTsKKyAg
ICBpZiAoYnJlYWtwb2ludElkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKKyAgICBicmVha3BvaW50RGF0YS0+c2V0U3RyaW5nKCJpZCIsIGJyZWFrcG9pbnRJZCk7
CisgICAgYnJlYWtwb2ludERhdGEtPnNldFN0cmluZygic291cmNlSUQiLCBzb3VyY2VJRCk7Cisg
ICAgYnJlYWtwb2ludERhdGEtPnNldE51bWJlcigibGluZU51bWJlciIsIGFjdHVhbExpbmVOdW1i
ZXIpOworICAgIGJyZWFrcG9pbnREYXRhLT5zZXROdW1iZXIoImNvbHVtbk51bWJlciIsIGFjdHVh
bENvbHVtbk51bWJlcik7CisgICAgYnJlYWtwb2ludERhdGEtPnNldFN0cmluZygiY29uZGl0aW9u
IiwgYnJlYWtwb2ludC5jb25kaXRpb24pOworICAgIGJyZWFrcG9pbnREYXRhLT5zZXRCb29sZWFu
KCJlbmFibGVkIiwgYnJlYWtwb2ludC5lbmFibGVkKTsKKyAgICBicmVha3BvaW50RGF0YS0+c2V0
Qm9vbGVhbigib3JpZ2luYWxMaW5lTnVtYmVyIiwgYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAg
ICBicmVha3BvaW50RGF0YS0+c2V0Qm9vbGVhbigib3JpZ2luYWxDb2x1bW5OdW1iZXIiLCBicmVh
a3BvaW50LmNvbHVtbk51bWJlcik7CisgICAgbV9mcm9udGVuZC0+YnJlYWtwb2ludFJlc29sdmVk
KGJyZWFrcG9pbnRJZCwgYnJlYWtwb2ludERhdGEpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U3RyaW5nJiBuZXdDb250ZW50LCBib29sKiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiogbmV3Q2FsbEZyYW1lcykKQEAgLTIxOSwxMCArMjQ1LDggQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3QgU2NyaXB0
QnJlYWtwb2ludHMmIGJyZWFrcG9pbnRzID0gc3RpY2t5QnJlYWtwb2ludHNJdGVyYXRvci0+c2Vj
b25kOwotICAgIGZvciAoU2NyaXB0QnJlYWtwb2ludHM6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYnJl
YWtwb2ludHMuYmVnaW4oKTsgaXQgIT0gYnJlYWtwb2ludHMuZW5kKCk7ICsraXQpIHsKLSAgICAg
ICAgY29uc3QgQnJlYWtwb2ludCYgYnJlYWtwb2ludCA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIHJl
c3RvcmVCcmVha3BvaW50KHNvdXJjZUlELCBpdC0+Zmlyc3QsIGJyZWFrcG9pbnQuZmlyc3QsIGJy
ZWFrcG9pbnQuc2Vjb25kKTsKLSAgICB9CisgICAgZm9yIChTY3JpcHRCcmVha3BvaW50czo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBicmVha3BvaW50cy5iZWdpbigpOyBpdCAhPSBicmVha3BvaW50cy5l
bmQoKTsgKytpdCkKKyAgICAgICAgcmVzdG9yZUJyZWFrcG9pbnQoc291cmNlSUQsIGl0LT5zZWNv
bmQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3Vy
Y2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwg
aW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCAwN2QyYWI5
Li43MzZhNmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudF9oCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElO
U1BFQ1RPUikKKyNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0
RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KQEAgLTYxLDggKzYyLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhY3RpdmF0
ZUJyZWFrcG9pbnRzKCk7CiAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKLSAgICB2
b2lkIHNldFN0aWNreUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIHVuc2lnbmVkIGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQpOwotICAgIHZvaWQg
c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkLCBTdHJpbmcqIGJyZWFrcG9p
bnRJZCwgdW5zaWduZWQgaW50KiBhY3R1YWxMaW5lTnVtYmVyKTsKKyAgICB2b2lkIHNldFN0aWNr
eUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlNjcmlwdEJyZWFr
cG9pbnQmKTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJyZWFrcG9pbnQsIFN0cmluZyogYnJlYWtwb2ludElkLCBsb25nKiBhY3R1YWxMaW5lTnVt
YmVyLCBsb25nKiBhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAKICAgICB2b2lkIGVkaXRTY3JpcHRTb3Vy
Y2UoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuZXdDb250ZW50LCBib29s
KiBzdWNjZXNzLCBTdHJpbmcqIHJlc3VsdCwgUmVmUHRyPEluc3BlY3RvclZhbHVlPiogbmV3Q2Fs
bEZyYW1lcyk7CkBAIC05MiwxNiArOTMsMTcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGF1c2UoU2NyaXB0U3RhdGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKTsK
IAotICAgIHZvaWQgcmVzdG9yZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgZW5hYmxlZCk7
CisgICAgdm9pZCByZXN0b3JlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25z
dCBTY3JpcHRCcmVha3BvaW50Jik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBWZWN0
b3I8U3RyaW5nPiA+IFVSTFRvU291cmNlSURzTWFwOworICAgIHR5cGVkZWYgc3RkOjpwYWlyPGxv
bmcsIGxvbmc+IExvY2F0aW9uOworICAgIHR5cGVkZWYgSGFzaE1hcDxMb2NhdGlvbiwgU2NyaXB0
QnJlYWtwb2ludD4gU2NyaXB0QnJlYWtwb2ludHM7CiAKICAgICBJbnNwZWN0b3JDb250cm9sbGVy
KiBtX2luc3BlY3RvckNvbnRyb2xsZXI7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRl
bmQ7CiAgICAgU2NyaXB0U3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gbV9zY3JpcHRJRFRvQ29udGVudDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiA+IFVSTFRvU291cmNlSURzTWFwOwogICAgIFVSTFRvU291
cmNlSURzTWFwIG1fdXJsVG9Tb3VyY2VJRHM7Ci0gICAgdHlwZWRlZiBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBCcmVha3BvaW50OwotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgQnJlYWtw
b2ludD4gU2NyaXB0QnJlYWtwb2ludHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFNjcmlwdEJyZWFr
cG9pbnRzPiBtX3N0aWNreUJyZWFrcG9pbnRzOwogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IG1fYnJlYWtQcm9ncmFtRGV0YWlsczsKICAgICBib29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9p
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzIwNWE3Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0QnJl
YWtwb2ludC5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQotI2luY2x1ZGUgIkluc3BlY3Rv
clZhbHVlcy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgU2NyaXB0QnJlYWtwb2lu
dDo6c291cmNlQnJlYWtwb2ludHNGcm9tSW5zcGVjdG9yT2JqZWN0KFBhc3NSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBicmVha3BvaW50cywgU291cmNlQnJlYWtwb2ludHMqIHNvdXJjZUJyZWFrcG9p
bnRzKQotewotICAgIGZvciAoSW5zcGVjdG9yT2JqZWN0OjppdGVyYXRvciBpdCA9IGJyZWFrcG9p
bnRzLT5iZWdpbigpOyBpdCAhPSBicmVha3BvaW50cy0+ZW5kKCk7ICsraXQpIHsKLSAgICAgICAg
Ym9vbCBvazsKLSAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBpdC0+Zmlyc3QudG9JbnQoJm9rKTsK
LSAgICAgICAgaWYgKCFvaykKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50ID0gaXQtPnNlY29uZC0+YXNPYmplY3QoKTsKLSAg
ICAgICAgaWYgKCFicmVha3BvaW50KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGJv
b2wgZW5hYmxlZDsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBlbmFibGVkVmFsdWUg
PSBicmVha3BvaW50LT5nZXQoImVuYWJsZWQiKTsKLSAgICAgICAgaWYgKCFlbmFibGVkVmFsdWUg
fHwgIWVuYWJsZWRWYWx1ZS0+YXNCb29sZWFuKCZlbmFibGVkKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgICAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IGNvbmRpdGlvblZhbHVlID0gYnJlYWtwb2ludC0+Z2V0KCJjb25kaXRpb24iKTsKLSAg
ICAgICAgaWYgKCFjb25kaXRpb25WYWx1ZSB8fCAhY29uZGl0aW9uVmFsdWUtPmFzU3RyaW5nKCZj
b25kaXRpb24pKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHNvdXJjZUJyZWFrcG9p
bnRzLT5zZXQobGluZU51bWJlciwgU2NyaXB0QnJlYWtwb2ludChlbmFibGVkLCBjb25kaXRpb24p
KTsKLSAgICB9Ci19Ci0KLVBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBTY3JpcHRCcmVha3Bv
aW50OjppbnNwZWN0b3JPYmplY3RGcm9tU291cmNlQnJlYWtwb2ludHMoY29uc3QgU291cmNlQnJl
YWtwb2ludHMmIHNvdXJjZUJyZWFrcG9pbnRzKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGJyZWFrcG9pbnRzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICBmb3IgKFNv
dXJjZUJyZWFrcG9pbnRzOjpjb25zdF9pdGVyYXRvciBpdCA9IHNvdXJjZUJyZWFrcG9pbnRzLmJl
Z2luKCk7IGl0ICE9IHNvdXJjZUJyZWFrcG9pbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgICAgICBicmVha3BvaW50LT5zZXRCb29sZWFuKCJlbmFibGVkIiwgaXQtPnNlY29u
ZC5lbmFibGVkKTsKLSAgICAgICAgYnJlYWtwb2ludC0+c2V0U3RyaW5nKCJjb25kaXRpb24iLCBp
dC0+c2Vjb25kLmNvbmRpdGlvbik7Ci0gICAgICAgIGJyZWFrcG9pbnRzLT5zZXRPYmplY3QoU3Ry
aW5nOjpudW1iZXIoaXQtPmZpcnN0KSwgYnJlYWtwb2ludCk7Ci0gICAgfQotICAgIHJldHVybiBi
cmVha3BvaW50cy5yZWxlYXNlKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEJyZWFrcG9pbnQuaAppbmRleCBkOGFjNzYyLi45NTIxY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgKQEAgLTMxLDE5ICszMSwxNSBAQAogI2RlZmlu
ZSBTY3JpcHRCcmVha3BvaW50X2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7Ci1zdHJ1Y3QgU2NyaXB0QnJlYWtwb2ludDsKLQotdHlwZWRlZiBIYXNoTWFw
PGludCwgU2NyaXB0QnJlYWtwb2ludD4gU291cmNlQnJlYWtwb2ludHM7Ci0KIHN0cnVjdCBTY3Jp
cHRCcmVha3BvaW50IHsKLSAgICBTY3JpcHRCcmVha3BvaW50KGJvb2wgZW5hYmxlZCwgY29uc3Qg
U3RyaW5nJiBjb25kaXRpb24pCi0gICAgICAgIDogZW5hYmxlZChlbmFibGVkKQorICAgIFNjcmlw
dEJyZWFrcG9pbnQobG9uZyBsaW5lTnVtYmVyLCBsb25nIGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBjb25kaXRpb24sIGJvb2wgZW5hYmxlZCkKKyAgICAgICAgOiBsaW5lTnVtYmVyKGxpbmVO
dW1iZXIpCisgICAgICAgICwgY29sdW1uTnVtYmVyKGNvbHVtbk51bWJlcikKICAgICAgICAgLCBj
b25kaXRpb24oY29uZGl0aW9uKQorICAgICAgICAsIGVuYWJsZWQoZW5hYmxlZCkKICAgICB7CiAg
ICAgfQogCkBAIC01MSwxMyArNDcsMTAgQEAgc3RydWN0IFNjcmlwdEJyZWFrcG9pbnQgewogICAg
IHsKICAgICB9CiAKLSAgICBib29sIGVuYWJsZWQ7CisgICAgbG9uZyBsaW5lTnVtYmVyOworICAg
IGxvbmcgY29sdW1uTnVtYmVyOwogICAgIFN0cmluZyBjb25kaXRpb247Ci0KLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIHN0YXRpYyB2b2lkIHNvdXJjZUJyZWFrcG9pbnRzRnJvbUluc3BlY3Rv
ck9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4sIFNvdXJjZUJyZWFrcG9pbnRzKik7
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBpbnNwZWN0b3JPYmplY3RG
cm9tU291cmNlQnJlYWtwb2ludHMoY29uc3QgU291cmNlQnJlYWtwb2ludHMmKTsKLSNlbmRpZgor
ICAgIGJvb2wgZW5hYmxlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludC5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludC5qcwppbmRleCBlNWUx
NzY4Li5hZmFkNTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0JyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9CcmVha3BvaW50LmpzCkBAIC0yOSwxNCArMjksMTQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQgPSBmdW5jdGlvbihkZWJ1Z2dlck1vZGVsLCBicmVh
a3BvaW50SWQsIHNvdXJjZUlELCB1cmwsIGxpbmUsIGVuYWJsZWQsIGNvbmRpdGlvbikKK1dlYklu
c3BlY3Rvci5CcmVha3BvaW50ID0gZnVuY3Rpb24oZGVidWdnZXJNb2RlbCwgYnJlYWtwb2ludElk
LCBkYXRhKQogewogICAgIHRoaXMuaWQgPSBicmVha3BvaW50SWQ7Ci0gICAgdGhpcy51cmwgPSB1
cmw7Ci0gICAgdGhpcy5saW5lID0gbGluZTsKLSAgICB0aGlzLnNvdXJjZUlEID0gc291cmNlSUQ7
Ci0gICAgdGhpcy5fZW5hYmxlZCA9IGVuYWJsZWQ7Ci0gICAgdGhpcy5fY29uZGl0aW9uID0gY29u
ZGl0aW9uIHx8ICIiOworICAgIHRoaXMuc291cmNlSUQgPSBkYXRhLnNvdXJjZUlEOworICAgIHRo
aXMubGluZSA9IGRhdGEubGluZU51bWJlcjsKKyAgICB0aGlzLmNvbHVtbiA9IGRhdGEuY29sdW1u
TnVtYmVyOworICAgIHRoaXMuX2NvbmRpdGlvbiA9IGRhdGEuY29uZGl0aW9uOworICAgIHRoaXMu
X2VuYWJsZWQgPSBkYXRhLmVuYWJsZWQ7CiAgICAgdGhpcy5faGl0ID0gZmFsc2U7CiAgICAgdGhp
cy5fZGVidWdnZXJNb2RlbCA9IGRlYnVnZ2VyTW9kZWw7CiB9CkBAIC02MCw2ICs2MCwxMyBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9jb25kaXRpb247CiAgICAgfSwKIAorICAgIGdldCB1cmwoKQorICAgIHsKKyAgICAgICAgaWYg
KCF0aGlzLl91cmwpCisgICAgICAgICAgICB0aGlzLl91cmwgPSB0aGlzLl9kZWJ1Z2dlck1vZGVs
LnNjcmlwdEZvclNvdXJjZUlEKHRoaXMuc291cmNlSUQpLnNvdXJjZVVSTDsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX3VybDsKKyAgICB9LAorCiAgICAgZ2V0IGhpdCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5faGl0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCmluZGV4IDhmNWJjZjcuLjQ2MmZlNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKQEAg
LTYyLDE5ICs2MiwyNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZW1vdmVCcmVha3BvaW50KHRoaXMu
X2NvbnRpbnVlVG9MaW5lQnJlYWtwb2ludElkKTsKICAgICAgICAgICAgIHRoaXMuX2NvbnRpbnVl
VG9MaW5lQnJlYWtwb2ludElkID0gYnJlYWtwb2ludElkOwogICAgICAgICB9Ci0gICAgICAgIElu
c3BlY3RvckJhY2tlbmQuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgIiIsIHRy
dWUsIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBicmVha3BvaW50
ID0geyBzb3VyY2VJRDogc291cmNlSUQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcjogMSwgY29uZGl0aW9uOiAiIiwgZW5hYmxlZDogdHJ1ZSB9OworICAgICAgICBJbnNwZWN0
b3JCYWNrZW5kLnNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgZGlkU2V0QnJlYWtwb2ludC5iaW5k
KHRoaXMpKTsKICAgICAgICAgaWYgKHRoaXMuX3BhdXNlZCkKICAgICAgICAgICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVzdW1lKCk7CiAgICAgfSwKIAogICAgIHNldEJyZWFrcG9pbnQ6IGZ1bmN0aW9u
KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBlbmFibGVkLCBjb25kaXRpb24pCiAgICAgewotICAgICAg
ICBmdW5jdGlvbiBkaWRTZXRCcmVha3BvaW50KGJyZWFrcG9pbnRJZCwgYWN0dWFsTGluZU51bWJl
cikKKyAgICAgICAgZnVuY3Rpb24gZGlkU2V0QnJlYWtwb2ludChicmVha3BvaW50SWQsIGFjdHVh
bExpbmVOdW1iZXIsIGFjdHVhbENvbHVtbk51bWJlcikKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKGJyZWFrcG9pbnRJZCkKLSAgICAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50U2V0T25C
YWNrZW5kKGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIGFjdHVhbExpbmVOdW1iZXIsIGNvbmRpdGlv
biwgZW5hYmxlZCwgbGluZU51bWJlciwgZmFsc2UpOworICAgICAgICAgICAgaWYgKCFicmVha3Bv
aW50SWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYnJlYWtwb2ludC5v
cmlnaW5hbExpbmVOdW1iZXIgPSBicmVha3BvaW50LmxpbmVOdW1iZXI7CisgICAgICAgICAgICBi
cmVha3BvaW50Lm9yaWdpbmFsQ29sdW1udW1iZXIgPSBicmVha3BvaW50LmNvbHVtbk51bWJlcjsK
KyAgICAgICAgICAgIGJyZWFrcG9pbnQubGluZU51bWJlciA9IGFjdHVhbExpbmVOdW1iZXI7Cisg
ICAgICAgICAgICBicmVha3BvaW50LmNvbHVtbk51bWJlciA9IGFjdHVhbENvbHVtbk51bWJlcjsK
KyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRTZXRPbkJhY2tlbmQoYnJlYWtwb2ludElkLCBi
cmVha3BvaW50LCBmYWxzZSk7CiAgICAgICAgIH0KLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRCcmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQsIGRp
ZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBicmVha3BvaW50ID0geyBz
b3VyY2VJRDogc291cmNlSUQsIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjog
MSwgY29uZGl0aW9uOiBjb25kaXRpb24sIGVuYWJsZWQ6IGVuYWJsZWQgfTsKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGRpZFNldEJyZWFrcG9pbnQu
YmluZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIHJlbW92ZUJyZWFrcG9pbnQ6IGZ1bmN0aW9uKGJy
ZWFrcG9pbnRJZCkKQEAgLTg2LDE4ICs5MywxNyBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5CcmVha3BvaW50UmVtb3ZlZCwgYnJlYWtw
b2ludElkKTsKICAgICB9LAogCi0gICAgX2JyZWFrcG9pbnRTZXRPbkJhY2tlbmQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwg
b3JpZ2luYWxMaW5lTnVtYmVyLCByZXN0b3JlZCkKKyAgICBfYnJlYWtwb2ludFNldE9uQmFja2Vu
ZDogZnVuY3Rpb24oYnJlYWtwb2ludElkLCBicmVha3BvaW50RGF0YSwgcmVzdG9yZWQpCiAgICAg
ewotICAgICAgICB2YXIgc291cmNlSURBbmRMaW5lID0gdGhpcy5fZW5jb2RlU291cmNlSURBbmRM
aW5lKHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmFyIHNvdXJjZUlEQW5kTGluZSA9
IHRoaXMuX2VuY29kZVNvdXJjZUlEQW5kTGluZShicmVha3BvaW50RGF0YS5zb3VyY2VJRCwgYnJl
YWtwb2ludERhdGEubGluZU51bWJlcik7CiAgICAgICAgIGlmIChzb3VyY2VJREFuZExpbmUgaW4g
dGhpcy5fc291cmNlSURBbmRMaW5lVG9CcmVha3BvaW50SWQpIHsKICAgICAgICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50SWQpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIHVybCA9IHRoaXMuX3NjcmlwdHNbc291
cmNlSURdLnNvdXJjZVVSTDsKLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnQodGhpcywgYnJlYWtwb2ludElkLCBzb3VyY2VJRCwgdXJsLCBsaW5lTnVt
YmVyLCBlbmFibGVkLCBjb25kaXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludCh0aGlzLCBicmVha3BvaW50SWQsIGJyZWFrcG9pbnREYXRh
KTsKICAgICAgICAgYnJlYWtwb2ludC5yZXN0b3JlZCA9IHJlc3RvcmVkOwotICAgICAgICBicmVh
a3BvaW50Lm9yaWdpbmFsTGluZU51bWJlciA9IG9yaWdpbmFsTGluZU51bWJlcjsKKyAgICAgICAg
YnJlYWtwb2ludC5vcmlnaW5hbExpbmVOdW1iZXIgPSBicmVha3BvaW50RGF0YS5vcmlnaW5hbExp
bmVOdW1iZXI7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzW2JyZWFrcG9pbnRJZF0gPSBicmVh
a3BvaW50OwogICAgICAgICB0aGlzLl9zb3VyY2VJREFuZExpbmVUb0JyZWFrcG9pbnRJZFtzb3Vy
Y2VJREFuZExpbmVdID0gYnJlYWtwb2ludElkOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludEFk
ZGVkLCBicmVha3BvaW50KTsKQEAgLTI0NCw5ICsyNTAsOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdn
ZXJEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGVidWdnZXJNb2RlbC5f
ZmFpbGVkVG9QYXJzZVNjcmlwdFNvdXJjZShzb3VyY2VVUkwsIHNvdXJjZSwgc3RhcnRpbmdMaW5l
LCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwKIAotICAgIGJyZWFrcG9pbnRSZXNv
bHZlZDogZnVuY3Rpb24oYnJlYWtwb2ludElkLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29uZGl0
aW9uLCBlbmFibGVkLCBvcmlnaW5hbExpbmVOdW1iZXIpCisgICAgYnJlYWtwb2ludFJlc29sdmVk
OiBmdW5jdGlvbihicmVha3BvaW50SWQsIGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICB0aGlz
Ll9kZWJ1Z2dlck1vZGVsLl9icmVha3BvaW50U2V0T25CYWNrZW5kKGJyZWFrcG9pbnRJZCwgc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgb3JpZ2luYWxMaW5lTnVtYmVy
LCB0cnVlKTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJNb2RlbC5fYnJlYWtwb2ludFNldE9uQmFj
a2VuZChicmVha3BvaW50SWQsIGJyZWFrcG9pbnQsIHRydWUpOwogICAgIH0sCiAKICAgICBkaWRD
cmVhdGVXb3JrZXI6IGZ1bmN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79254</attachid>
            <date>2011-01-18 01:28:52 -0800</date>
            <delta_ts>2011-01-24 04:36:52 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37405</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODA1MGI0OC4uZmI0YzAyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTExNzUsNyArMTE3NSw2IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAogICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCi0gICAgaW5zcGVj
dG9yL1NjcmlwdEJyZWFrcG9pbnQuY3BwCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5j
cHAKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAogICAgIGluc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzc1ODE3Zi4uMDczMGQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTAxLTE4ICBQYXZlbCBQb2Rpdmlsb3YgIDxw
b2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNldCBicmVha3BvaW50cyBieSBsaW5lOmNv
bHVtbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUy
NjE1CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAg
ICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRC
cmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVh
a3BvaW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0LmpzOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U3RpY2t5QnJlYWtwb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3RvcmVCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
cnNlU291cmNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0QnJlYWtwb2ludDo6U2NyaXB0QnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9CcmVha3BvaW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCB1cmwp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJNb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLnByb3RvdHlwZS5jb250aW51ZVRvTGluZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuc2V0QnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5wcm90b3R5cGUuX2Jy
ZWFrcG9pbnRTZXRPbkJhY2tlbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlz
cGF0Y2hlci5wcm90b3R5cGUuYnJlYWtwb2ludFJlc29sdmVkKToKKwogMjAxMS0wMS0xNyAgTWFj
aWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
biBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGVmYmJiNzAuLmY0MDUyMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0xOTk0LDcgKzE5OTQsNiBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9TY3JpcHRCcmVha3BvaW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsRnJhbWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbEZy
YW1lLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGY0YTIzOWYuLjhiZDc1NDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTIwNDUsNyArMjA0NSw2IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3Bl
Y3RvclZhbHVlcy5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
aCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlclJlc291cmNlLmgnLAot
ICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L1NjcmlwdEFyZ3VtZW50cy5jcHAnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1
bWVudHMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQzN2NkYzcuLmY4MzYxMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
cHJvCkBAIC0xMDY2LDcgKzEwNjYsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnNwZWN0b3IvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMu
Y3BwIFwKICAgICBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBcCi0gICAgaW5zcGVjdG9y
L1NjcmlwdEJyZWFrcG9pbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNw
cCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAgXAogICAgIGluc3BlY3Rvci9U
aW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMzk2NzFhMC4uYjY2MDFjMiAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTY1MjAyLDEwICs2NTIwMiw2
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGlu
c3BlY3RvclxTY3JpcHRCcmVha3BvaW50LmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFNjcmlwdEJyZWFrcG9pbnQuaCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZWQ4NmM2Ny4uMzY3ZDcyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ2LDcgKzY0Niw2
IEBACiAJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRjZC
RTEyMEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSAqLzsgfTsK
IAkJMUNGNkJFMTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0Y2QkUxMzBF
OUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCAqLzsgfTsKIAkJMUNG
QUUzMjMwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0Qg
LyogbGlib2JqYy5keWxpYiAqLzsgfTsKLQkJMjAwQjE5MDkxMUMyNzdEOTAwRENDRDNBIC8qIFNj
cmlwdEJyZWFrcG9pbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjAwQjE5MDgxMUMyNzdEOTAwRENDRDNBIC8qIFNjcmlwdEJyZWFrcG9pbnQuY3Bw
ICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
ICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
MEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87
IH07CiAJCTIyOEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyOEMyODQ0MTBEODI1
MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNjk3MCw3ICs2OTY5LDYgQEAKIAkJMUNGNkJFMTIw
RTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24ubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRjZCRTEzMEU5QkI0NjcwMDI1RTFDRCAv
KiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8u
ZHlsaWIiOyBuYW1lID0gbGlib2JqYy5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYm9iamMuZHls
aWI7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07Ci0JCTIwMEIxOTA4MTFDMjc3RDkwMERD
Q0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyOEMyODQ0MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRX
cmFwcGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0V3JhcHBh
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjk4OSw3ICsxMjk4Nyw2IEBA
CiAJCQkJQkNDNjRGNUYwRENGQjg0RTAwODFFRjNCIC8qIGxvY2FsaXplZFN0cmluZ3MuanMgKi8s
CiAJCQkJRjM5QkU5NTkxMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8s
CiAJCQkJRjM5QkU5NUExMjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAot
CQkJCTIwMEIxOTA4MTFDMjc3RDkwMERDQ0QzQSAvKiBTY3JpcHRCcmVha3BvaW50LmNwcCAqLywK
IAkJCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLAog
CQkJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAog
CQkJCTQxNkU3NUM5MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKQEAg
LTI0NTMzLDcgKzI0NTMwLDYgQEAKIAkJCQlCQ0VDMDFCRDBDMjc0REFDMDA5RjRFQzkgLyogU2Ny
ZWVuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NEQ4MkMyMTFEMzQ3NDgwMDk3Mjk5MCAvKiBT
Y3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjM5QkU5NUIx
MjY3M0JGNDAwRTBBNjc0IC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQkyMDBCMTkwOTExQzI3N0Q5MDBEQ0NEM0EgLyogU2NyaXB0QnJlYWtwb2ludC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk0MUYxRDIyMDBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJh
bWVEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxNkU3NUNDMEVERjkwQzcwMDM2MEUxRCAv
KiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE2RTc1QkYwRURGOEZE
NzAwMzYwRTFEIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA5ODQ1
Mjc3Li40NjlkMDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC0xMzgsMTkgKzEzOCwyMCBAQCBib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpoYXNMaXN0ZW5lcnNJbnRlcmVzdGVkSW5QYWdlKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJu
IG1fcGFnZUxpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKTsKIH0KIAotU3RyaW5nIFNjcmlwdERl
YnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQsIHVuc2ln
bmVkKiBhY3R1YWxMaW5lTnVtYmVyKQorU3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNj
cmlwdEJyZWFrcG9pbnQsIGxvbmcqIGFjdHVhbExpbmVOdW1iZXIsIGxvbmcqIGFjdHVhbENvbHVt
bk51bWJlcikKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQ
dHIoKTsKICAgICBpZiAoIXNvdXJjZUlEVmFsdWUpCiAgICAgICAgIHJldHVybiAiIjsKICAgICBC
cmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX2JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURW
YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fYnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0g
bV9icmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgU291cmNlQnJlYWtwb2ludHMoKSkuZmly
c3Q7Ci0gICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMobGluZU51bWJlcikpCisgICAgICAgIGl0
ID0gbV9icmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgU2NyaXB0QnJlYWtwb2ludHMoKSku
Zmlyc3Q7CisgICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyKSkKICAgICAgICAgcmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0KGxpbmVOdW1i
ZXIsIFNjcmlwdEJyZWFrcG9pbnQoZW5hYmxlZCwgY29uZGl0aW9uKSk7Ci0gICAgKmFjdHVhbExp
bmVOdW1iZXIgPSBsaW5lTnVtYmVyOwotICAgIHJldHVybiBtYWtlU3RyaW5nKHNvdXJjZUlELCAi
OiIsIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpKTsKKyAgICBpdC0+c2Vjb25kLnNldChzY3Jp
cHRCcmVha3BvaW50LmxpbmVOdW1iZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgICphY3R1YWxM
aW5lTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyOworICAgICphY3R1YWxDb2x1
bW5OdW1iZXIgPSAxOworICAgIHJldHVybiBtYWtlU3RyaW5nKHNvdXJjZUlELCAiOiIsIFN0cmlu
Zzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcikpOwogfQogCiB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElk
KQpAQCAtMTc5LDcgKzE4MCw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9p
bnQoaW50cHRyX3Qgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIpIGNvCiAgICAgQnJlYWtw
b2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9icmVha3BvaW50cy5maW5kKHNvdXJjZUlE
KTsKICAgICBpZiAoaXQgPT0gbV9icmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIFNvdXJjZUJyZWFrcG9pbnRzOjpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQt
PnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOworICAgIFNjcmlwdEJyZWFrcG9pbnRzOjpjb25zdF9p
dGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwogICAgIGlmIChi
cmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkgfHwgIWJyZWFrSXQtPnNlY29uZC5lbmFibGVkKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDgxY2Q5YWMuLmRhMGVlNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNjMsNyArNjMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFn
ZSopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBhZ2Uq
KTsKIAotICAgIFN0cmluZyBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQs
IHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKTsKKyAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiwgbG9uZyogYWN0
dWFsTGluZU51bWJlciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAgICB2b2lkIHJlbW92
ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogICAgIHZvaWQgY2xlYXJC
cmVha3BvaW50cygpOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCBhY3Rp
dmF0ZWQpOwpAQCAtMTM1LDcgKzEzNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVM
aXN0ZW5lcihQYWdlKik7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0
Kj4gUGFnZUxpc3RlbmVyc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIFNvdXJj
ZUJyZWFrcG9pbnRzPiBCcmVha3BvaW50c01hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywg
U2NyaXB0QnJlYWtwb2ludD4gU2NyaXB0QnJlYWtwb2ludHM7CisgICAgdHlwZWRlZiBIYXNoTWFw
PGludHB0cl90LCBTY3JpcHRCcmVha3BvaW50cz4gQnJlYWtwb2ludHNNYXA7CiAKICAgICBQYWdl
TGlzdGVuZXJzTWFwIG1fcGFnZUxpc3RlbmVyc01hcDsKICAgICBib29sIG1fY2FsbGluZ0xpc3Rl
bmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RlYnVnZ2VyU2Ny
aXB0LmpzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKaW5k
ZXggOGM5ZDk4ZS4uYzUxZmEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVi
dWdnZXJTY3JpcHQuanMKQEAgLTkxLDggKzkxLDkgQEAgRGVidWdnZXJTY3JpcHQuX2Zvcm1hdFNj
cmlwdCA9IGZ1bmN0aW9uKHNjcmlwdCkKIAogRGVidWdnZXJTY3JpcHQuc2V0QnJlYWtwb2ludCA9
IGZ1bmN0aW9uKGV4ZWNTdGF0ZSwgYXJncykKIHsKLSAgICBhcmdzLmxpbmVOdW1iZXIgPSBEZWJ1
Z2dlclNjcmlwdC5fd2Via2l0VG9WOExpbmVOdW1iZXIoYXJncy5saW5lTnVtYmVyKTsKLSAgICB2
YXIgYnJlYWtJZCA9IERlYnVnLnNldFNjcmlwdEJyZWFrUG9pbnRCeUlkKGFyZ3Muc2NyaXB0SWQs
IGFyZ3MubGluZU51bWJlciwgMCAvKiBjb2x1bW4gKi8sIGFyZ3MuY29uZGl0aW9uKTsKKyAgICB2
YXIgbGluZU51bWJlciA9IERlYnVnZ2VyU2NyaXB0Ll93ZWJraXRUb1Y4TGluZU51bWJlcihhcmdz
LmxpbmVOdW1iZXIpOworICAgIHZhciBjb2x1bW5OdW1iZXIgPSBEZWJ1Z2dlclNjcmlwdC5fd2Vi
a2l0VG9WOExpbmVOdW1iZXIoYXJncy5jb2x1bW5OdW1iZXIpOworICAgIHZhciBicmVha0lkID0g
RGVidWcuc2V0U2NyaXB0QnJlYWtQb2ludEJ5SWQoYXJncy5zY3JpcHRJZCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBhcmdzLmNvbmRpdGlvbik7CiAgICAgaWYgKCFhcmdzLmVuYWJsZWQpCiAg
ICAgICAgIERlYnVnLmRpc2FibGVTY3JpcHRCcmVha1BvaW50KGJyZWFrSWQpOwogCkBAIC0xMDAs
NiArMTAxLDcgQEAgRGVidWdnZXJTY3JpcHQuc2V0QnJlYWtwb2ludCA9IGZ1bmN0aW9uKGV4ZWNT
dGF0ZSwgYXJncykKICAgICBpZiAoIWxvY2F0aW9ucy5sZW5ndGgpCiAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7CiAgICAgYXJncy5saW5lTnVtYmVyID0gRGVidWdnZXJTY3JpcHQuX3Y4VG9XZWJr
aXRMaW5lTnVtYmVyKGxvY2F0aW9uc1swXS5saW5lKTsKKyAgICBhcmdzLmNvbHVtbk51bWJlciA9
IERlYnVnZ2VyU2NyaXB0Ll92OFRvV2Via2l0TGluZU51bWJlcihsb2NhdGlvbnNbMF0uY29sdW1u
KTsKICAgICByZXR1cm4gYnJlYWtJZC50b1N0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMWM3MGEwZS4uOTdj
NTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtMTQzLDcgKzE0Myw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92
ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWdlCiAgICAg
Ly8gRklYTUU6IFJlbW92ZSBhbGwgYnJlYWtwb2ludHMgc2V0IGJ5IHRoZSBhZ2VudC4KIH0KIAot
U3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291
cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29s
IGVuYWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKQorU3RyaW5nIFNjcmlwdERlYnVn
U2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQsIGxvbmcqIGFjdHVhbExpbmVOdW1iZXIsIGxv
bmcqIGFjdHVhbENvbHVtbk51bWJlcikKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAg
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQgPSB2ODo6RGVidWc6Okdl
dERlYnVnQ29udGV4dCgpOwpAQCAtMTUxLDE1ICsxNTEsMTcgQEAgU3RyaW5nIFNjcmlwdERlYnVn
U2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2lnbmVkIGxp
bmVOdW0KIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBhcmdzID0gdjg6Ok9iamVjdDo6TmV3
KCk7CiAgICAgYXJncy0+U2V0KHY4OjpTdHJpbmc6Ok5ldygic2NyaXB0SWQiKSwgdjhTdHJpbmco
c291cmNlSUQpKTsKLSAgICBhcmdzLT5TZXQodjg6OlN0cmluZzo6TmV3KCJsaW5lTnVtYmVyIiks
IHY4OjpJbnRlZ2VyOjpOZXcobGluZU51bWJlcikpOwotICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5n
OjpOZXcoImNvbmRpdGlvbiIpLCB2OFN0cmluZyhjb25kaXRpb24pKTsKLSAgICBhcmdzLT5TZXQo
djg6OlN0cmluZzo6TmV3KCJlbmFibGVkIiksIHY4OjpCb29sZWFuOjpOZXcoZW5hYmxlZCkpOwor
ICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSwgdjg6OkludGVnZXI6
Ok5ldyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpKTsKKyAgICBhcmdzLT5TZXQodjg6OlN0
cmluZzo6TmV3KCJjb2x1bW5OdW1iZXIiKSwgdjg6OkludGVnZXI6Ok5ldyhzY3JpcHRCcmVha3Bv
aW50LmNvbHVtbk51bWJlcikpOworICAgIGFyZ3MtPlNldCh2ODo6U3RyaW5nOjpOZXcoImNvbmRp
dGlvbiIpLCB2OFN0cmluZyhzY3JpcHRCcmVha3BvaW50LmNvbmRpdGlvbikpOworICAgIGFyZ3Mt
PlNldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWQiKSwgdjg6OkJvb2xlYW46Ok5ldyhzY3JpcHRC
cmVha3BvaW50LmVuYWJsZWQpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBzZXRC
cmVha3BvaW50RnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzZXRCcmVha3BvaW50IikpKTsK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnJlYWtwb2ludElkID0gdjg6OkRlYnVnOjpDYWxs
KHNldEJyZWFrcG9pbnRGdW5jdGlvbiwgYXJncyk7CiAgICAgaWYgKCFicmVha3BvaW50SWQtPklz
U3RyaW5nKCkpCiAgICAgICAgIHJldHVybiAiIjsKICAgICAqYWN0dWFsTGluZU51bWJlciA9IGFy
Z3MtPkdldCh2ODo6U3RyaW5nOjpOZXcoImxpbmVOdW1iZXIiKSktPkludDMyVmFsdWUoKTsKKyAg
ICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gYXJncy0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiY29sdW1u
TnVtYmVyIikpLT5JbnQzMlZhbHVlKCk7CiAgICAgcmV0dXJuIHY4U3RyaW5nVG9XZWJDb3JlU3Ry
aW5nKGJyZWFrcG9pbnRJZC0+VG9TdHJpbmcoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDQwZGQ1ZmMuLjkzZjBjYzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
NTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xp
c3RlbmVyKiwgUGFnZSopOwogICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciosIFBhZ2UqKTsKIAotICAgIFN0cmluZyBzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYg
c291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBi
b29sIGVuYWJsZWQsIHVuc2lnbmVkKiBhY3R1YWxMaW5lTnVtYmVyKTsKKyAgICBTdHJpbmcgc2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50
JiwgbG9uZyogYWN0dWFsTGluZU51bWJlciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAg
ICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogICAg
IHZvaWQgY2xlYXJCcmVha3BvaW50cygpOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0
ZWQoYm9vbCBhY3RpdmF0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApp
bmRleCA2YzJjYzJlLi4yYzBkZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbApAQCAtMjM1LDcgKzIzNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1E
ZWJ1Z2dlcl0gdm9pZCBhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAgICAgICAgIFtkb21haW49RGVi
dWdnZXJdIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAKLSAgICAgICAgW2RvbWFpbj1E
ZWJ1Z2dlcl0gdm9pZCBzZXRCcmVha3BvaW50KGluIFN0cmluZyBzb3VyY2VJRCwgaW4gdW5zaWdu
ZWQgaW50IGxpbmVOdW1iZXIsIGluIFN0cmluZyBjb25kaXRpb24sIGluIGJvb2xlYW4gZW5hYmxl
ZCwgb3V0IFN0cmluZyBicmVha3BvaW50SWQsIG91dCB1bnNpZ25lZCBpbnQgYWN0dWFsTGluZU51
bWJlcik7CisgICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgc2V0QnJlYWtwb2ludChpbiBP
YmplY3QgYnJlYWtwb2ludCwgb3V0IFN0cmluZyBicmVha3BvaW50SWQsIG91dCBsb25nIGFjdHVh
bExpbmVOdW1iZXIsIG91dCBsb25nIGFjdHVhbENvbHVtbk51bWJlcik7CiAgICAgICAgIFtkb21h
aW49RGVidWdnZXJdIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChpbiBTdHJpbmcgYnJlYWtwb2ludElk
KTsKIAogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBzZXRET01CcmVha3Bv
aW50KGluIGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwpAQCAtMjU4LDcgKzI1OCw3IEBAIG1v
ZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBlZGl0U2NyaXB0U291
cmNlKGluIFN0cmluZyBzb3VyY2VJRCwgaW4gU3RyaW5nIG5ld0NvbnRlbnQsIG91dCBib29sZWFu
IHN1Y2Nlc3MsIG91dCBTdHJpbmcgcmVzdWx0LCBvdXQgVmFsdWUgbmV3Q2FsbEZyYW1lcyk7CiAg
ICAgICAgIFtkb21haW49RGVidWdnZXJdIHZvaWQgZ2V0U2NyaXB0U291cmNlKGluIFN0cmluZyBz
b3VyY2VJRCwgb3V0IFN0cmluZyBzY3JpcHRTb3VyY2UpOwogCi0gICAgICAgIFtub3RpZnksIGRv
bWFpbj1EZWJ1Z2dlcl0gdm9pZCBicmVha3BvaW50UmVzb2x2ZWQob3V0IFN0cmluZyBicmVha3Bv
aW50SWQsIG91dCBTdHJpbmcgc291cmNlSUQsIG91dCB1bnNpZ25lZCBpbnQgbGluZU51bWJlciwg
b3V0IFN0cmluZyBjb25kaXRpb24sIG91dCBib29sZWFuIGVuYWJsZWQsIG91dCB1bnNpZ25lZCBp
bnQgb3JpZ2luYWxMaW5lTnVtYmVyKTsKKyAgICAgICAgW25vdGlmeSwgZG9tYWluPURlYnVnZ2Vy
XSB2b2lkIGJyZWFrcG9pbnRSZXNvbHZlZChvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IE9i
amVjdCBicmVha3BvaW50KTsKIAogI2lmIGRlZmluZWQoRU5BQkxFX1dPUktFUlMpICYmIEVOQUJM
RV9XT1JLRVJTCiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkaWRDcmVh
dGVXb3JrZXIob3V0IGxvbmcgaWQsIG91dCBTdHJpbmcgdXJsLCBvdXQgYm9vbGVhbiBpc1NoYXJl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKaW5kZXggNWExMzliNi4uMmUzOTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODMsNiArODMsNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNs
dWRlICJTY3JpcHRBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCiAj
aW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0xMTQ2LDEwICsxMTQ3LDEzIEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZVN0aWNreUJyZWFrcG9pbnQoUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJyCiAgICAgICAgIGRvdWJsZSBsaW5lTnVtYmVyOwogICAgICAg
ICBpZiAoIWNvbmRpdGlvbi0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgJmxpbmVOdW1iZXIpKQog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBkb3VibGUgY29sdW1uTnVtYmVyOworICAgICAg
ICBpZiAoIWNvbmRpdGlvbi0+Z2V0TnVtYmVyKCJjb2x1bW5OdW1iZXIiLCAmY29sdW1uTnVtYmVy
KSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25kaXRp
b247CiAgICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRTdHJpbmcoImNvbmRpdGlvbiIsICZqYXZh
U2NyaXB0Q29uZGl0aW9uKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9kZWJ1Z2dl
ckFnZW50LT5zZXRTdGlja3lCcmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxp
bmVOdW1iZXIpLCBqYXZhU2NyaXB0Q29uZGl0aW9uLCBlbmFibGVkKTsKKyAgICAgICAgbV9kZWJ1
Z2dlckFnZW50LT5zZXRTdGlja3lCcmVha3BvaW50KHVybCwgU2NyaXB0QnJlYWtwb2ludChsb25n
KGxpbmVOdW1iZXIpLCBsb25nKGNvbHVtbk51bWJlciksIGphdmFTY3JpcHRDb25kaXRpb24sIGVu
YWJsZWQpKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0geGhyQnJlYWtwb2ludFR5cGUgJiYgbV9i
cm93c2VyRGVidWdnZXJBZ2VudCkgewogICAgICAgICBpZiAoIWVuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKaW5kZXggODJjMjUwYS4uNTMzY2JlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzksMjQg
Kzc5LDQwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzKCkKICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0U3RpY2t5QnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIGJvb2wgZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0U3RpY2t5QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU2NyaXB0QnJlYWtw
b2ludCYgYnJlYWtwb2ludCkKIHsKICAgICBIYXNoTWFwPFN0cmluZywgU2NyaXB0QnJlYWtwb2lu
dHM+OjppdGVyYXRvciBpdCA9IG1fc3RpY2t5QnJlYWtwb2ludHMuZmluZCh1cmwpOwogICAgIGlm
IChpdCA9PSBtX3N0aWNreUJyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc3RpY2t5
QnJlYWtwb2ludHMuc2V0KHVybCwgU2NyaXB0QnJlYWtwb2ludHMoKSkuZmlyc3Q7Ci0gICAgaXQt
PnNlY29uZC5zZXQobGluZU51bWJlciwgQnJlYWtwb2ludChjb25kaXRpb24sIGVuYWJsZWQpKTsK
KyAgICBpdC0+c2Vjb25kLnNldChMb2NhdGlvbihicmVha3BvaW50LmxpbmVOdW1iZXIsIGJyZWFr
cG9pbnQuY29sdW1uTnVtYmVyKSwgYnJlYWtwb2ludCk7CiAKICAgICBVUkxUb1NvdXJjZUlEc01h
cDo6aXRlcmF0b3IgdXJsVG9Tb3VyY2VJRHNJdGVyYXRvciA9IG1fdXJsVG9Tb3VyY2VJRHMuZmlu
ZCh1cmwpOwogICAgIGlmICh1cmxUb1NvdXJjZUlEc0l0ZXJhdG9yID09IG1fdXJsVG9Tb3VyY2VJ
RHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc291
cmNlSURzID0gdXJsVG9Tb3VyY2VJRHNJdGVyYXRvci0+c2Vjb25kOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc291cmNlSURzLnNpemUoKTsgKytpKQotICAgICAgICByZXN0b3JlQnJlYWtw
b2ludChzb3VyY2VJRHNbaV0sIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCk7CisgICAg
ICAgIHJlc3RvcmVCcmVha3BvaW50KHNvdXJjZUlEc1tpXSwgYnJlYWtwb2ludCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNv
dXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9v
bCBlbmFibGVkLCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgdW5zaWduZWQgaW50KiBhY3R1YWxMaW5l
TnVtYmVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KFBhc3NS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50LCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwg
bG9uZyogYWN0dWFsTGluZU51bWJlciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKQogewotICAg
ICpicmVha3BvaW50SWQgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2lu
dChzb3VyY2VJRCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkLCBhY3R1YWxMaW5lTnVt
YmVyKTsKKyAgICBTdHJpbmcgc291cmNlSUQ7CisgICAgaWYgKCFicmVha3BvaW50LT5nZXRTdHJp
bmcoInNvdXJjZUlEIiwgJnNvdXJjZUlEKSkKKyAgICAgICAgcmV0dXJuOworICAgIGRvdWJsZSBs
aW5lTnVtYmVyOworICAgIGlmICghYnJlYWtwb2ludC0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwg
JmxpbmVOdW1iZXIpKQorICAgICAgICByZXR1cm47CisgICAgZG91YmxlIGNvbHVtbk51bWJlcjsK
KyAgICBpZiAoIWJyZWFrcG9pbnQtPmdldE51bWJlcigiY29sdW1uTnVtYmVyIiwgJmNvbHVtbk51
bWJlcikpCisgICAgICAgIHJldHVybjsKKyAgICBTdHJpbmcgY29uZGl0aW9uOworICAgIGlmICgh
YnJlYWtwb2ludC0+Z2V0U3RyaW5nKCJjb25kaXRpb24iLCAmY29uZGl0aW9uKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGJvb2wgZW5hYmxlZDsKKyAgICBpZiAoIWJyZWFrcG9pbnQtPmdldEJvb2xl
YW4oImVuYWJsZWQiLCAmZW5hYmxlZCkpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRCcmVh
a3BvaW50IHNjcmlwdEJyZWFrcG9pbnQobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRp
b24sIGVuYWJsZWQpOworICAgICpicmVha3BvaW50SWQgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hh
cmVkKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJRCwgc2NyaXB0QnJlYWtwb2ludCwgYWN0dWFsTGlu
ZU51bWJlciwgYWN0dWFsQ29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQpAQCAt
MTA0LDEyICsxMjAsMjIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIFNjcmlwdERlYnVnU2VydmVy
OjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnRJZCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wg
ZW5hYmxlZCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdG9yZUJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKIHsKLSAgICB1bnNpZ25lZCBhY3R1YWxMaW5lTnVtYmVyID0gMDsKLSAgICBTdHJpbmcgYnJl
YWtwb2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgJmFjdHVhbExpbmVOdW1iZXIp
OwotICAgIGlmICghYnJlYWtwb2ludElkLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcm9udGVuZC0+
YnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIGFjdHVhbExpbmVOdW1i
ZXIsIGNvbmRpdGlvbiwgZW5hYmxlZCwgbGluZU51bWJlcik7CisgICAgbG9uZyBhY3R1YWxMaW5l
TnVtYmVyID0gMCwgYWN0dWFsQ29sdW1uTnVtYmVyID0gMDsKKyAgICBTdHJpbmcgYnJlYWtwb2lu
dElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSUQs
IGJyZWFrcG9pbnQsICZhY3R1YWxMaW5lTnVtYmVyLCAmYWN0dWFsQ29sdW1uTnVtYmVyKTsKKyAg
ICBpZiAoYnJlYWtwb2ludElkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKKyAgICBicmVha3BvaW50RGF0YS0+c2V0U3RyaW5nKCJpZCIsIGJyZWFrcG9pbnRJZCk7
CisgICAgYnJlYWtwb2ludERhdGEtPnNldFN0cmluZygic291cmNlSUQiLCBzb3VyY2VJRCk7Cisg
ICAgYnJlYWtwb2ludERhdGEtPnNldE51bWJlcigibGluZU51bWJlciIsIGFjdHVhbExpbmVOdW1i
ZXIpOworICAgIGJyZWFrcG9pbnREYXRhLT5zZXROdW1iZXIoImNvbHVtbk51bWJlciIsIGFjdHVh
bENvbHVtbk51bWJlcik7CisgICAgYnJlYWtwb2ludERhdGEtPnNldFN0cmluZygiY29uZGl0aW9u
IiwgYnJlYWtwb2ludC5jb25kaXRpb24pOworICAgIGJyZWFrcG9pbnREYXRhLT5zZXRCb29sZWFu
KCJlbmFibGVkIiwgYnJlYWtwb2ludC5lbmFibGVkKTsKKyAgICBicmVha3BvaW50RGF0YS0+c2V0
TnVtYmVyKCJvcmlnaW5hbExpbmVOdW1iZXIiLCBicmVha3BvaW50LmxpbmVOdW1iZXIpOworICAg
IGJyZWFrcG9pbnREYXRhLT5zZXROdW1iZXIoIm9yaWdpbmFsQ29sdW1uTnVtYmVyIiwgYnJlYWtw
b2ludC5jb2x1bW5OdW1iZXIpOworICAgIG1fZnJvbnRlbmQtPmJyZWFrcG9pbnRSZXNvbHZlZChi
cmVha3BvaW50SWQsIGJyZWFrcG9pbnREYXRhKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjplZGl0U2NyaXB0U291cmNlKGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0
cmluZyYgbmV3Q29udGVudCwgYm9vbCogc3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxGcmFtZXMpCkBAIC0yMTksMTAgKzI0NSw4IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFNjcmlwdEJy
ZWFrcG9pbnRzJiBicmVha3BvaW50cyA9IHN0aWNreUJyZWFrcG9pbnRzSXRlcmF0b3ItPnNlY29u
ZDsKLSAgICBmb3IgKFNjcmlwdEJyZWFrcG9pbnRzOjpjb25zdF9pdGVyYXRvciBpdCA9IGJyZWFr
cG9pbnRzLmJlZ2luKCk7IGl0ICE9IGJyZWFrcG9pbnRzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAg
IGNvbnN0IEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQgPSBpdC0+c2Vjb25kOwotICAgICAgICByZXN0
b3JlQnJlYWtwb2ludChzb3VyY2VJRCwgaXQtPmZpcnN0LCBicmVha3BvaW50LmZpcnN0LCBicmVh
a3BvaW50LnNlY29uZCk7Ci0gICAgfQorICAgIGZvciAoU2NyaXB0QnJlYWtwb2ludHM6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gYnJlYWtwb2ludHMuYmVnaW4oKTsgaXQgIT0gYnJlYWtwb2ludHMuZW5k
KCk7ICsraXQpCisgICAgICAgIHJlc3RvcmVCcmVha3BvaW50KHNvdXJjZUlELCBpdC0+c2Vjb25k
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGlu
dCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggMDdkMmFiOS4u
NzM2YTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnRfaAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQ
RUNUT1IpCisjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIlNjcmlwdERl
YnVnTGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CkBAIC02MSw4ICs2Miw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWN0aXZhdGVC
cmVha3BvaW50cygpOwogICAgIHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7Ci0gICAgdm9p
ZCBzZXRTdGlja3lCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIHNl
dEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgZW5hYmxlZCwgU3RyaW5nKiBicmVha3BvaW50
SWQsIHVuc2lnbmVkIGludCogYWN0dWFsTGluZU51bWJlcik7CisgICAgdm9pZCBzZXRTdGlja3lC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBXZWJDb3JlOjpTY3JpcHRCcmVha3Bv
aW50Jik7CisgICAgdm9pZCBzZXRCcmVha3BvaW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBicmVha3BvaW50LCBTdHJpbmcqIGJyZWFrcG9pbnRJZCwgbG9uZyogYWN0dWFsTGluZU51bWJl
ciwgbG9uZyogYWN0dWFsQ29sdW1uTnVtYmVyKTsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpOwogCiAgICAgdm9pZCBlZGl0U2NyaXB0U291cmNl
KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFN0cmluZyYgbmV3Q29udGVudCwgYm9vbCog
c3VjY2VzcywgU3RyaW5nKiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4qIG5ld0NhbGxG
cmFtZXMpOwpAQCAtOTIsMTYgKzkzLDE3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFBhdXNlKFNjcmlwdFN0YXRlKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCk7CiAK
LSAgICB2b2lkIHJlc3RvcmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQpOwor
ICAgIHZvaWQgcmVzdG9yZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3Qg
U2NyaXB0QnJlYWtwb2ludCYpOworCisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgVmVjdG9y
PFN0cmluZz4gPiBVUkxUb1NvdXJjZUlEc01hcDsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxsb25n
LCBsb25nPiBMb2NhdGlvbjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8TG9jYXRpb24sIFNjcmlwdEJy
ZWFrcG9pbnQ+IFNjcmlwdEJyZWFrcG9pbnRzOwogCiAgICAgSW5zcGVjdG9yQ29udHJvbGxlciog
bV9pbnNwZWN0b3JDb250cm9sbGVyOwogICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5k
OwogICAgIFNjcmlwdFN0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IG1fc2NyaXB0SURUb0NvbnRlbnQ7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPFN0cmluZz4gPiBVUkxUb1NvdXJjZUlEc01hcDsKICAgICBVUkxUb1NvdXJj
ZUlEc01hcCBtX3VybFRvU291cmNlSURzOwotICAgIHR5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gQnJlYWtwb2ludDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQsIEJyZWFrcG9p
bnQ+IFNjcmlwdEJyZWFrcG9pbnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBTY3JpcHRCcmVha3Bv
aW50cz4gbV9zdGlja3lCcmVha3BvaW50czsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBt
X2JyZWFrUHJvZ3JhbURldGFpbHM7CiAgICAgYm9vbCBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjcyMDVhNy4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdEJyZWFr
cG9pbnQuaCIKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KLSNpbmNsdWRlICJJbnNwZWN0b3JW
YWx1ZXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFNjcmlwdEJyZWFrcG9pbnQ6
OnNvdXJjZUJyZWFrcG9pbnRzRnJvbUluc3BlY3Rvck9iamVjdChQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gYnJlYWtwb2ludHMsIFNvdXJjZUJyZWFrcG9pbnRzKiBzb3VyY2VCcmVha3BvaW50
cykKLXsKLSAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6aXRlcmF0b3IgaXQgPSBicmVha3BvaW50
cy0+YmVnaW4oKTsgaXQgIT0gYnJlYWtwb2ludHMtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGJv
b2wgb2s7Ci0gICAgICAgIGludCBsaW5lTnVtYmVyID0gaXQtPmZpcnN0LnRvSW50KCZvayk7Ci0g
ICAgICAgIGlmICghb2spCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCA9IGl0LT5zZWNvbmQtPmFzT2JqZWN0KCk7Ci0gICAg
ICAgIGlmICghYnJlYWtwb2ludCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBib29s
IGVuYWJsZWQ7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gZW5hYmxlZFZhbHVlID0g
YnJlYWtwb2ludC0+Z2V0KCJlbmFibGVkIik7Ci0gICAgICAgIGlmICghZW5hYmxlZFZhbHVlIHx8
ICFlbmFibGVkVmFsdWUtPmFzQm9vbGVhbigmZW5hYmxlZCkpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgU3RyaW5nIGNvbmRpdGlvbjsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBjb25kaXRpb25WYWx1ZSA9IGJyZWFrcG9pbnQtPmdldCgiY29uZGl0aW9uIik7Ci0gICAg
ICAgIGlmICghY29uZGl0aW9uVmFsdWUgfHwgIWNvbmRpdGlvblZhbHVlLT5hc1N0cmluZygmY29u
ZGl0aW9uKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzb3VyY2VCcmVha3BvaW50
cy0+c2V0KGxpbmVOdW1iZXIsIFNjcmlwdEJyZWFrcG9pbnQoZW5hYmxlZCwgY29uZGl0aW9uKSk7
Ci0gICAgfQotfQotCi1QYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gU2NyaXB0QnJlYWtwb2lu
dDo6aW5zcGVjdG9yT2JqZWN0RnJvbVNvdXJjZUJyZWFrcG9pbnRzKGNvbnN0IFNvdXJjZUJyZWFr
cG9pbnRzJiBzb3VyY2VCcmVha3BvaW50cykKLXsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBicmVha3BvaW50cyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgZm9yIChTb3Vy
Y2VCcmVha3BvaW50czo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzb3VyY2VCcmVha3BvaW50cy5iZWdp
bigpOyBpdCAhPSBzb3VyY2VCcmVha3BvaW50cy5lbmQoKTsgKytpdCkgewotICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICAgICAgYnJlYWtwb2ludC0+c2V0Qm9vbGVhbigiZW5hYmxlZCIsIGl0LT5zZWNvbmQu
ZW5hYmxlZCk7Ci0gICAgICAgIGJyZWFrcG9pbnQtPnNldFN0cmluZygiY29uZGl0aW9uIiwgaXQt
PnNlY29uZC5jb25kaXRpb24pOwotICAgICAgICBicmVha3BvaW50cy0+c2V0T2JqZWN0KFN0cmlu
Zzo6bnVtYmVyKGl0LT5maXJzdCksIGJyZWFrcG9pbnQpOwotICAgIH0KLSAgICByZXR1cm4gYnJl
YWtwb2ludHMucmVsZWFzZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1NjcmlwdEJyZWFrcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRC
cmVha3BvaW50LmgKaW5kZXggZDhhYzc2Mi4uOTUyMWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oCkBAIC0zMSwxOSArMzEsMTUgQEAKICNkZWZpbmUg
U2NyaXB0QnJlYWtwb2ludF9oCiAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVj
dG9yT2JqZWN0Owotc3RydWN0IFNjcmlwdEJyZWFrcG9pbnQ7Ci0KLXR5cGVkZWYgSGFzaE1hcDxp
bnQsIFNjcmlwdEJyZWFrcG9pbnQ+IFNvdXJjZUJyZWFrcG9pbnRzOwotCiBzdHJ1Y3QgU2NyaXB0
QnJlYWtwb2ludCB7Ci0gICAgU2NyaXB0QnJlYWtwb2ludChib29sIGVuYWJsZWQsIGNvbnN0IFN0
cmluZyYgY29uZGl0aW9uKQotICAgICAgICA6IGVuYWJsZWQoZW5hYmxlZCkKKyAgICBTY3JpcHRC
cmVha3BvaW50KGxvbmcgbGluZU51bWJlciwgbG9uZyBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgY29uZGl0aW9uLCBib29sIGVuYWJsZWQpCisgICAgICAgIDogbGluZU51bWJlcihsaW5lTnVt
YmVyKQorICAgICAgICAsIGNvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgY29u
ZGl0aW9uKGNvbmRpdGlvbikKKyAgICAgICAgLCBlbmFibGVkKGVuYWJsZWQpCiAgICAgewogICAg
IH0KIApAQCAtNTEsMTMgKzQ3LDEwIEBAIHN0cnVjdCBTY3JpcHRCcmVha3BvaW50IHsKICAgICB7
CiAgICAgfQogCi0gICAgYm9vbCBlbmFibGVkOworICAgIGxvbmcgbGluZU51bWJlcjsKKyAgICBs
b25nIGNvbHVtbk51bWJlcjsKICAgICBTdHJpbmcgY29uZGl0aW9uOwotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBzdGF0aWMgdm9pZCBzb3VyY2VCcmVha3BvaW50c0Zyb21JbnNwZWN0b3JP
YmplY3QoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBTb3VyY2VCcmVha3BvaW50cyopOwot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gaW5zcGVjdG9yT2JqZWN0RnJv
bVNvdXJjZUJyZWFrcG9pbnRzKGNvbnN0IFNvdXJjZUJyZWFrcG9pbnRzJik7Ci0jZW5kaWYKKyAg
ICBib29sIGVuYWJsZWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnQuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnQuanMKaW5kZXggZTVlMTc2
OC4uYWZhZDU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9CcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
QnJlYWtwb2ludC5qcwpAQCAtMjksMTQgKzI5LDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5CcmVha3BvaW50ID0gZnVuY3Rpb24oZGVidWdnZXJNb2RlbCwgYnJlYWtw
b2ludElkLCBzb3VyY2VJRCwgdXJsLCBsaW5lLCBlbmFibGVkLCBjb25kaXRpb24pCitXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludCA9IGZ1bmN0aW9uKGRlYnVnZ2VyTW9kZWwsIGJyZWFrcG9pbnRJZCwg
ZGF0YSkKIHsKICAgICB0aGlzLmlkID0gYnJlYWtwb2ludElkOwotICAgIHRoaXMudXJsID0gdXJs
OwotICAgIHRoaXMubGluZSA9IGxpbmU7Ci0gICAgdGhpcy5zb3VyY2VJRCA9IHNvdXJjZUlEOwot
ICAgIHRoaXMuX2VuYWJsZWQgPSBlbmFibGVkOwotICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRp
dGlvbiB8fCAiIjsKKyAgICB0aGlzLnNvdXJjZUlEID0gZGF0YS5zb3VyY2VJRDsKKyAgICB0aGlz
LmxpbmUgPSBkYXRhLmxpbmVOdW1iZXI7CisgICAgdGhpcy5jb2x1bW4gPSBkYXRhLmNvbHVtbk51
bWJlcjsKKyAgICB0aGlzLl9jb25kaXRpb24gPSBkYXRhLmNvbmRpdGlvbjsKKyAgICB0aGlzLl9l
bmFibGVkID0gZGF0YS5lbmFibGVkOwogICAgIHRoaXMuX2hpdCA9IGZhbHNlOwogICAgIHRoaXMu
X2RlYnVnZ2VyTW9kZWwgPSBkZWJ1Z2dlck1vZGVsOwogfQpAQCAtNjAsNiArNjAsMTMgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5f
Y29uZGl0aW9uOwogICAgIH0sCiAKKyAgICBnZXQgdXJsKCkKKyAgICB7CisgICAgICAgIGlmICgh
dGhpcy5fdXJsKQorICAgICAgICAgICAgdGhpcy5fdXJsID0gdGhpcy5fZGVidWdnZXJNb2RlbC5z
Y3JpcHRGb3JTb3VyY2VJRCh0aGlzLnNvdXJjZUlEKS5zb3VyY2VVUkw7CisgICAgICAgIHJldHVy
biB0aGlzLl91cmw7CisgICAgfSwKKwogICAgIGdldCBoaXQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2hpdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCmluZGV4IDY3ZWYxMTIuLmMwNmVjZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFn
ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
TWFuYWdlci5qcwpAQCAtNDA4LDcgKzQwOCw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0QnJl
YWtwb2ludC5wcm90b3R5cGUgPSB7CiAgICAgX3NlcmlhbGl6ZVRvSlNPTjogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgdmFyIHR5cGUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIu
QnJlYWtwb2ludFR5cGVzLkpTOwotICAgICAgICByZXR1cm4geyB0eXBlOiB0eXBlLCBjb25kaXRp
b246IHsgdXJsOiB0aGlzLl91cmwsIGxpbmVOdW1iZXI6IHRoaXMuX2xpbmVOdW1iZXIsIGNvbmRp
dGlvbjogdGhpcy5fY29uZGl0aW9uIH0gfTsKKyAgICAgICAgcmV0dXJuIHsgdHlwZTogdHlwZSwg
Y29uZGl0aW9uOiB7IHVybDogdGhpcy5fdXJsLCBsaW5lTnVtYmVyOiB0aGlzLl9saW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXI6IDEsIGNvbmRpdGlvbjogdGhpcy5fY29uZGl0aW9uIH0gfTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVi
dWdnZXJNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJNb2RlbC5qcwppbmRleCA4ZjViY2Y3Li40NjJmZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzCkBAIC02MiwxOSArNjIs
MjYgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVtb3ZlQnJlYWtwb2ludCh0aGlzLl9jb250aW51ZVRv
TGluZUJyZWFrcG9pbnRJZCk7CiAgICAgICAgICAgICB0aGlzLl9jb250aW51ZVRvTGluZUJyZWFr
cG9pbnRJZCA9IGJyZWFrcG9pbnRJZDsKICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnNldEJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1iZXIsICIiLCB0cnVlLCBkaWRTZXRC
cmVha3BvaW50LmJpbmQodGhpcykpOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHsgc291cmNl
SUQ6IHNvdXJjZUlELCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IDEsIGNv
bmRpdGlvbjogIiIsIGVuYWJsZWQ6IHRydWUgfTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5z
ZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzKSk7CiAg
ICAgICAgIGlmICh0aGlzLl9wYXVzZWQpCiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
c3VtZSgpOwogICAgIH0sCiAKICAgICBzZXRCcmVha3BvaW50OiBmdW5jdGlvbihzb3VyY2VJRCwg
bGluZU51bWJlciwgZW5hYmxlZCwgY29uZGl0aW9uKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24g
ZGlkU2V0QnJlYWtwb2ludChicmVha3BvaW50SWQsIGFjdHVhbExpbmVOdW1iZXIpCisgICAgICAg
IGZ1bmN0aW9uIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludElkLCBhY3R1YWxMaW5lTnVtYmVy
LCBhY3R1YWxDb2x1bW5OdW1iZXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChicmVha3Bv
aW50SWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludFNldE9uQmFja2VuZChicmVh
a3BvaW50SWQsIHNvdXJjZUlELCBhY3R1YWxMaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQs
IGxpbmVOdW1iZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghYnJlYWtwb2ludElkKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQub3JpZ2luYWxMaW5l
TnVtYmVyID0gYnJlYWtwb2ludC5saW5lTnVtYmVyOworICAgICAgICAgICAgYnJlYWtwb2ludC5v
cmlnaW5hbENvbHVtbnVtYmVyID0gYnJlYWtwb2ludC5jb2x1bW5OdW1iZXI7CisgICAgICAgICAg
ICBicmVha3BvaW50LmxpbmVOdW1iZXIgPSBhY3R1YWxMaW5lTnVtYmVyOworICAgICAgICAgICAg
YnJlYWtwb2ludC5jb2x1bW5OdW1iZXIgPSBhY3R1YWxDb2x1bW5OdW1iZXI7CisgICAgICAgICAg
ICB0aGlzLl9icmVha3BvaW50U2V0T25CYWNrZW5kKGJyZWFrcG9pbnRJZCwgYnJlYWtwb2ludCwg
ZmFsc2UpOwogICAgICAgICB9Ci0gICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QnJlYWtwb2lu
dChzb3VyY2VJRCwgbGluZU51bWJlciwgY29uZGl0aW9uLCBlbmFibGVkLCBkaWRTZXRCcmVha3Bv
aW50LmJpbmQodGhpcykpOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IHsgc291cmNlSUQ6IHNv
dXJjZUlELCBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IDEsIGNvbmRpdGlv
bjogY29uZGl0aW9uLCBlbmFibGVkOiBlbmFibGVkIH07CisgICAgICAgIEluc3BlY3RvckJhY2tl
bmQuc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcykp
OwogICAgIH0sCiAKICAgICByZW1vdmVCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50SWQp
CkBAIC04NiwxOCArOTMsMTcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNb2RlbC5FdmVudHMuQnJlYWtwb2ludFJlbW92ZWQsIGJyZWFrcG9pbnRJZCk7CiAg
ICAgfSwKIAotICAgIF9icmVha3BvaW50U2V0T25CYWNrZW5kOiBmdW5jdGlvbihicmVha3BvaW50
SWQsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQsIG9yaWdpbmFsTGlu
ZU51bWJlciwgcmVzdG9yZWQpCisgICAgX2JyZWFrcG9pbnRTZXRPbkJhY2tlbmQ6IGZ1bmN0aW9u
KGJyZWFrcG9pbnRJZCwgYnJlYWtwb2ludERhdGEsIHJlc3RvcmVkKQogICAgIHsKLSAgICAgICAg
dmFyIHNvdXJjZUlEQW5kTGluZSA9IHRoaXMuX2VuY29kZVNvdXJjZUlEQW5kTGluZShzb3VyY2VJ
RCwgbGluZU51bWJlcik7CisgICAgICAgIHZhciBzb3VyY2VJREFuZExpbmUgPSB0aGlzLl9lbmNv
ZGVTb3VyY2VJREFuZExpbmUoYnJlYWtwb2ludERhdGEuc291cmNlSUQsIGJyZWFrcG9pbnREYXRh
LmxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoc291cmNlSURBbmRMaW5lIGluIHRoaXMuX3NvdXJj
ZUlEQW5kTGluZVRvQnJlYWtwb2ludElkKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElkKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIHZhciB1cmwgPSB0aGlzLl9zY3JpcHRzW3NvdXJjZUlEXS5zb3Vy
Y2VVUkw7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50KHRoaXMsIGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIHVybCwgbGluZU51bWJlciwgZW5hYmxl
ZCwgY29uZGl0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQodGhpcywgYnJlYWtwb2ludElkLCBicmVha3BvaW50RGF0YSk7CiAgICAgICAg
IGJyZWFrcG9pbnQucmVzdG9yZWQgPSByZXN0b3JlZDsKLSAgICAgICAgYnJlYWtwb2ludC5vcmln
aW5hbExpbmVOdW1iZXIgPSBvcmlnaW5hbExpbmVOdW1iZXI7CisgICAgICAgIGJyZWFrcG9pbnQu
b3JpZ2luYWxMaW5lTnVtYmVyID0gYnJlYWtwb2ludERhdGEub3JpZ2luYWxMaW5lTnVtYmVyOwog
ICAgICAgICB0aGlzLl9icmVha3BvaW50c1ticmVha3BvaW50SWRdID0gYnJlYWtwb2ludDsKICAg
ICAgICAgdGhpcy5fc291cmNlSURBbmRMaW5lVG9CcmVha3BvaW50SWRbc291cmNlSURBbmRMaW5l
XSA9IGJyZWFrcG9pbnRJZDsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwgYnJlYWtw
b2ludCk7CkBAIC0yNDQsOSArMjUwLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGlzcGF0Y2hl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwuX2ZhaWxlZFRvUGFy
c2VTY3JpcHRTb3VyY2Uoc291cmNlVVJMLCBzb3VyY2UsIHN0YXJ0aW5nTGluZSwgZXJyb3JMaW5l
LCBlcnJvck1lc3NhZ2UpOwogICAgIH0sCiAKLSAgICBicmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0
aW9uKGJyZWFrcG9pbnRJZCwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgZW5hYmxl
ZCwgb3JpZ2luYWxMaW5lTnVtYmVyKQorICAgIGJyZWFrcG9pbnRSZXNvbHZlZDogZnVuY3Rpb24o
YnJlYWtwb2ludElkLCBicmVha3BvaW50KQogICAgIHsKLSAgICAgICAgdGhpcy5fZGVidWdnZXJN
b2RlbC5fYnJlYWtwb2ludFNldE9uQmFja2VuZChicmVha3BvaW50SWQsIHNvdXJjZUlELCBsaW5l
TnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQsIG9yaWdpbmFsTGluZU51bWJlciwgdHJ1ZSk7Cisg
ICAgICAgIHRoaXMuX2RlYnVnZ2VyTW9kZWwuX2JyZWFrcG9pbnRTZXRPbkJhY2tlbmQoYnJlYWtw
b2ludElkLCBicmVha3BvaW50LCB0cnVlKTsKICAgICB9LAogCiAgICAgZGlkQ3JlYXRlV29ya2Vy
OiBmdW5jdGlvbigpCg==
</data>
<flag name="review"
          id="70647"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>