<?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>56389</bug_id>
          
          <creation_ts>2011-03-15 11:01:06 -0700</creation_ts>
          <short_desc>Web Inspector: split InspectorAgent.populateScriptObjects into more granular agent-specific requests</short_desc>
          <delta_ts>2011-03-15 23:48:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>54112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367786</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-15 11:01:06 -0700</bug_when>
    <thetext>Web Inspector: split InspectorAgent.populateScriptObjects into more granular agent-specific requests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367790</commentid>
    <comment_count>1</comment_count>
      <attachid>85828</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-15 11:04:18 -0700</bug_when>
    <thetext>Created attachment 85828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367882</commentid>
    <comment_count>2</comment_count>
      <attachid>85828</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-15 13:14:07 -0700</bug_when>
    <thetext>Comment on attachment 85828
Patch

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

All looks good except for the getPreferredPanel. We should guess by the event / action.

&gt; Source/WebCore/inspector/Inspector.idl:37
&gt; +        void getPreferredPanel(out String panel);

I don&apos;t particularly like it. Inspector should determine preferred panel by itself based on the event that is happening.

&gt; Source/WebCore/inspector/InspectorAgent.cpp:459
&gt;  void InspectorAgent::pushDataCollectedOffline()

It should be renamed to pushWorkers for now? Can we also push them from within debugger::enable instead?

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:292
&gt; +    m_document = 0;

Comment would be nice.

&gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:141
&gt; +        ProfilerAgent.isEnabled(function(error, value) {

Please declare a named function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368190</commentid>
    <comment_count>3</comment_count>
      <attachid>85909</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-15 22:41:56 -0700</bug_when>
    <thetext>Created attachment 85909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368197</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-15 22:55:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 85828 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=85828&amp;action=review
&gt; 
&gt; All looks good except for the getPreferredPanel. We should guess by the event / action.
&gt; 
Good point. Replaced it with the showPanel event which is already used when the frontend is open.


&gt; &gt; Source/WebCore/inspector/Inspector.idl:37
&gt; &gt; +        void getPreferredPanel(out String panel);
&gt; 
&gt; I don&apos;t particularly like it. Inspector should determine preferred panel by itself based on the event that is happening.
&gt; 
See above.

&gt; &gt; Source/WebCore/inspector/InspectorAgent.cpp:459
&gt; &gt;  void InspectorAgent::pushDataCollectedOffline()
&gt; 
&gt; It should be renamed to pushWorkers for now? Can we also push them from within debugger::enable instead?
&gt; 
The code has been inlined into InspectorAgent::setFrontend since it&apos;s the only place where it was called. I don&apos;t like to move this into the debugger agent now for several reasons: 1) debugger instrumentation is off when there is no front-end while workers data is collected in that case too 2) this code would introduce additional dependency on the inspected page in the debugger agent 3) it will go away once we have native debugger for workers.

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:292
&gt; &gt; +    m_document = 0;
&gt; 
&gt; Comment would be nice.
&gt; 
Done.

&gt; &gt; Source/WebCore/inspector/front-end/ProfilesPanel.js:141
&gt; &gt; +        ProfilerAgent.isEnabled(function(error, value) {
&gt; 
&gt; Please declare a named function.
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368202</commentid>
    <comment_count>5</comment_count>
      <attachid>85909</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-15 23:05:34 -0700</bug_when>
    <thetext>Comment on attachment 85909
Patch

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

&gt; Source/WebCore/inspector/InspectorAgent.cpp:401
&gt; +        m_frontend-&gt;inspector()-&gt;showPanel(m_showPanelAfterVisible);

Just an FYI, no action required: I am still not a fan of it. We should make WebInspector contribute to the Develop menu instead. Hence we would not need to be involved with the panel names on the backend side. Maybe a FIXME here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368220</commentid>
    <comment_count>6</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-15 23:47:39 -0700</bug_when>
    <thetext>Committed r81222: &lt;http://trac.webkit.org/changeset/81222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368221</commentid>
    <comment_count>7</comment_count>
      <attachid>85909</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-15 23:48:58 -0700</bug_when>
    <thetext>Comment on attachment 85909
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorAgent.cpp:401
&gt;&gt; +        m_frontend-&gt;inspector()-&gt;showPanel(m_showPanelAfterVisible);
&gt; 
&gt; Just an FYI, no action required: I am still not a fan of it. We should make WebInspector contribute to the Develop menu instead. Hence we would not need to be involved with the panel names on the backend side. Maybe a FIXME here.

Filed a bug on this: https://bugs.webkit.org/show_bug.cgi?id=56451</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85828</attachid>
            <date>2011-03-15 11:04:18 -0700</date>
            <delta_ts>2011-03-15 22:41:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56389-20110315210415.patch</filename>
            <type>text/plain</type>
            <size>15851</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODExMzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYzZkNjNiMGY2NjliN2E0
MWY2YTgzNWM0YjVlYzNmZDRlZmM4ZTFhLi5iOGI2NWE2NDJkYzU4MDI5ODFlMWI1MDZmNjE1YWRj
MGU1NTdlNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDMtMTUgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgSW5zcGVjdG9y
QWdlbnQucG9wdWxhdGVTY3JpcHRPYmplY3RzIGludG8gbW9yZSBncmFudWxhciBhZ2VudC1zcGVj
aWZpYyByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTYzODkKKworICAgICAgICBJbnN0ZWFkIG9mIHNlbmRpbmcgb25lIGJpZyByZXF1ZXN0
IHBvcHVsYXRlU2NyaXB0T2JqZWN0cyBlYWNoIGFnZW50IHJlcXVlc3RzCisgICAgICAgIGZvciBp
bml0aWFsIGRhdGEgaW4gaXRzIGNvbnN0cnVjdG9yLgorICAgICAgICAKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpyZXN0b3JlSW5zcGVjdG9yU3RhdGVG
cm9tQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpzZXRGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6cHVzaERhdGFDb2xsZWN0ZWRP
ZmZsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpnZXRQcmVmZXJyZWRQ
YW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnJlc3RvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanM6CisKIDIwMTEtMDMtMTUgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAwNjNlM2U5ZmUyMmRiNjE1ZWQxODcwYjNjODI4
ZjU5NTU2YWE2OTg1Li41NDA1NDNlN2M1OTg2Y2U5MTUzMWJlYjQ0OTI5MTA1MmM0NjVmNGI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMzQsNyArMzQsNyBAQCBt
b2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChpbiBT
dHJpbmcgc2NyaXB0U291cmNlKTsKICAgICAgICAgdm9pZCByZW1vdmVBbGxTY3JpcHRzVG9FdmFs
dWF0ZU9uTG9hZCgpOwogICAgICAgICB2b2lkIHJlbG9hZFBhZ2UoaW4gYm9vbGVhbiBpZ25vcmVD
YWNoZSk7Ci0gICAgICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CisgICAgICAgIHZv
aWQgZ2V0UHJlZmVycmVkUGFuZWwob3V0IFN0cmluZyBwYW5lbCk7CiAKICAgICAgICAgdm9pZCBv
cGVuSW5JbnNwZWN0ZWRXaW5kb3coaW4gU3RyaW5nIHVybCk7CiAgICAgICAgIHZvaWQgc2V0U2Vh
cmNoaW5nRm9yTm9kZShpbiBib29sZWFuIGVuYWJsZWQsIG91dCBib29sZWFuIG5ld1N0YXRlKTsK
QEAgLTI1NCw2ICsyNTQsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRp
b25hbD1JTlNQRUNUT1JdIFByb2ZpbGVyIHsKICAgICAgICAgdm9pZCBlbmFibGUoKTsKICAgICAg
ICAgdm9pZCBkaXNhYmxlKCk7CisgICAgICAgIHZvaWQgaXNFbmFibGVkKG91dCBib29sZWFuIHN0
YXRlKTsKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIHN0b3AoKTsKICAgICAg
ICAgW2V2ZW50XSB2b2lkIHByb2ZpbGVyV2FzRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggMmU5ZjM4NGVjYWI5MjAzNWQ0Y2Q2Yzhh
MzJiM2FjNjhkYjQ5OTMxNy4uMmNkZGYzYzNlZDU4ZTBmNjljYTJiZWEzMTljMjU3MDUzYmYyNjQx
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2Us
IEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbmplY3RlZFNjcmkKICAgICAsIG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhuZXcgSW5zdHJ1bWVudGluZ0FnZW50cygpKQogICAgICwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9zdGF0ZShuZXcgSW5z
cGVjdG9yU3RhdGUoY2xpZW50KSkKLSAgICAsIG1fZG9tQWdlbnQoSW5zcGVjdG9yRE9NQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIGluamVj
dGVkU2NyaXB0TWFuYWdlcikpCisgICAgLCBtX2RvbUFnZW50KEluc3BlY3RvckRPTUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpLCBp
bmplY3RlZFNjcmlwdE1hbmFnZXIpKQogICAgICwgbV9jc3NBZ2VudChuZXcgSW5zcGVjdG9yQ1NT
QWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgpKSkKICNp
ZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQoSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCkBAIC0yMTksOCAr
MjE5LDggQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNv
b2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXQKIAogICAgIG1fZnJvbnRlbmQtPmluc3Bl
Y3RvcigpLT5mcm9udGVuZFJldXNlZCgpOwogICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5p
bnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3BlY3RlZFVSTCgpLnN0cmluZygpKTsKLSAgICBwdXNoRGF0
YUNvbGxlY3RlZE9mZmxpbmUoKTsKIAorICAgIG1fZG9tQWdlbnQtPnJlc3RvcmUoKTsKICAgICBt
X3Jlc291cmNlQWdlbnQtPnJlc3RvcmUoKTsKICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc3RvcmUo
KTsKIApAQCAtMzk2LDYgKzM5NiwxMiBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCogaW5zcGVjdG9yRnJvbnRlbmQpCiAjZW5kaWYKICAgICAvLyBJ
bml0aWFsaXplIFdlYiBJbnNwZWN0b3IgdGl0bGUuCiAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9y
KCktPmluc3BlY3RlZFVSTENoYW5nZWQoaW5zcGVjdGVkVVJMKCkuc3RyaW5nKCkpOworCisgICAg
aWYgKG1fbm9kZVRvRm9jdXMpCisgICAgICAgIGZvY3VzTm9kZSgpOworICAgIHB1c2hEYXRhQ29s
bGVjdGVkT2ZmbGluZSgpOworICAgIC8vIERpc3BhdGNoIHBlbmRpbmcgZnJvbnRlbmQgY29tbWFu
ZHMKKyAgICBpc3N1ZUV2YWx1YXRlRm9yVGVzdENvbW1hbmRzKCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQWdlbnQ6OmRpc2Nvbm5lY3RGcm9udGVuZCgpCkBAIC00NTAsMzkgKzQ1Niw4IEBAIHZvaWQg
SW5zcGVjdG9yQWdlbnQ6OnJlbGVhc2VGcm9udGVuZExpZmV0aW1lQWdlbnRzKCkKICAgICBtX3J1
bnRpbWVBZ2VudC5jbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvckFnZW50Ojpwb3B1bGF0ZVNj
cmlwdE9iamVjdHMoRXJyb3JTdHJpbmcqKQotewotICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKLSAg
ICBpZiAoIW1fZnJvbnRlbmQpCi0gICAgICAgIHJldHVybjsKLQotI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQotICAgIGlmIChtX3Byb2ZpbGVyQWdlbnQtPmVuYWJsZWQoKSkKLSAgICAg
ICAgbV9mcm9udGVuZC0+cHJvZmlsZXIoKS0+cHJvZmlsZXJXYXNFbmFibGVkKCk7Ci0jZW5kaWYK
LQotICAgIHB1c2hEYXRhQ29sbGVjdGVkT2ZmbGluZSgpOwotCi0gICAgaWYgKG1fbm9kZVRvRm9j
dXMpCi0gICAgICAgIGZvY3VzTm9kZSgpOwotCi0gICAgaWYgKCFtX3Nob3dQYW5lbEFmdGVyVmlz
aWJsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPnNob3dQ
YW5lbChtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZSk7Ci0gICAgICAgIG1fc2hvd1BhbmVsQWZ0ZXJW
aXNpYmxlID0gIiI7Ci0gICAgfQotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0g
ICAgbV9kZWJ1Z2dlckFnZW50LT5lbmFibGVEZWJ1Z2dlckFmdGVyU2hvd24oKTsKLSNlbmRpZgot
Ci0gICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcwotICAgIGlzc3VlRXZh
bHVhdGVGb3JUZXN0Q29tbWFuZHMoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JBZ2VudDo6cHVzaERh
dGFDb2xsZWN0ZWRPZmZsaW5lKCkKIHsKLSAgICBtX2RvbUFnZW50LT5zZXREb2N1bWVudChtX2lu
c3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKLQogI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoV09SS0VSUykKICAgICBXb3JrZXJzTWFwOjppdGVy
YXRvciB3b3JrZXJzRW5kID0gbV93b3JrZXJzLmVuZCgpOwogICAgIGZvciAoV29ya2Vyc01hcDo6
aXRlcmF0b3IgaXQgPSBtX3dvcmtlcnMuYmVnaW4oKTsgaXQgIT0gd29ya2Vyc0VuZDsgKytpdCkg
ewpAQCAtMTA0OCw2ICsxMDIzLDEyIEBAIHZvaWQgSW5zcGVjdG9yQWdlbnQ6OnNob3dQYW5lbChj
b25zdCBTdHJpbmcmIHBhbmVsKQogICAgIG1fZnJvbnRlbmQtPmluc3BlY3RvcigpLT5zaG93UGFu
ZWwocGFuZWwpOwogfQogCit2b2lkIEluc3BlY3RvckFnZW50OjpnZXRQcmVmZXJyZWRQYW5lbChF
cnJvclN0cmluZyosIFN0cmluZyogcmVzdWx0KQoreworICAgICpyZXN1bHQgPSBtX3Nob3dQYW5l
bEFmdGVyVmlzaWJsZTsKKyAgICBtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZSA9IFN0cmluZygpOwor
fQorCiB2b2lkIEluc3BlY3RvckFnZW50Ojppc3N1ZUV2YWx1YXRlRm9yVGVzdENvbW1hbmRzKCkK
IHsKICAgICBpZiAobV9mcm9udGVuZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQWdlbnQuaAppbmRleCBlNGE2NzUyYTZiM2Y5YzY4Mjc5YzU1M2QxOTVmZDQ1OTA2MTM2YTBh
Li42NjQzNmZlZjIxYmI2MTJjM2VlZmUxZjEzYWU5YmQ4MDhmZTIzZDFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yLCB1bnNpZ25l
ZCBsb25nIGZyYW1lSWQpOwogICAgIHZvaWQgaGlkZUZyYW1lSGlnaGxpZ2h0KEVycm9yU3RyaW5n
KiBlcnJvcikgeyBoaWRlSGlnaGxpZ2h0KGVycm9yKTsgfQorICAgIHZvaWQgZ2V0UHJlZmVycmVk
UGFuZWwoRXJyb3JTdHJpbmcqLCBTdHJpbmcqKTsKIAogICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5z
cGVjdG9yRnJvbnRlbmQqKTsKICAgICBJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQoKSBjb25z
dCB7IHJldHVybiBtX2Zyb250ZW5kOyB9CkBAIC0xOTksNyArMjAwLDYgQEAgcHVibGljOgogICAg
IC8vIEluc3BlY3RvckFnZW50IEFQSQogICAgIHZvaWQgZ2V0SW5zcGVjdG9yU3RhdGUoUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4qIHN0YXRlKTsKICAgICB2b2lkIHNldE1vbml0b3JpbmdYSFJFbmFi
bGVkKGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwotICAgIHZvaWQgcG9wdWxhdGVTY3Jp
cHRPYmplY3RzKEVycm9yU3RyaW5nKiBlcnJvcik7CiAgICAgLy8gRm9sbG93aW5nIGFyZSB1c2Vk
IGZyb20gSW5zcGVjdG9yQmFja2VuZCBhbmQgaW50ZXJuYWxseS4KICAgICB2b2lkIHNldFNlYXJj
aGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBib29sIGVuYWJsZWQsIGJvb2wqIG5ld1N0
YXRlKTsKICAgICB2b2lkIGRpZEV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoRXJyb3JTdHJpbmcq
IGVycm9yLCBsb25nIGNhbGxJZCwgY29uc3QgU3RyaW5nJiBqc29uUmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDIyNTRiZTQ1
MTc0M2ExMjdlOWU0ODdjMDg5YmY1YmZmOWViYTM2OGUuLjM5YTc2Mzc5NTFmOTFiMzkzNTY5OWY2
ZmI1Mzc0N2U0MzI5YWZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uRXZl
bnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTI1Miw4ICsyNTMsOSBAQCB2b2lk
IFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s6Om9uVGltZXIoVGltZXI8UmV2YWxpZGF0ZVN0
eWxlQXR0cmlidXRlVGFzaz4qKQogICAgIG1fZWxlbWVudHMuY2xlYXIoKTsKIH0KIAotSW5zcGVj
dG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JET01BZ2VudDo6
SW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IG1faW5z
dHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgICwgbV9pbnNwZWN0ZWRQ
YWdlKGluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2luc3BlY3RvclN0YXRlKGluc3BlY3RvclN0YXRl
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQog
ICAgICwgbV9mcm9udGVuZCgwKQpAQCAtMjczLDYgKzI3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICBBU1NF
UlQoIW1fZnJvbnRlbmQpOwogICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+ZG9tKCk7CiAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKKyAgICBt
X2RvY3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2xlYXJGcm9udGVuZCgpCkBAIC0yODQsNiArMjg3
LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogICAgIHJlc2V0
KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc3RvcmUoKQoreworICAgIG1fZG9j
dW1lbnQgPSAwOworICAgIHNldERvY3VtZW50KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkt
PmRvY3VtZW50KCkpOworfQorCiBWZWN0b3I8RG9jdW1lbnQqPiBJbnNwZWN0b3JET01BZ2VudDo6
ZG9jdW1lbnRzKCkKIHsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDQ1Y2M5M2MxZDIxODBh
MDkxZTUwM2ZiYTk1NzllNjMyNjg0MmVhM2IuLjM2M2YxOWM0NWVlNDY0YThhZGJlMTUxYTBhNGZh
Mzg0MDU2NGRhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCkBAIC05MywxNSArOTMsMTYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KikgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFz
c093blB0cjxJbnNwZWN0b3JET01BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3Rh
dGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JET01BZ2VudChpbnN0cnVtZW50
aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRE9NQWdlbnQoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgcGFnZSwgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpOwogICAg
IH0KIAogICAgIH5JbnNwZWN0b3JET01BZ2VudCgpOwogCiAgICAgdm9pZCBzZXRGcm9udGVuZChJ
bnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZvaWQg
cmVzdG9yZSgpOwogCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CiAgICAgdm9p
ZCByZXNldCgpOwpAQCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBp
c1doaXRlc3BhY2UoTm9kZSopOwogCiBwcml2YXRlOgotICAgIEluc3BlY3RvckRPTUFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdl
ciopOworICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlKiwg
SW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIC8vIE5vZGUt
cmVsYXRlZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGxvbmc+
IE5vZGVUb0lkTWFwOwpAQCAtMTg5LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNj
YXJkQmluZGluZ3MoKTsKIAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGlu
Z0FnZW50czsKKyAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yU3RhdGUq
IG1faW5zcGVjdG9yU3RhdGU7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6RE9NKiBtX2Zyb250ZW5kOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCmluZGV4IDJjZGRhZWM1ZDVjYmVhOTdjMGU0OWY4MmFmYmMxMmM4ODVjNTgxNjAuLjIzNGI4
N2IwYjhlZDFkYzcyOTM0ZjhiMTVmNmI5Y2M2YTM2NWQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEyOCwxMCAr
MTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0b3JlKCkKIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250
ZW5kKQogewogICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+ZGVidWdnZXIoKTsKLX0KIAotdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGVEZWJ1Z2dlckFmdGVyU2hvd24oKQotewog
ICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKERlYnVnZ2VyQWdlbnRTdGF0ZTo6
ZW5hYmxlV2hlblNob3duKSkgewogICAgICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFu
KERlYnVnZ2VyQWdlbnRTdGF0ZTo6ZW5hYmxlV2hlblNob3duLCBmYWxzZSk7CiAgICAgICAgIGVu
YWJsZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAppbmRleCBiZTZiMDAxYTg5ZjVkN2I0MDRjMTMzN2FkMGViYmJkYzNmNTJm
MzIxLi45ZjIyMGRlNjgxMmRkM2RmNmI3NjNjZjc0MTZlMzljMjVhODQ2OTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTcz
LDcgKzczLDYgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpOwogICAgIHZvaWQgcmVzdG9y
ZSgpOwogICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2b2lk
IGVuYWJsZURlYnVnZ2VyQWZ0ZXJTaG93bigpOwogICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOwog
CiAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4
IDRjZDU0NTgyZGQ3ZGQyN2Y4ZDFkMDM1NmJkNThmMmJjNmExNjU4NDguLjg5YjkxMjZhMmEzZjlj
ODIxZDljZmEzZDJiMjhiODljODA4OGE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShFcnJv
clN0cmluZyopOworICAgIHZvaWQgaXNFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCogcmVzdWx0
KSB7ICpyZXN1bHQgPSBlbmFibGVkKCk7IH0KICAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKikg
eyBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQogICAgIHZvaWQgc3RvcChFcnJvclN0
cmluZyopIHsgc3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggYjg5
YmI5YWFiYzIxZDFjM2ZkZjk5ZDhlODBiNWJlZDNjMzVlOGIzNi4uNDQwYjQ5ZDUzMzI5MzNjOGFh
Y2E5MzE4YWQzNjkyZmYwNTQxM2Y4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtMTM0LDYgKzEzNCwxNSBAQCBXZWJJ
bnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB9CiAKICAgICBJbnNwZWN0
b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiUHJvZmlsZXIiLCBuZXcgV2ViSW5z
cGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlcih0aGlzKSk7CisKKyAgICBpZiAoUHJlZmVyZW5jZXMu
cHJvZmlsZXJBbHdheXNFbmFibGVkIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wcm9maWxlckVu
YWJsZWQpCisgICAgICAgIFByb2ZpbGVyQWdlbnQuZW5hYmxlKCk7CisgICAgZWxzZSB7CisgICAg
ICAgIFByb2ZpbGVyQWdlbnQuaXNFbmFibGVkKGZ1bmN0aW9uKGVycm9yLCB2YWx1ZSkgeworICAg
ICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVyV2FzRW5h
YmxlZCgpOworICAgICAgICB9LmJpbmQodGhpcykpOworICAgIH0KIH0KIAogV2ViSW5zcGVjdG9y
LlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA3ZDcyZmQ3YjYyMDcyNTdhMmJj
ZTcwOTdmOGFmNGYyZDMxZmY5OTIyLi40M2JjOTExODI3YTc0MjczZjQzZDczMDFlZDAyMTJmODU0
MjRiOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
cmlwdHNQYW5lbC5qcwpAQCAtMTk1LDYgKzE5NSw5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtw
b2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwogICAgIHRoaXMuX3ByZXNl
bnRhdGlvbk1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2Vu
dGF0aW9uTW9kZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVt
b3ZlZCwgdGhpcyk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1l
U2VsZWN0ZWQsIHRoaXMuX2NhbGxGcmFtZVNlbGVjdGVkLCB0aGlzKTsKKworICAgIGlmIChQcmVm
ZXJlbmNlcy5kZWJ1Z2dlckFsd2F5c0VuYWJsZWQgfHwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmRl
YnVnZ2VyRW5hYmxlZCkKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZW5hYmxl
RGVidWdnZXIoKTsKIH0KIAogLy8gS2VlcCB0aGVzZSBpbiBzeW5jIHdpdGggV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKaW5kZXggZTI5NDkwY2JjZDUwZGNjZTc2MDU2MzQxZDIyZWNjM2I0ZDU1Njk1
Zi4uYjgxMjk4NzQwMmYyYWUxYmIzODYyZDlkMGE1ZmZhYmVkNzQwMGVkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTUxNCwyMCAr
NTE0LDEyIEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAKICAgICB0
aGlzLmV4dGVuc2lvblNlcnZlci5pbml0RXh0ZW5zaW9ucygpOwogCi0gICAgZnVuY3Rpb24gb25Q
b3B1bGF0ZVNjcmlwdE9iamVjdHMoZXJyb3IpCi0gICAgewotICAgICAgICBpZiAoIWVycm9yICYm
ICFXZWJJbnNwZWN0b3IuY3VycmVudFBhbmVsKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVsKTsKLSAgICB9Ci0g
ICAgSW5zcGVjdG9yQWdlbnQucG9wdWxhdGVTY3JpcHRPYmplY3RzKG9uUG9wdWxhdGVTY3JpcHRP
YmplY3RzKTsKKyAgICBJbnNwZWN0b3JBZ2VudC5nZXRQcmVmZXJyZWRQYW5lbChmdW5jdGlvbihl
cnJvciwgcGFuZWxOYW1lKSB7CisgICAgICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwocGFuZWxO
YW1lIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0QWN0aXZlUGFuZWwpOworICAgIH0pOwog
Ci0gICAgaWYgKFByZWZlcmVuY2VzLmRlYnVnZ2VyQWx3YXlzRW5hYmxlZCB8fCBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MuZGVidWdnZXJFbmFibGVkKQotICAgICAgICB0aGlzLmRlYnVnZ2VyTW9kZWwu
ZW5hYmxlRGVidWdnZXIoKTsKLSAgICBpZiAoUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdheXNFbmFi
bGVkIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wcm9maWxlckVuYWJsZWQpCi0gICAgICAgIFBy
b2ZpbGVyQWdlbnQuZW5hYmxlKCk7CiAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5tb25p
dG9yaW5nWEhSRW5hYmxlZCkKICAgICAgICAgQ29uc29sZUFnZW50LnNldE1vbml0b3JpbmdYSFJF
bmFibGVkKHRydWUpOwotCiAgICAgQ29uc29sZUFnZW50LnNldENvbnNvbGVNZXNzYWdlc0VuYWJs
ZWQodHJ1ZSk7CiAKICAgICBmdW5jdGlvbiBwcm9wZXJ0eU5hbWVzQ2FsbGJhY2soZXJyb3IsIG5h
bWVzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85909</attachid>
            <date>2011-03-15 22:41:56 -0700</date>
            <delta_ts>2011-03-15 23:48:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56389-20110316084154.patch</filename>
            <type>text/plain</type>
            <size>16121</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODExMzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhYzZkNjNiMGY2NjliN2E0
MWY2YTgzNWM0YjVlYzNmZDRlZmM4ZTFhLi5iOGI2NWE2NDJkYzU4MDI5ODFlMWI1MDZmNjE1YWRj
MGU1NTdlNzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDMtMTUgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3BsaXQgSW5zcGVjdG9y
QWdlbnQucG9wdWxhdGVTY3JpcHRPYmplY3RzIGludG8gbW9yZSBncmFudWxhciBhZ2VudC1zcGVj
aWZpYyByZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTYzODkKKworICAgICAgICBJbnN0ZWFkIG9mIHNlbmRpbmcgb25lIGJpZyByZXF1ZXN0
IHBvcHVsYXRlU2NyaXB0T2JqZWN0cyBlYWNoIGFnZW50IHJlcXVlc3RzCisgICAgICAgIGZvciBp
bml0aWFsIGRhdGEgaW4gaXRzIGNvbnN0cnVjdG9yLgorICAgICAgICAKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yLmlkbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpyZXN0b3JlSW5zcGVjdG9yU3RhdGVG
cm9tQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpzZXRGcm9udGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6cHVzaERhdGFDb2xsZWN0ZWRP
ZmZsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpnZXRQcmVmZXJyZWRQ
YW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpJbnNwZWN0b3JET01BZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NQWdlbnQ6OnJlc3RvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNyZWF0ZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0RnJvbnRlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmlzRW5hYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanM6CisKIDIwMTEtMDMtMTUgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCAwNjNlM2U5ZmUyMmRiNjE1ZWQxODcwYjNjODI4
ZjU5NTU2YWE2OTg1Li5kNGZlNDFhODRiNDAxNmEwOWUyNjNlMzVkNzg0ODA4MmQzNDA5MTVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMzQsNyArMzQsNiBAQCBt
b2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgYWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChpbiBT
dHJpbmcgc2NyaXB0U291cmNlKTsKICAgICAgICAgdm9pZCByZW1vdmVBbGxTY3JpcHRzVG9FdmFs
dWF0ZU9uTG9hZCgpOwogICAgICAgICB2b2lkIHJlbG9hZFBhZ2UoaW4gYm9vbGVhbiBpZ25vcmVD
YWNoZSk7Ci0gICAgICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CiAKICAgICAgICAg
dm9pZCBvcGVuSW5JbnNwZWN0ZWRXaW5kb3coaW4gU3RyaW5nIHVybCk7CiAgICAgICAgIHZvaWQg
c2V0U2VhcmNoaW5nRm9yTm9kZShpbiBib29sZWFuIGVuYWJsZWQsIG91dCBib29sZWFuIG5ld1N0
YXRlKTsKQEAgLTI1NCw2ICsyNTMsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgaW50ZXJmYWNlIFtD
b25kaXRpb25hbD1JTlNQRUNUT1JdIFByb2ZpbGVyIHsKICAgICAgICAgdm9pZCBlbmFibGUoKTsK
ICAgICAgICAgdm9pZCBkaXNhYmxlKCk7CisgICAgICAgIHZvaWQgaXNFbmFibGVkKG91dCBib29s
ZWFuIHN0YXRlKTsKICAgICAgICAgdm9pZCBzdGFydCgpOwogICAgICAgICB2b2lkIHN0b3AoKTsK
ICAgICAgICAgW2V2ZW50XSB2b2lkIHByb2ZpbGVyV2FzRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKaW5kZXggMmU5ZjM4NGVjYWI5MjAzNWQ0
Y2Q2YzhhMzJiM2FjNjhkYjQ5OTMxNy4uNTU2NWMzNjEwZTEwOWM0M2NhODY2ZjdiZDMyY2ZkNzc2
ZTNkZjRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3Bw
CkBAIC0xMzgsNyArMTM4LDcgQEAgSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2Uq
IHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbmplY3RlZFNjcmkKICAgICAsIG1faW5z
dHJ1bWVudGluZ0FnZW50cyhuZXcgSW5zdHJ1bWVudGluZ0FnZW50cygpKQogICAgICwgbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9zdGF0ZShu
ZXcgSW5zcGVjdG9yU3RhdGUoY2xpZW50KSkKLSAgICAsIG1fZG9tQWdlbnQoSW5zcGVjdG9yRE9N
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCks
IGluamVjdGVkU2NyaXB0TWFuYWdlcikpCisgICAgLCBtX2RvbUFnZW50KEluc3BlY3RvckRPTUFn
ZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBtX3N0YXRlLmdl
dCgpLCBpbmplY3RlZFNjcmlwdE1hbmFnZXIpKQogICAgICwgbV9jc3NBZ2VudChuZXcgSW5zcGVj
dG9yQ1NTQWdlbnQobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX2RvbUFnZW50LmdldCgp
KSkKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQoSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSkpCkBAIC0y
MTksOCArMjE5LDggQEAgdm9pZCBJbnNwZWN0b3JBZ2VudDo6cmVzdG9yZUluc3BlY3RvclN0YXRl
RnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXQKIAogICAgIG1fZnJvbnRlbmQt
Pmluc3BlY3RvcigpLT5mcm9udGVuZFJldXNlZCgpOwogICAgIG1fZnJvbnRlbmQtPmluc3BlY3Rv
cigpLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3BlY3RlZFVSTCgpLnN0cmluZygpKTsKLSAgICBw
dXNoRGF0YUNvbGxlY3RlZE9mZmxpbmUoKTsKIAorICAgIG1fZG9tQWdlbnQtPnJlc3RvcmUoKTsK
ICAgICBtX3Jlc291cmNlQWdlbnQtPnJlc3RvcmUoKTsKICAgICBtX3RpbWVsaW5lQWdlbnQtPnJl
c3RvcmUoKTsKIApAQCAtMzk2LDYgKzM5NiwyMiBAQCB2b2lkIEluc3BlY3RvckFnZW50OjpzZXRG
cm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogaW5zcGVjdG9yRnJvbnRlbmQpCiAjZW5kaWYKICAg
ICAvLyBJbml0aWFsaXplIFdlYiBJbnNwZWN0b3IgdGl0bGUuCiAgICAgbV9mcm9udGVuZC0+aW5z
cGVjdG9yKCktPmluc3BlY3RlZFVSTENoYW5nZWQoaW5zcGVjdGVkVVJMKCkuc3RyaW5nKCkpOwor
CisgICAgaWYgKCFtX3Nob3dQYW5lbEFmdGVyVmlzaWJsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9mcm9udGVuZC0+aW5zcGVjdG9yKCktPnNob3dQYW5lbChtX3Nob3dQYW5lbEFmdGVyVmlzaWJs
ZSk7CisgICAgICAgIG1fc2hvd1BhbmVsQWZ0ZXJWaXNpYmxlID0gU3RyaW5nKCk7CisgICAgfQor
ICAgIGlmIChtX25vZGVUb0ZvY3VzKQorICAgICAgICBmb2N1c05vZGUoKTsKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisgICAgV29ya2Vyc01hcDo6
aXRlcmF0b3Igd29ya2Vyc0VuZCA9IG1fd29ya2Vycy5lbmQoKTsKKyAgICBmb3IgKFdvcmtlcnNN
YXA6Oml0ZXJhdG9yIGl0ID0gbV93b3JrZXJzLmJlZ2luKCk7IGl0ICE9IHdvcmtlcnNFbmQ7ICsr
aXQpIHsKKyAgICAgICAgSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UqIHdvcmtlciA9IGl0LT5zZWNv
bmQuZ2V0KCk7CisgICAgICAgIG1fZnJvbnRlbmQtPmRlYnVnZ2VyKCktPmRpZENyZWF0ZVdvcmtl
cih3b3JrZXItPmlkKCksIHdvcmtlci0+dXJsKCksIHdvcmtlci0+aXNTaGFyZWRXb3JrZXIoKSk7
CisgICAgfQorI2VuZGlmCisgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVuZCBjb21tYW5k
cworICAgIGlzc3VlRXZhbHVhdGVGb3JUZXN0Q29tbWFuZHMoKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JBZ2VudDo6ZGlzY29ubmVjdEZyb250ZW5kKCkKQEAgLTQ1MCw0OCArNDY2LDYgQEAgdm9pZCBJ
bnNwZWN0b3JBZ2VudDo6cmVsZWFzZUZyb250ZW5kTGlmZXRpbWVBZ2VudHMoKQogICAgIG1fcnVu
dGltZUFnZW50LmNsZWFyKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQWdlbnQ6OnBvcHVsYXRlU2Ny
aXB0T2JqZWN0cyhFcnJvclN0cmluZyopCi17Ci0gICAgQVNTRVJUKG1fZnJvbnRlbmQpOwotICAg
IGlmICghbV9mcm9udGVuZCkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCi0gICAgaWYgKG1fcHJvZmlsZXJBZ2VudC0+ZW5hYmxlZCgpKQotICAgICAg
ICBtX2Zyb250ZW5kLT5wcm9maWxlcigpLT5wcm9maWxlcldhc0VuYWJsZWQoKTsKLSNlbmRpZgot
Ci0gICAgcHVzaERhdGFDb2xsZWN0ZWRPZmZsaW5lKCk7Ci0KLSAgICBpZiAobV9ub2RlVG9Gb2N1
cykKLSAgICAgICAgZm9jdXNOb2RlKCk7Ci0KLSAgICBpZiAoIW1fc2hvd1BhbmVsQWZ0ZXJWaXNp
YmxlLmlzRW1wdHkoKSkgewotICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0b3IoKS0+c2hvd1Bh
bmVsKG1fc2hvd1BhbmVsQWZ0ZXJWaXNpYmxlKTsKLSAgICAgICAgbV9zaG93UGFuZWxBZnRlclZp
c2libGUgPSAiIjsKLSAgICB9Ci0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAg
ICBtX2RlYnVnZ2VyQWdlbnQtPmVuYWJsZURlYnVnZ2VyQWZ0ZXJTaG93bigpOwotI2VuZGlmCi0K
LSAgICAvLyBEaXNwYXRjaCBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzCi0gICAgaXNzdWVFdmFs
dWF0ZUZvclRlc3RDb21tYW5kcygpOwotfQotCi12b2lkIEluc3BlY3RvckFnZW50OjpwdXNoRGF0
YUNvbGxlY3RlZE9mZmxpbmUoKQotewotICAgIG1fZG9tQWdlbnQtPnNldERvY3VtZW50KG1faW5z
cGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwotCi0jaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShXT1JLRVJTKQotICAgIFdvcmtlcnNNYXA6Oml0ZXJh
dG9yIHdvcmtlcnNFbmQgPSBtX3dvcmtlcnMuZW5kKCk7Ci0gICAgZm9yIChXb3JrZXJzTWFwOjpp
dGVyYXRvciBpdCA9IG1fd29ya2Vycy5iZWdpbigpOyBpdCAhPSB3b3JrZXJzRW5kOyArK2l0KSB7
Ci0gICAgICAgIEluc3BlY3RvcldvcmtlclJlc291cmNlKiB3b3JrZXIgPSBpdC0+c2Vjb25kLmdl
dCgpOwotICAgICAgICBtX2Zyb250ZW5kLT5kZWJ1Z2dlcigpLT5kaWRDcmVhdGVXb3JrZXIod29y
a2VyLT5pZCgpLCB3b3JrZXItPnVybCgpLCB3b3JrZXItPmlzU2hhcmVkV29ya2VyKCkpOwotICAg
IH0KLSNlbmRpZgotfQotCiB2b2lkIEluc3BlY3RvckFnZW50OjpkaWRDb21taXRMb2FkKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgaWYgKG1fZnJvbnRlbmQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKaW5kZXggZTRhNjc1MmE2YjNmOWM2ODI3OWM1
NTNkMTk1ZmQ0NTkwNjEzNmEwYS4uNGQwYzdlZDBkMmNlODIyNWJhNWU5OGIzY2IwY2U4NmI5MGZi
ODIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmgKQEAgLTE5
OSw3ICsxOTksNiBAQCBwdWJsaWM6CiAgICAgLy8gSW5zcGVjdG9yQWdlbnQgQVBJCiAgICAgdm9p
ZCBnZXRJbnNwZWN0b3JTdGF0ZShSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3RhdGUpOwogICAg
IHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoYm9vbCBlbmFibGVkLCBib29sKiBuZXdTdGF0
ZSk7Ci0gICAgdm9pZCBwb3B1bGF0ZVNjcmlwdE9iamVjdHMoRXJyb3JTdHJpbmcqIGVycm9yKTsK
ICAgICAvLyBGb2xsb3dpbmcgYXJlIHVzZWQgZnJvbSBJbnNwZWN0b3JCYWNrZW5kIGFuZCBpbnRl
cm5hbGx5LgogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3Is
IGJvb2wgZW5hYmxlZCwgYm9vbCogbmV3U3RhdGUpOwogICAgIHZvaWQgZGlkRXZhbHVhdGVGb3JU
ZXN0SW5Gcm9udGVuZChFcnJvclN0cmluZyogZXJyb3IsIGxvbmcgY2FsbElkLCBjb25zdCBTdHJp
bmcmIGpzb25SZXN1bHQpOwpAQCAtMjA5LDcgKzIwOCw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHNob3dQYW5lbChjb25zdCBTdHJpbmcmIHBhbmVsKTsKLSAgICB2b2lkIHB1c2hE
YXRhQ29sbGVjdGVkT2ZmbGluZSgpOwogICAgIHZvaWQgdW5iaW5kQWxsUmVzb3VyY2VzKCk7CiAg
ICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDIyNTRiZTQ1MTc0
M2ExMjdlOWU0ODdjMDg5YmY1YmZmOWViYTM2OGUuLmE0ZWMyN2JjNDg3OTMyOWQwYjMyNDkzM2Ew
YTMyYzA0NTYxZTllYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQu
aCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKQEAgLTI1Miw4ICsyNTMsOSBAQCB2b2lkIFJl
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s6Om9uVGltZXIoVGltZXI8UmV2YWxpZGF0ZVN0eWxl
QXR0cmlidXRlVGFzaz4qKQogICAgIG1fZWxlbWVudHMuY2xlYXIoKTsKIH0KIAotSW5zcGVjdG9y
RE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JET01BZ2VudDo6SW5z
cGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
UGFnZSogaW5zcGVjdGVkUGFnZSwgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICA6IG1faW5zdHJ1
bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorICAgICwgbV9pbnNwZWN0ZWRQYWdl
KGluc3BlY3RlZFBhZ2UpCiAgICAgLCBtX2luc3BlY3RvclN0YXRlKGluc3BlY3RvclN0YXRlKQog
ICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAg
ICwgbV9mcm9udGVuZCgwKQpAQCAtMjczLDYgKzI3NSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKICAgICBBU1NFUlQo
IW1fZnJvbnRlbmQpOwogICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+ZG9tKCk7CiAgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKKyAgICBtX2Rv
Y3VtZW50ID0gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2xlYXJGcm9udGVuZCgpCkBAIC0yODQsNiArMjg3LDEz
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogICAgIHJlc2V0KCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc3RvcmUoKQoreworICAgIC8vIFJlc2V0
IGRvY3VtZW50IHRvIGF2b2lkIGVhcmx5IHJldHVybiBmcm9tIHNldERvY3VtZW50LgorICAgIG1f
ZG9jdW1lbnQgPSAwOworICAgIHNldERvY3VtZW50KG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1l
KCktPmRvY3VtZW50KCkpOworfQorCiBWZWN0b3I8RG9jdW1lbnQqPiBJbnNwZWN0b3JET01BZ2Vu
dDo6ZG9jdW1lbnRzKCkKIHsKICAgICBWZWN0b3I8RG9jdW1lbnQqPiByZXN1bHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDQ1Y2M5M2MxZDIx
ODBhMDkxZTUwM2ZiYTk1NzllNjMyNjg0MmVhM2IuLjM2M2YxOWM0NWVlNDY0YThhZGJlMTUxYTBh
NGZhMzg0MDU2NGRhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oCkBAIC05MywxNSArOTMsMTYgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KikgPSAwOwogICAgIH07CiAKLSAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JET01BZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8SW5zcGVjdG9yRE9NQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9y
U3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JET01BZ2VudChpbnN0cnVt
ZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRE9NQWdlbnQoaW5zdHJ1bWVudGlu
Z0FnZW50cywgcGFnZSwgaW5zcGVjdG9yU3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpOwog
ICAgIH0KIAogICAgIH5JbnNwZWN0b3JET01BZ2VudCgpOwogCiAgICAgdm9pZCBzZXRGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCopOwogICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOworICAgIHZv
aWQgcmVzdG9yZSgpOwogCiAgICAgVmVjdG9yPERvY3VtZW50Kj4gZG9jdW1lbnRzKCk7CiAgICAg
dm9pZCByZXNldCgpOwpAQCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9v
bCBpc1doaXRlc3BhY2UoTm9kZSopOwogCiBwcml2YXRlOgotICAgIEluc3BlY3RvckRPTUFnZW50
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFu
YWdlciopOworICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdl
KiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIC8vIE5v
ZGUtcmVsYXRlZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGxv
bmc+IE5vZGVUb0lkTWFwOwpAQCAtMTg5LDYgKzE5MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNjYXJkQmluZGluZ3MoKTsKIAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVu
dGluZ0FnZW50czsKKyAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5zcGVjdG9yU3Rh
dGUqIG1faW5zcGVjdG9yU3RhdGU7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6RE9NKiBtX2Zyb250ZW5k
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCmluZGV4IDJjZGRhZWM1ZDVjYmVhOTdjMGU0OWY4MmFmYmMxMmM4ODVjNTgxNjAuLjIz
NGI4N2IwYjhlZDFkYzcyOTM0ZjhiMTVmNmI5Y2M2YTM2NWQzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTEyOCwx
MCArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN0b3JlKCkKIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZy
b250ZW5kKQogewogICAgIG1fZnJvbnRlbmQgPSBmcm9udGVuZC0+ZGVidWdnZXIoKTsKLX0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGVEZWJ1Z2dlckFmdGVyU2hvd24oKQot
ewogICAgIGlmIChtX2luc3BlY3RvclN0YXRlLT5nZXRCb29sZWFuKERlYnVnZ2VyQWdlbnRTdGF0
ZTo6ZW5hYmxlV2hlblNob3duKSkgewogICAgICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29s
ZWFuKERlYnVnZ2VyQWdlbnRTdGF0ZTo6ZW5hYmxlV2hlblNob3duLCBmYWxzZSk7CiAgICAgICAg
IGVuYWJsZShmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaAppbmRleCBiZTZiMDAxYTg5ZjVkN2I0MDRjMTMzN2FkMGViYmJkYzNm
NTJmMzIxLi45ZjIyMGRlNjgxMmRkM2RmNmI3NjNjZjc0MTZlMzljMjVhODQ2OTU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAg
LTczLDcgKzczLDYgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpOwogICAgIHZvaWQgcmVz
dG9yZSgpOwogICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqKTsKLSAgICB2
b2lkIGVuYWJsZURlYnVnZ2VyQWZ0ZXJTaG93bigpOwogICAgIHZvaWQgY2xlYXJGcm9udGVuZCgp
OwogCiAgICAgdm9pZCBpbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmlu
ZGV4IDRjZDU0NTgyZGQ3ZGQyN2Y4ZDFkMDM1NmJkNThmMmJjNmExNjU4NDguLjg5YjkxMjZhMmEz
ZjljODIxZDljZmEzZDJiMjhiODljODA4OGE1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNjgsNiArNjgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOworICAgIHZvaWQgaXNFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCogcmVz
dWx0KSB7ICpyZXN1bHQgPSBlbmFibGVkKCk7IH0KICAgICB2b2lkIHN0YXJ0KEVycm9yU3RyaW5n
KikgeyBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQogICAgIHZvaWQgc3RvcChFcnJv
clN0cmluZyopIHsgc3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXgg
Yjg5YmI5YWFiYzIxZDFjM2ZkZjk5ZDhlODBiNWJlZDNjMzVlOGIzNi4uZWE1MzI3YmI3NTEwOGIy
YTNkOTg1MzUzYzg5MTJhZmM4MDUyYzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtMTM0LDYgKzEzNCwxNiBAQCBX
ZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICB9CiAKICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcigiUHJvZmlsZXIiLCBuZXcgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVyRGlzcGF0Y2hlcih0aGlzKSk7CisKKyAgICBpZiAoUHJlZmVyZW5j
ZXMucHJvZmlsZXJBbHdheXNFbmFibGVkIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5wcm9maWxl
ckVuYWJsZWQpCisgICAgICAgIFByb2ZpbGVyQWdlbnQuZW5hYmxlKCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIGZ1bmN0aW9uIG9uUHJvZmlsZXJFbmVibGVkKGVycm9yLCB2YWx1ZSkgeworICAgICAg
ICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHRoaXMuX3Byb2ZpbGVyV2FzRW5hYmxl
ZCgpOworICAgICAgICB9CisgICAgICAgIFByb2ZpbGVyQWdlbnQuaXNFbmFibGVkKG9uUHJvZmls
ZXJFbmVibGVkLmJpbmQodGhpcykpOworICAgIH0KIH0KIAogV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNQYW5lbC5qcwppbmRleCA3ZDcyZmQ3YjYyMDcyNTdhMmJjZTcwOTdmOGFm
NGYyZDMxZmY5OTIyLi40M2JjOTExODI3YTc0MjczZjQzZDczMDFlZDAyMTJmODU0MjRiOThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcwpAQCAtMTk1LDYgKzE5NSw5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5j
dGlvbigpCiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQnJlYWtwb2ludEFkZGVk
LCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOwogICAgIHRoaXMuX3ByZXNlbnRhdGlvbk1v
ZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyUHJlc2VudGF0aW9uTW9k
ZWwuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhp
cyk7CiAgICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVudHMuQ2FsbEZyYW1lU2VsZWN0ZWQs
IHRoaXMuX2NhbGxGcmFtZVNlbGVjdGVkLCB0aGlzKTsKKworICAgIGlmIChQcmVmZXJlbmNlcy5k
ZWJ1Z2dlckFsd2F5c0VuYWJsZWQgfHwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmRlYnVnZ2VyRW5h
YmxlZCkKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZW5hYmxlRGVidWdnZXIo
KTsKIH0KIAogLy8gS2VlcCB0aGVzZSBpbiBzeW5jIHdpdGggV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMKaW5kZXggZTI5NDkwY2JjZDUwZGNjZTc2MDU2MzQxZDIyZWNjM2I0ZDU1Njk1Zi4uZjUzZDU1
ODg2NjM1NGQ5OGUxNDMwM2Q2YTJlNTkyMDk4MzA5OTM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTUxNCwyMiArNTE0LDEyIEBA
IFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLmV4dGVu
c2lvblNlcnZlci5pbml0RXh0ZW5zaW9ucygpOwogCi0gICAgZnVuY3Rpb24gb25Qb3B1bGF0ZVNj
cmlwdE9iamVjdHMoZXJyb3IpCi0gICAgewotICAgICAgICBpZiAoIWVycm9yICYmICFXZWJJbnNw
ZWN0b3IuY3VycmVudFBhbmVsKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdEFjdGl2ZVBhbmVsKTsKLSAgICB9Ci0gICAgSW5zcGVj
dG9yQWdlbnQucG9wdWxhdGVTY3JpcHRPYmplY3RzKG9uUG9wdWxhdGVTY3JpcHRPYmplY3RzKTsK
LQotICAgIGlmIChQcmVmZXJlbmNlcy5kZWJ1Z2dlckFsd2F5c0VuYWJsZWQgfHwgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmRlYnVnZ2VyRW5hYmxlZCkKLSAgICAgICAgdGhpcy5kZWJ1Z2dlck1vZGVs
LmVuYWJsZURlYnVnZ2VyKCk7Ci0gICAgaWYgKFByZWZlcmVuY2VzLnByb2ZpbGVyQWx3YXlzRW5h
YmxlZCB8fCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucHJvZmlsZXJFbmFibGVkKQotICAgICAgICBQ
cm9maWxlckFnZW50LmVuYWJsZSgpOwogICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubW9u
aXRvcmluZ1hIUkVuYWJsZWQpCiAgICAgICAgIENvbnNvbGVBZ2VudC5zZXRNb25pdG9yaW5nWEhS
RW5hYmxlZCh0cnVlKTsKLQogICAgIENvbnNvbGVBZ2VudC5zZXRDb25zb2xlTWVzc2FnZXNFbmFi
bGVkKHRydWUpOwogCisgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbChXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MubGFzdEFjdGl2ZVBhbmVsKTsKKwogICAgIGZ1bmN0aW9uIHByb3BlcnR5TmFtZXNDYWxs
YmFjayhlcnJvciwgbmFtZXMpCiAgICAgewogICAgICAgICBpZiAoIWVycm9yKQo=
</data>
<flag name="review"
          id="78106"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>