<?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>13634</bug_id>
          
          <creation_ts>2007-05-08 22:59:51 -0700</creation_ts>
          <short_desc>Page Cache should support pages with plug-ins (again)</short_desc>
          <delta_ts>2012-01-23 18:50:56 -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>Page Loading</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>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>13636</dependson>
          <blocked>4123</blocked>
    
    <blocked>74357</blocked>
    
    <blocked>74581</blocked>
    
    <blocked>76891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>adrian.sutton</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>christian.webkit</cc>
    
    <cc>dglazkov</cc>
    
    <cc>emacemac7</cc>
    
    <cc>joepeck</cc>
    
    <cc>kbr</cc>
    
    <cc>matafagafo</cc>
    
    <cc>skyul</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>10645</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-05-08 22:59:51 -0700</bug_when>
    <thetext>[Filed for completeness&apos; sake, as other major reasons why pages are not cached have separate bugs now].

The back/forward cache needs to work with pages that have plug-ins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10647</commentid>
    <comment_count>1</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-05-08 23:41:31 -0700</bug_when>
    <thetext>The b/f cache already works with plug-ins.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10648</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-05-08 23:45:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/5190122&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10650</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2007-05-09 00:05:55 -0700</bug_when>
    <thetext>This worked in Safari 2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10651</commentid>
    <comment_count>4</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-05-09 00:09:30 -0700</bug_when>
    <thetext>Regressed in &lt;http://trac.webkit.org/projects/webkit/changeset/12250&gt;. Bug reference in the change log seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10640</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2007-05-09 00:28:02 -0700</bug_when>
    <thetext>Wow, what the heck happened here? I&apos;m amazed the original bug got an r+.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10632</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-05-09 00:53:59 -0700</bug_when>
    <thetext>The change in r12250 affected a small fraction of plug-in-containing pages, namely those using &lt;embed&gt; but not using &lt;object&gt;. Bug 13636 prevents pages using &lt;object&gt; from being cached even in Safari 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82800</commentid>
    <comment_count>7</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-06-09 21:37:32 -0700</bug_when>
    <thetext>Firefox 3 supports this as far as I can tell, so we should see how they do it. However, it might be better to fix bug 13631 first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147421</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-09-15 16:51:21 -0700</bug_when>
    <thetext>Plug-ins have changed a lot since we originally cached them in Safari 2 and earlier.  Removing them from the view hierarchy is no longer sufficient enough to stop them.

Also, now that we support pages with frames in the page cache, this task is now different from restoring our original behavior.

We&apos;ll probably need to start out by exploring a solution like what Firefox does, which is to manually destroy the plug-ins when leaving the page, then re-instantiate them when returning.

I plan to start working on this shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518564</commentid>
    <comment_count>9</comment_count>
      <attachid>118652</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-12-09 15:09:07 -0800</bug_when>
    <thetext>Created attachment 118652
Patch v1 - Kill the plugin, recreate it, and layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518743</commentid>
    <comment_count>10</comment_count>
      <attachid>118652</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-09 20:02:03 -0800</bug_when>
    <thetext>Comment on attachment 118652
Patch v1 - Kill the plugin, recreate it, and layout test.

Attachment 118652 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10831497

New failing tests:
plugins/netscape-plugin-page-cache-works.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519292</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-12-12 10:03:45 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 118652 [details])
&gt; Attachment 118652 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/10831497
&gt; 
&gt; New failing tests:
&gt; plugins/netscape-plugin-page-cache-works.html

Will add to their skipped list before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519298</commentid>
    <comment_count>12</comment_count>
      <attachid>118652</attachid>
    <who name="">mitz</who>
    <bug_when>2011-12-12 10:11:47 -0800</bug_when>
    <thetext>Comment on attachment 118652
Patch v1 - Kill the plugin, recreate it, and layout test.

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

&gt; Source/WebCore/dom/Node.h:695
&gt; +    void unsetHasCustomStyleForRenderer() { setFlag(false, HasCustomStyleForRendererFlag); }

Other similar functions use the verb “clear” rather than “unset”, and call clearFlag().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519318</commentid>
    <comment_count>13</comment_count>
      <attachid>118814</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-12-12 10:34:23 -0800</bug_when>
    <thetext>Created attachment 118814
Patch v2 - Fixed naming in new Node.h method</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519319</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-12-12 10:34:48 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=118814) [details]
&gt; Patch v2 - Fixed naming in new Node.h method

Also, forgot there&apos;s no Chromium skipped list here, so I can&apos;t skip the new test for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519361</commentid>
    <comment_count>15</comment_count>
      <attachid>118814</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-12 11:33:44 -0800</bug_when>
    <thetext>Comment on attachment 118814
Patch v2 - Fixed naming in new Node.h method

Attachment 118814 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10851024

New failing tests:
plugins/netscape-plugin-page-cache-works.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519438</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-12-12 14:01:36 -0800</bug_when>
    <thetext>Landed in r102619</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519548</commentid>
    <comment_count>17</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-12 15:07:44 -0800</bug_when>
    <thetext>Note that a Windows build fix for this patch was committed in http://trac.webkit.org/changeset/102628 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519574</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-12-12 15:23:21 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Note that a Windows build fix for this patch was committed in http://trac.webkit.org/changeset/102628 .

Sorry for the break, and thanks for noting the fix here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118652</attachid>
            <date>2011-12-09 15:09:07 -0800</date>
            <delta_ts>2011-12-12 10:34:23 -0800</delta_ts>
            <desc>Patch v1 - Kill the plugin, recreate it, and layout test.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>30176</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDExLTEyLTA5ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQYWdlIGNhY2hlIHNob3VsZCBz
dXBwb3J0IHBhZ2VzIHdpdGggcGx1Z2lucy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUxOTAx
MjI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCeSBtYWtpbmcg
cGx1Z2luIGVsZW1lbnRzIHJlbmRlcmVycyBnbyBkaXNwbGF5Om5vbmUgd2hlbiBlbnRlcmluZyB0
aGUgcGFnZSBjYWNoZSwKKyAgICAgICAgd2UgZGVzdHJveSB0aGUgcGx1Zy1pbiBpbiBhIGNyb3Nz
IHBsYXRmb3JtIHdheSBhcyB3ZWxsIGFzIGhhbmRsZSBpbnZhbGlkYXRpbmcgc2NyaXB0CisgICAg
ICAgIG9iamVjdHMgY3JlYXRlZCBieSB0aGF0IHBsdWdpbi4KKworICAgICAgICBCeSByZXN0b3Jp
bmcgdGhlIG9yaWdpbmFsIHN0eWxlIHdoZW4gbGVhdmluZyB0aGUgcGFnZSBjYWNoZSBhbmQgZm9y
Y2luZyBhIHN0eWxlIHJlY2FsYworICAgICAgICBvbiB0aGUgcGx1Z2luIGVsZW1lbnQsIHRoZSBw
bHVnaW4gaXMgZ3JhY2VmdWxseSByZWluc3RhbnRpYXRlZCB3aGVuIHRoZSB1c2VyIGdvZXMgYmFj
ay4KKworICAgICAgICBUZXN0OiBwbHVnaW5zL25ldHNjYXBlLXBsdWdpbi1wYWdlLWNhY2hlLXdv
cmtzLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOiBDb3B5IHRoaXMgY29sbGVjdGlv
biBiZWZvcmUgaXRlcmF0aW5nIG92ZXIKKyAgICAgICAgICBpdCwgYXMgdGhlIGNhbGxiYWNrcyBt
aWdodCByZXN1bHQgaW4gbXV0YXRpbmcgdGhlIHNldC4KKworICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnVuc2V0SGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6
IEV4cG9zZSB0aGUgYWJpbGl0eSB0byBzdG9wIHVzaW5nIGEgCisgICAgICAgICAgY3VzdG9tIHJl
bmRlcmVyIGFuZCBnbyBiYWNrIHRvIHRoZSBkZWZhdWx0IHJlbmRlcmVyLgorCisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6
Q2FjaGVkRnJhbWUpOiBNb3ZlIHRoZSBkb2N1bWVudCBpbmFjdGl2YXRpb24gY2FsbCB0byB0aGUg
c2FtZSBwbGFjZQorICAgICAgICAgIHdlIHN1c3BlbmQgYWN0aXZlIERPTSBvYmplY3RzLiBJdCBp
cyBpbXBvcnRhbnQgdGhpcyBjYWxsIGJlICphZnRlciogdGhlIGJlZm9yZXVubG9hZCBldmVudAor
ICAgICAgICAgIGlzIGRpc3BhdGNoZWQsIGFuZCB3YXMgY29pbmNpZGVudGFsIG5vbiBvZiB0aGUg
ZWxlbWVudHMgdGhhdCB1c2luZyBEb2N1bWVudCBhY3RpdmF0aW9uCisgICAgICAgICAgaGFkIHJ1
biBpbiB0byB0aGlzIHByb2JsZW0geWV0LgorCisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6
IElmIHRoZSBwYWdlIGNvbnRhaW5zIHBsdWdpbnMgYnV0CisgICAgICAgICAgdGhlIFBhZ2VDYWNo
ZVN1cHBvcnRzUGx1Z2lucyBzZXR0aW5nIGlzIHRydWUsIGFsbG93IHRoaXMgcGFnZS4KKworICAg
ICAgICBLaWxsIGFuZCByZWNyZWF0ZSB0aGUgcGx1Z2luIGJ5IGxpc3RlbmluZyBmb3IgRG9jdW1l
bnQgYWN0aXZhdGlvbiBjYWxsYmFja3MgYW5kIHNldHRpbmcgYSBjdXN0b20KKyAgICAgICAgZGlz
cGxheTpub25lIHJlbmRlciBzdHlsZToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojp+SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IFVucmVnaXN0ZXIgZm9yIGRvY3VtZW50
IGFjdGl2YXRpb24KKyAgICAgICAgICBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IE9uY2UgYSByZW5kZXJlciAoaWUu
IHBsdWdpbiBpbnN0YW5jZSkgaXMKKyAgICAgICAgICBjcmVhdGVkLCB0aGlzIGVsZW1lbnQgbmVl
ZHMgRG9jdW1lbnQgKGluKWFjdGl2YXRpb24gY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQpOiBNYW5h
Z2UgRG9jdW1lbnQgYWN0aXZhdGlvbiAKKyAgICAgICAgICBjYWxsYmFjayByZWdpc3RyYXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6IENsb25lIHRoZSBlbGVtZW50J3Mg
Y3VycmVudCBzdHlsZQorICAgICAgICAgIGFuZCBzZXQgdGhlIGNsb25lJ3MgZGlzcGxheSB2YWx1
ZSB0byBOb25lLiBTdGFydCB1c2luZyB0aGlzIGN1c3RvbSBzdHlsZSBhbmQgZm9yY2UgYSBzdHls
ZQorICAgICAgICAgIHJlY2FsbC4gVGhpcyBkZXN0cm95cyB0aGUgcmVuZGVyZXIgYW5kIHRoZXJl
Zm9yZSB0aGUgcGx1Z2luIGluc3RhbmNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOiBTdG9wIHVzaW5nIHRoZSBjdXN0
b20gc3R5bGUgYW5kCisgICAgICAgICAgZm9yY2UgYSBzdHlsZSByZWNhbGwgdG8gcmVpbnN0YW50
aWF0ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6IFJldHVybiB0aGUgc3RhbmQtaW4gc3R5bGUgdGhh
dCBoYXMKKyAgICAgICAgICBkaXNwbGF5Om5vbmUgc2V0LgorICAgICAgICAqIGh0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oOgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdGhhdCBhbGxvd3Mg
cnVudGltZSBjb25maWd1cmF0aW9uIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGNhY2hlIHN1
cHBvcnRzIHBsdWdpbnM6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyk6
CisKIDIwMTEtMTItMDkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNb3ZlIHRoZSAiaXMgY3VycmVudGx5IGRyYXdpbmcgaW50byBsYXllciIgZmxhZyBv
dXQgaW50byBTY3JvbGxiYXJUaGVtZU1hYwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAxMDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOTMwLDggKzM5MzAsMTAgQEAgdm9pZCBEb2N1bWVudDo6ZG9jdW1lbnRX
aWxsQmVjb21lSW5hY3RpdgogCiB2b2lkIERvY3VtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2
ZSgpIAogewotICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrRWxlbWVudHMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PEVsZW1l
bnQqPjo6aXRlcmF0b3IgaSA9IG1fZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50cy5i
ZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgIFZlY3RvcjxFbGVtZW50Kj4gZWxlbWVudHM7Cisg
ICAgY29weVRvVmVjdG9yKG1fZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50cywgZWxl
bWVudHMpOworICAgIFZlY3RvcjxFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IGVsZW1lbnRzLmVu
ZCgpOworICAgIGZvciAoVmVjdG9yPEVsZW1lbnQqPjo6aXRlcmF0b3IgaSA9IGVsZW1lbnRzLmJl
Z2luKCk7IGkgIT0gZW5kOyArK2kpCiAgICAgICAgICgqaSktPmRvY3VtZW50RGlkQmVjb21lQWN0
aXZlKCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY5MSw3ICs2OTEsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzZXRIYXND
dXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZSgpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21XaWxs
T3JEaWRSZWNhbGNTdHlsZUZsYWcpOyB9CiAgICAgCiAgICAgYm9vbCBoYXNDdXN0b21TdHlsZUZv
clJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNDdXN0b21TdHlsZUZvclJlbmRl
cmVyRmxhZyk7IH0KLSAgICB2b2lkIHNldEhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKSB7IHNl
dEZsYWcodHJ1ZSwgSGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJlckZsYWcpOyB9IAorICAgIHZvaWQg
c2V0SGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21T
dHlsZUZvclJlbmRlcmVyRmxhZyk7IH0KKyAgICB2b2lkIHVuc2V0SGFzQ3VzdG9tU3R5bGVGb3JS
ZW5kZXJlcigpIHsgc2V0RmxhZyhmYWxzZSwgSGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJlckZsYWcp
OyB9CiAKIHByaXZhdGU6CiAgICAgLy8gRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2Ug
dGhlIGRvY3VtZW50IG9mIGEgbm9kZSB1bnRpbCBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbgpJbmRl
eDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAJKHJldmlzaW9uIDEwMjQ1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNyArMTU2LDYgQEAgQ2FjaGVkRnJhbWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFt
ZSkKICAgICAvLyBDdXN0b20gc2Nyb2xsYmFyIHJlbmRlcmVycyB3aWxsIGdldCByZWF0dGFjaGVk
IHdoZW4gdGhlIGRvY3VtZW50IGNvbWVzIG91dCBvZiB0aGUgcGFnZSBjYWNoZQogICAgIG1fdmll
dy0+ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpOwogCi0gICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRX
aWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICBmcmFtZS0+Y2xlYXJUaW1lcnMoKTsKICAgICBtX2Rv
Y3VtZW50LT5zZXRJblBhZ2VDYWNoZSh0cnVlKTsKICAgICBmcmFtZS0+bG9hZGVyKCktPnN0b3BM
b2FkaW5nKFVubG9hZEV2ZW50UG9saWN5VW5sb2FkQW5kUGFnZUhpZGUpOwpAQCAtMTcwLDYgKzE2
OSw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgLy8gU3Vz
cGVuZGluZyBtdXN0IGFsc28gaGFwcGVuIGFmdGVyIHdlJ3ZlIHJlY3Vyc2VkIG92ZXIgY2hpbGQg
ZnJhbWVzLCBpbiBjYXNlCiAgICAgLy8gdGhvc2UgY3JlYXRlIG1vcmUgb2JqZWN0cy4KICAgICAv
LyBGSVhNRTogSXQncyBzdGlsbCBwb3NzaWJsZSB0byBoYXZlIG9iamVjdHMgY3JlYXRlZCBhZnRl
ciBzdXNwZW5kaW5nIGluIHNvbWUgY2FzZXMsIHNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzUzNzMz
IGZvciBtb3JlIGRldGFpbHMuCisgICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRXaWxsQmVjb21lSW5h
Y3RpdmUoKTsKICAgICBtX2RvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9s
bGVyQ2FsbGJhY2tzKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMo
QWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk7CiAgICAgbV9jYWNo
ZWRGcmFtZVNjcmlwdERhdGEgPSBhZG9wdFB0cihuZXcgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKGZy
YW1lKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAx
MDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgYm9vbCBsb2dDYW5DYWNoZUZyYW1lRGVj
aXNpb24oRnJhCiAgICAgICAgICAgICBQQ0xPRygiICAgLU1haW4gZG9jdW1lbnQgaGFzIGFuIGVy
cm9yIik7CiAgICAgICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5z
KCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+Y29u
dGFpbnNQbHVnaW5zKCkgJiYgIWZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnBhZ2VDYWNoZVN1
cHBvcnRzUGx1Z2lucygpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGNvbnRhaW5z
IHBsdWdpbnMiKTsKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAgICAgICAgfQpA
QCAtMjU1LDEyICsyNTUsNyBAQCBib29sIFBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmlu
Z1RoCiAgICAgICAgICYmIGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRv
Y3VtZW50RXJyb3IoKS5pc051bGwoKQogICAgICAgICAvLyBEbyBub3QgY2FjaGUgZXJyb3IgcGFn
ZXMgKHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFzIHBhZ2VzIHdpdGggc3Vic3RpdHV0ZSBkYXRh
IG9yIHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAgICAmJiAhKGZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCkgJiYgIWZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNF
bXB0eSgpKQotICAgICAgICAvLyBGSVhNRTogSWYgd2UgZXZlciBjaGFuZ2UgdGhpcyBzbyB0aGF0
IGZyYW1lcyB3aXRoIHBsdWctaW5zIHdpbGwgYmUgY2FjaGVkLAotICAgICAgICAvLyB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNhY2hlIGZyYW1lcyB0aGF0IGhhdmUgb3V0c3Rh
bmRpbmcgTlBPYmplY3RzCi0gICAgICAgIC8vIChvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIHBsdWct
aW4pLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcGF1c2UvcmVzdW1lIGEgTmV0c2NhcGUgcGx1
Zy1pbiwKLSAgICAgICAgLy8gdGhleSB3b3VsZCBuZWVkIHRvIGJlIGRlc3Ryb3llZCBhbmQgdGhl
biByZWNyZWF0ZWQsIGFuZCB0aGVyZSBpcyBubyB3YXkgdGhhdCB3ZSBjYW4gcmVjcmVhdGUKLSAg
ICAgICAgLy8gdGhlIHJpZ2h0IE5QT2JqZWN0cy4gU2VlIDxyZGFyOi8vcHJvYmxlbS81MTk3MDQx
PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAgICAgJiYgIWZyYW1lLT5sb2FkZXIoKS0+c3Vi
ZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkKKyAgICAgICAgJiYgKCFmcmFtZS0+bG9h
ZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmNvbnRhaW5zUGx1Z2lucygpIHx8IGZyYW1lLT5wYWdl
KCktPnNldHRpbmdzKCktPnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucygpKQogICAgICAgICAmJiAh
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKICAgICAgICAgJiYg
KCFmcmFtZS0+ZG9tV2luZG93KCkgfHwgIWZyYW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0
ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNF
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxMDI0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMCArNDIsMTcgQEAgSFRNTFBs
dWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbkltYWdlRQogICAgIC8vIHRoZSBzYW1lIGNvZGVw
YXRoIGluIHRoaXMgY2xhc3MuCiAgICAgLCBtX25lZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQ
YXJzZXIpCiAgICAgLCBtX3Nob3VsZFByZWZlclBsdWdJbnNGb3JJbWFnZXMocHJlZmVyUGx1Z0lu
c0ZvckltYWdlc09wdGlvbiA9PSBTaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzKQorICAgICwg
bV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyhmYWxzZSkKIHsKICAgICBzZXRIYXND
dXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZSgpOwogfQogCitIVE1MUGx1Z0luSW1hZ2VFbGVtZW50
Ojp+SFRNTFBsdWdJbkltYWdlRWxlbWVudCgpCit7CisgICAgaWYgKG1fbmVlZHNEb2N1bWVudEFj
dGl2YXRpb25DYWxsYmFja3MpCisgICAgICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7Cit9CisKIFJlbmRlckVtYmVkZGVkT2JqZWN0
KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5kZXJFbWJlZGRlZE9iamVjdCgpIGNvbnN0CiB7
CiAgICAgLy8gSFRNTE9iamVjdEVsZW1lbnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQgbWF5IHJldHVy
biBhcmJpdHJhcnkgcmVuZGVyZXJzCkBAIC0xMTUsNiArMTIyLDEzIEBAIGJvb2wgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6d291bGRMb2FkQXMKIAogUmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1h
Z2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxl
KiBzdHlsZSkKIHsKKyAgICAvLyBPbmNlIGEgUGx1Z0luIEVsZW1lbnQgY3JlYXRlcyBpdHMgcmVu
ZGVyZXIsIGl0IG5lZWRzIHRvIGJlIHRvbGQgd2hlbiB0aGUgRG9jdW1lbnQgZ29lcworICAgIC8v
IGluYWN0aXZlIG9yIHJlYWN0aXZhdGVzIHNvIGl0IGNhbiBjbGVhciB0aGUgcmVuZGVyZXIgYmVm
b3JlIGdvaW5nIGludG8gdGhlIHBhZ2UgY2FjaGUuCisgICAgaWYgKCFtX25lZWRzRG9jdW1lbnRB
Y3RpdmF0aW9uQ2FsbGJhY2tzKSB7CisgICAgICAgIG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25D
YWxsYmFja3MgPSB0cnVlOworICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKKyAgICB9CisgICAgCiAgICAgLy8gRmFsbGJhY2sg
Y29udGVudCBicmVha3MgdGhlIERPTS0+UmVuZGVyZXIgY2xhc3MgcmVsYXRpb25zaGlwIG9mIHRo
aXMKICAgICAvLyBjbGFzcyBhbmQgYWxsIHN1cGVyY2xhc3NlcyBiZWNhdXNlIGNyZWF0ZU9iamVj
dCB3b24ndCBuZWNlc3NhcmlseQogICAgIC8vIHJldHVybiBhIFJlbmRlckVtYmVkZGVkT2JqZWN0
LCBSZW5kZXJQYXJ0IG9yIGV2ZW4gUmVuZGVyV2lkZ2V0LgpAQCAtMTg5LDExICsyMDMsNTggQEAg
dm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpmaW5pc2hQYXJzaQogCiB2b2lkIEhUTUxQbHVn
SW5JbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKIHsKKyAgICBpZiAo
bV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcykKKyAgICAgICAgZG9jdW1lbnQoKS0+
dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKKwogICAgIGlm
IChtX2ltYWdlTG9hZGVyKQogICAgICAgICBtX2ltYWdlTG9hZGVyLT5lbGVtZW50V2lsbE1vdmVU
b05ld093bmVyRG9jdW1lbnQoKTsKKwogICAgIEhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwogfQogCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQoreworICAgIGlmIChtX25lZWRzRG9jdW1lbnRBY3Rp
dmF0aW9uQ2FsbGJhY2tzKQorICAgICAgICBkb2N1bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50
QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsgICAKKyAgICAKKyAgICBIVE1MUGx1Z0luRWxlbWVu
dDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworfQorCit2b2lkIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkKK3sKKyAgICBpZiAoUmVuZGVy
U3R5bGUqIHJzID0gcmVuZGVyU3R5bGUoKSkgeworICAgICAgICBtX2N1c3RvbVN0eWxlRm9yUGFn
ZUNhY2hlID0gUmVuZGVyU3R5bGU6OmNsb25lKHJzKTsKKyAgICAgICAgbV9jdXN0b21TdHlsZUZv
clBhZ2VDYWNoZS0+c2V0RGlzcGxheShOT05FKTsKKyAgICB9CisKKyAgICBzZXRIYXNDdXN0b21T
dHlsZUZvclJlbmRlcmVyKCk7CisKKyAgICBpZiAobV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZSkK
KyAgICAgICAgcmVjYWxjU3R5bGUoRm9yY2UpOworICAgICAgICAKKyAgICBIVE1MUGx1Z0luRWxl
bWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKK30KKwordm9pZCBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50Ojpkb2N1bWVudERpZEJlY29tZUFjdGl2ZSgpCit7CisgICAgdW5zZXRIYXND
dXN0b21TdHlsZUZvclJlbmRlcmVyKCk7CisKKyAgICBpZiAobV9jdXN0b21TdHlsZUZvclBhZ2VD
YWNoZSkgeworICAgICAgICBtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hlID0gMDsKKyAgICAgICAg
cmVjYWxjU3R5bGUoRm9yY2UpOworICAgIH0KKyAgICAKKyAgICBIVE1MUGx1Z0luRWxlbWVudDo6
ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKK30KKworUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCit7CisgICAg
aWYgKCFtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hlKQorICAgICAgICByZXR1cm4gcmVuZGVyU3R5
bGUoKTsKKworICAgIHJldHVybiBtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hlOworfQorCiB2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVdpZGdldENhbGxiYWNrKE5vZGUqIG4sIHVu
c2lnbmVkKQogewogICAgIHN0YXRpY19jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqPihuKS0+
dXBkYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCShyZXZpc2lvbiAxMDI0NTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIs
NiArMjIsOCBAQAogI2RlZmluZSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50X2gKIAogI2luY2x1ZGUg
IkhUTUxQbHVnSW5FbGVtZW50LmgiCisKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDQsOCBA
QCBlbnVtIFByZWZlclBsdWdJbnNGb3JJbWFnZXNPcHRpb24gewogLy8gQmFzZSBjbGFzcyBmb3Ig
SFRNTE9iamVjdEVsZW1lbnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQKIGNsYXNzIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQgOiBwdWJsaWMgSFRNTFBsdWdJbkVsZW1lbnQgewogcHVibGljOgorICAgIHZp
cnR1YWwgfkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQoKSBPVkVSUklERTsKKwogICAgIFJlbmRlckVt
YmVkZGVkT2JqZWN0KiByZW5kZXJFbWJlZGRlZE9iamVjdCgpIGNvbnN0OwogCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbikgPSAwOwpAQCAtNjksNyAr
NzMsMTMgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgYWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICBib29sIHdvdWxkTG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2VydmljZVR5cGUpOwogCi0gICAgdmlydHVhbCB2
b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxN
b3ZlVG9OZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZE1v
dmVUb05ld093bmVyRG9jdW1lbnQoKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIE9WRVJSSURFOwogCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7CkBAIC04Miw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgYm9vbCBtX25lZWRzV2lkZ2V0VXBkYXRlOwogICAgIGJvb2wgbV9zaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzOworICAgIGJvb2wgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNr
czsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fY3VzdG9tU3R5bGVGb3JQYWdlQ2FjaGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFn
ZSogcGFnZSkKICAgICAsIG1faXNET01QYXN0ZUFsbG93ZWQoZmFsc2UpCiAgICAgLCBtX3Nocmlu
a3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQodHJ1ZSkKICAgICAsIG1fdXNlc1BhZ2VDYWNoZShmYWxz
ZSkKKyAgICAsIG1fcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKGZhbHNlKQogICAgICwgbV9zaG93
c1VSTHNJblRvb2xUaXBzKGZhbHNlKQogICAgICwgbV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVk
VGV4dChmYWxzZSkKICAgICAsIG1fZm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyhmYWxzZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDYgKzIyOSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHNldFVzZXNQYWdlQ2FjaGUoYm9vbCk7
CiAgICAgICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlc1BhZ2VD
YWNoZTsgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnMoYm9vbCBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMpIHsgbV9wYWdlQ2FjaGVTdXBwb3J0c1Bs
dWdpbnMgPSBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnM7IH0KKyAgICAgICAgYm9vbCBwYWdlQ2Fj
aGVTdXBwb3J0c1BsdWdpbnMoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDYWNoZVN1cHBvcnRzUGx1
Z2luczsgfQogCiAgICAgICAgIHZvaWQgc2V0U2hyaW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdChi
b29sKTsKICAgICAgICAgYm9vbCBzaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0KCkgY29uc3Qg
eyByZXR1cm4gbV9zaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0OyB9CkBAIC01NjEsNyArNTY0
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fbmVlZHNMZW9wYXJkTWFp
bFF1aXJrcyA6IDE7CiAgICAgICAgIGJvb2wgbV9pc0RPTVBhc3RlQWxsb3dlZCA6IDE7CiAgICAg
ICAgIGJvb2wgbV9zaHJpbmtzU3RhbmRhbG9uZUltYWdlc1RvRml0IDogMTsKLSAgICAgICAgYm9v
bCBtX3VzZXNQYWdlQ2FjaGU6IDE7CisgICAgICAgIGJvb2wgbV91c2VzUGFnZUNhY2hlIDogMTsK
KyAgICAgICAgYm9vbCBtX3BhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyA6IDE7CiAgICAgICAgIGJv
b2wgbV9zaG93c1VSTHNJblRvb2xUaXBzIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3dzVG9vbFRp
cE92ZXJUcnVuY2F0ZWRUZXh0IDogMTsKICAgICAgICAgYm9vbCBtX2ZvcmNlRlRQRGlyZWN0b3J5
TGlzdGluZ3MgOiAxOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNDc3KQorKysgU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEt
MTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2Ug
Y2FjaGUgc2hvdWxkIHN1cHBvcnQgcGFnZXMgd2l0aCBwbHVnaW5zLgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTE5MDEyMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzYzNAorCisgICAgICAgIEV4cG9zZSBhIFdlYktpdDIgcHJlZmVyZW5jZSBmb3IgdGhl
IHBhZ2UgY2FjaGUgc3VwcG9ydGluZyBwbHVnaW5zIChvbiBieSBkZWZhdWx0KS4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVm
ZXJlbmNlc1N0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5z
KToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTEtMTItMDggIEpvY2VseW4gVHVyY290
dGUgIDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIFVwZGF0ZSBX
ZWJHcmFwaGljTGF5ZXIncyBjaGlsZCBjb250ZW50IHNjYWxlIGluIGFsbCBjaGlsZCBiaW5kaW5n
IG1ldGhvZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaAkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICBtYWNybyhXZWJBcmNoaXZlRGVidWdNb2RlRW5hYmxlZCwgd2ViQXJjaGl2
ZURlYnVnTW9kZUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oTG9jYWxG
aWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhVc2VzUGFnZUNhY2hlLCB1c2VzUGFn
ZUNhY2hlLCBCb29sLCBib29sLCB0cnVlKSBcCisgICAgbWFjcm8oUGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zLCBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAg
ICBtYWNybyhBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCwgYXV0aG9yQW5kVXNlclN0eWxlc0Vu
YWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhQYWdpbmF0ZUR1cmluZ0xheW91
dEVuYWJsZWQsIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2Up
IFwKICAgICBtYWNybyhET01QYXN0ZUFsbG93ZWQsIGRvbVBhc3RlQWxsb3dlZCwgQm9vbCwgYm9v
bCwgZmFsc2UpIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDkyLDYg
KzQ5MiwxNiBAQCBib29sIFdLUHJlZmVyZW5jZXNHZXRQYWdlQ2FjaGVFbmFibGVkKFdLCiAgICAg
cmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAordm9p
ZCBXS1ByZWZlcmVuY2VzU2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKQoreworICAg
IHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyhwYWdl
Q2FjaGVTdXBwb3J0c1BsdWdpbnMpOworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRQYWdlQ2Fj
aGVTdXBwb3J0c1BsdWdpbnMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAg
ICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5z
KCk7Cit9CisKIHZvaWQgV0tQcmVmZXJlbmNlc1NldFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxl
ZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCiB7CiAgICAg
dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGVu
YWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDgsNiArMTA4LDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRMb2Nh
bEZpbGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQYWdlQ2FjaGVFbmFibGVkKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9v
bCBXS1ByZWZlcmVuY2VzR2V0UGFnZUNhY2hlRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzKTsKIAorLy8gRGVmYXVsdHMgdG8gdHJ1ZS4KK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlcywgYm9vbCBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMpOworV0tfRVhQT1JUIGJvb2wgV0tQ
cmVmZXJlbmNlc0dldFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyhXS1ByZWZlcmVuY2VzUmVmIHBy
ZWZlcmVuY2VzKTsKKwogLy8gRGVmYXVsdHMgdG8gZmFsc2UuCiBXS19FWFBPUlQgdm9pZCBXS1By
ZWZlcmVuY2VzU2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2Vz
R2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXMpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzkyLDYgKzE3OTIsNyBAQCB2b2lk
IFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAjZW5kaWYKICAgICBzZXR0aW5n
cy0+c2V0TG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRL
ZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRVc2VzUGFnZUNhY2hlKHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dXNlc1BhZ2VDYWNoZUtleSgpKSk7CisgICAgc2V0
dGluZ3MtPnNldFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyhzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc0tleSgpKSk7CiAg
ICAgc2V0dGluZ3MtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRL
ZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpwYWdpbmF0ZUR1cmluZ0xh
eW91dEVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpkb21QYXN0ZUFsbG93ZWRL
ZXkoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNDc3KQorKysgU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIw
MTEtMTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBh
Z2UgY2FjaGUgc2hvdWxkIHN1cHBvcnQgcGFnZXMgd2l0aCBwbHVnaW5zLgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTE5MDEyMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzYzNAorCisgICAgICAgIEV4cG9zZSBhIFdlYktpdCBwcmVmZXJlbmNlIGZvciB0
aGUgcGFnZSBjYWNoZSBzdXBwb3J0aW5nIHBsdWdpbnMgKG9uIGJ5IGRlZmF1bHQpLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJQ
cmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMubW06CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lu
c10pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnM6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKworICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5j
ZXNDaGFuZ2VkOl0pOgorCiAyMDExLTEyLTA3ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+
CiAKICAgICAgICAgRml4IHRoZSAzMi1iaXQgYnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9u
IDEwMjQ1OCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAKICNkZWZpbmUgV2ViQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCBAIldlYkF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VL
ZXkgQCJXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRV
c2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSBAIldlYktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNl
S2V5IgorI2RlZmluZSBXZWJLaXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVyZW5jZUtleSIKICNkZWZpbmUg
V2ViS2l0RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRoIEAiV2ViS2l0RlRQRGlyZWN0b3J5VGVtcGxh
dGVQYXRoIgogI2RlZmluZSBXZWJLaXRGb3JjZUZUUERpcmVjdG9yeUxpc3RpbmdzIEAiV2ViS2l0
Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyIKICNkZWZpbmUgV2ViS2l0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXREZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJlZmVy
ZW5jZUtleSIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQ
cmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU1Nyw2ICsxNTU3LDE3IEBAIC0gKHZv
aWQpc2V0UGljdG9ncmFwaEZvbnRGYW1pbHk6KE5TU3RyaW4KICAgICBbc2VsZiBfc2V0U3RyaW5n
VmFsdWU6IGZhbWlseSBmb3JLZXk6IFdlYktpdFBpY3RvZ3JhcGhGb250UHJlZmVyZW5jZUtleV07
CiB9CiAKKy0gKEJPT0wpcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zCit7CisgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVy
ZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOihCT09M
KWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOmZsYWcgZm9yS2V5OldlYktpdFBhZ2VD
YWNoZVN1cHBvcnRzUGx1Z2luc1ByZWZlcmVuY2VLZXldOworCit9CisKIC0gKHZvaWQpc2V0U3Vw
cHJlc3NJbmNyZW1lbnRhbFJlbmRlcmluZzooQk9PTClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJv
b2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRTdXBwcmVzc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5
XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaAkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSw5
IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCiAtIChOU1N0cmluZyAq
KXBpY3RvZ3JhcGhGb250RmFtaWx5OwogLSAodm9pZClzZXRQaWN0b2dyYXBoRm9udEZhbWlseToo
TlNTdHJpbmcgKilmYW1pbHk7CiAKKy0gKEJPT0wpcGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOwor
LSAodm9pZClzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnM6KEJPT0wpZmxhZzsKKwogLy8gVGhp
cyBpcyBhIGdsb2JhbCBzZXR0aW5nLgogLSAoQk9PTCltb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAt
ICh2b2lkKXNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZDooQk9PTClmbGFnOwpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTAyNDU4KQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI4LDYgKzE0
MjgsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0
dGluZ3MtPnNldFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IoY29yZShbcHJl
ZmVyZW5jZXMgdGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvcl0pKTsKICAgICBz
ZXR0aW5ncy0+c2V0RE9NUGFzdGVBbGxvd2VkKFtwcmVmZXJlbmNlcyBpc0RPTVBhc3RlQWxsb3dl
ZF0pOwogICAgIHNldHRpbmdzLT5zZXRVc2VzUGFnZUNhY2hlKFtzZWxmIHVzZXNQYWdlQ2FjaGVd
KTsKKyAgICBzZXR0aW5ncy0+c2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKFtwcmVmZXJlbmNl
cyBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnNdKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd3NVUkxz
SW5Ub29sVGlwcyhbcHJlZmVyZW5jZXMgc2hvd3NVUkxzSW5Ub29sVGlwc10pOwogICAgIHNldHRp
bmdzLT5zZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChbcHJlZmVyZW5jZXMgc2hvd3NU
b29sVGlwT3ZlclRydW5jYXRlZFRleHRdKTsKICAgICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0
cmFzRW5hYmxlZChbcHJlZmVyZW5jZXMgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZF0pOwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTAyNDc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFBhZ2UgY2FjaGUgc2hvdWxkIHN1cHBvcnQgcGFnZXMgd2l0
aCBwbHVnaW5zLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE5MDEyMj4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4t
cGFnZS1jYWNoZS13b3Jrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMv
bmV0c2NhcGUtcGx1Z2luLXBhZ2UtY2FjaGUtd29ya3MuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGx1Z2lucy9yZXNvdXJjZXMvZ28tYmFjay5odG1sOiBBZGRlZC4KKwogMjAxMS0xMi0wOSAgQWRh
bSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbTXV0YXRpb25PYnNlcnZl
cnNdIEFkZCB0ZXN0IGZvciBkZWxpdmVyLWF0LWVuZC1vZi10YXNrIHNlbWFudGljcwpJbmRleDog
TGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4tcGFnZS1jYWNoZS13b3Jrcy1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS1wbHVn
aW4tcGFnZS1jYWNoZS13b3Jrcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbHVnaW5zL25ldHNjYXBlLXBsdWdpbi1wYWdlLWNhY2hlLXdvcmtzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHBhZ2VzIHdp
dGggcGx1Z2lucyBiZWhhdmUgcHJvcGVybHkgd2l0aCB0aGUgcGFnZSBjYWNoZS4gVGhpcyBpbmNs
dWRlczoKKy1UaGUgcGx1Z2luIGJlaW5nIGRlc3Ryb3llZCB1cG9uIG5hdmlnYXRpb24gYXdheSBm
cm9tIHRoZSBwYWdlLgorLVRoZSBwbHVnaW4gYmVpbmcgcmVjcmVhdGVkIHVwb24gcmVzdG9yaW5n
IHRoZSBwYWdlIGZyb20gdGhlIHBhZ2UgY2FjaGUuCistUGx1Z2luIHNjcmlwdCBvYmplY3RzIGFj
Y2Vzc2VkIHRoZSBmaXJzdCB0aW1lIHRoZSBwbHVnaW4gd2FzIGNyZWF0ZWQgYXJlIGFwcHJvcHJp
YXRlbHkgaW52YWxpZGF0ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSB0
aGUgcGFnZSBjYWNoZS4KKworVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkg
dG8gZ2V0IGFmZmlybWF0aXZlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBwbHVnaW4gd2FzIGRlc3Ry
b3llZCB1cG9uIG5hdmlnYXRpb24gYXdheSBmcm9tIHRoZSBwYWdlLiBGb3Igbm93IHdlJ2xsIGFz
c3VtZSByZWNyZWF0aW9uIG1lYW5zIGl0IGhhZCBzdWNjZXNzZnVsbHkgYmVlbiBkZXN0cm95ZWQu
CisKK0luaXRpYWwgbG9hZDogUGFnZSBsb2FkZWQKK0luaXRpYWwgbG9hZDogUGFnZSBzaG93bgor
SW5pdGlhbCBsb2FkOiBQbHVnaW4gY3JlYXRlZAorSW5pdGlhbCBsb2FkOiBBY2Nlc3NpbmcgdGVz
dE9iamVjdC5wcm9wZXJ0eQorSW5pdGlhbCBsb2FkOiBBY2Nlc3NlZCB0ZXN0T2JqZWN0LnByb3Bl
cnR5IHdpdGhvdXQgZXhjZXB0aW9uCitJbml0aWFsIGxvYWQ6IEFzc2lnbmluZyB0byB0ZXN0T2Jq
ZWN0LnByb3BlcnR5CitJbml0aWFsIGxvYWQ6IEFzc2lnbmVkIHRvIHRlc3RPYmplY3QucHJvcGVy
dHkgd2l0aG91dCBleGNlcHRpb24KK0luaXRpYWwgbG9hZDogUGFnZSBoaWRkZW4KK1Jlc3RvcmVk
IGZyb20gcGFnZSBjYWNoZTogUGFnZSBzaG93bgorUmVzdG9yZWQgZnJvbSBwYWdlIGNhY2hlOiBQ
bHVnaW4gY3JlYXRlZAorUmVzdG9yZWQgZnJvbSBwYWdlIGNhY2hlOiBBY2Nlc3NpbmcgdGVzdE9i
amVjdC5wcm9wZXJ0eQorUmVzdG9yZWQgZnJvbSBwYWdlIGNhY2hlOiBXaGlsZSBhY2Nlc3Npbmcg
dGVzdE9iamVjdC5wcm9wZXJ0eTogUmVmZXJlbmNlRXJyb3I6IFRyeWluZyB0byBhY2Nlc3Mgb2Jq
ZWN0IGZyb20gZGVzdHJveWVkIHBsdWctaW4uCitSZXN0b3JlZCBmcm9tIHBhZ2UgY2FjaGU6IEFz
c2lnbmluZyB0byB0ZXN0T2JqZWN0LnByb3BlcnR5CitSZXN0b3JlZCBmcm9tIHBhZ2UgY2FjaGU6
IFdoaWxlIGFzc2lnbmluZyB0byB0ZXN0T2JqZWN0LnByb3BlcnR5OiBSZWZlcmVuY2VFcnJvcjog
VHJ5aW5nIHRvIGFjY2VzcyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4KKwpJbmRleDog
TGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4tcGFnZS1jYWNoZS13b3Jrcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtcGx1Z2luLXBhZ2Ut
Y2FjaGUtd29ya3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbmV0
c2NhcGUtcGx1Z2luLXBhZ2UtY2FjaGUtd29ya3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4MyBAQAorPGh0bWw+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0UGFn
ZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVyZW5jZUtleSIsIDEpOworfQorCit2YXIgc2F2ZWRU
ZXN0T2JqZWN0ID0gbnVsbDsKK3ZhciBjdXJyZW50VGVzdFN0YWdlID0gbnVsbDsKK3ZhciBoYXNI
aWRkZW4gPSBmYWxzZTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHBsdWdpbiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0UGx1Z2luIik7CisgICAgCisgICAgaWYgKCFz
YXZlZFRlc3RPYmplY3QpCisgICAgICAgIHNhdmVkVGVzdE9iamVjdCA9IHBsdWdpbi50ZXN0T2Jq
ZWN0OworCisgICAgdHJ5IHsKKyAgICAgICAgbG9nKCJBY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9w
ZXJ0eSIpOworICAgICAgICBzYXZlZFRlc3RPYmplY3QucHJvcGVydHk7CisgICAgICAgIGxvZygi
QWNjZXNzZWQgdGVzdE9iamVjdC5wcm9wZXJ0eSB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nKCJXaGlsZSBhY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9w
ZXJ0eTogIiArIGUpOworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGxvZygiQXNzaWduaW5n
IHRvIHRlc3RPYmplY3QucHJvcGVydHkiKTsKKyAgICAgICAgc2F2ZWRUZXN0T2JqZWN0LnByb3Bl
cnR5ID0gJ2hlbGxvJzsKKyAgICAgICAgbG9nKCJBc3NpZ25lZCB0byB0ZXN0T2JqZWN0LnByb3Bl
cnR5IHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2co
IldoaWxlIGFzc2lnbmluZyB0byB0ZXN0T2JqZWN0LnByb3BlcnR5OiAiICsgZSk7CisgICAgfQor
ICAgIAorICAgIGlmICghaGFzSGlkZGVuKQorICAgICAgICBzZXRUaW1lb3V0KCJ3aW5kb3cubG9j
YXRpb24uaHJlZiA9ICdyZXNvdXJjZXMvZ28tYmFjay5odG1sJyIsIDApOworICAgIGVsc2Ugewor
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKK30KKworZnVuY3Rp
b24gbG9hZGVkKCkgeworICAgIGN1cnJlbnRUZXN0U3RhZ2UgPSAiSW5pdGlhbCBsb2FkIjsKKyAg
ICBsb2coIlBhZ2UgbG9hZGVkIik7Cit9CisKK2Z1bmN0aW9uIGhpZGRlbigpIHsKKyAgICBsb2co
IlBhZ2UgaGlkZGVuIik7CisgICAgaGFzSGlkZGVuID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc2hv
d24oKSB7CisgICAgaWYgKGhhc0hpZGRlbikKKyAgICAgICAgY3VycmVudFRlc3RTdGFnZSA9ICJS
ZXN0b3JlZCBmcm9tIHBhZ2UgY2FjaGUiCisgICAgbG9nKCJQYWdlIHNob3duIik7Cit9CisKK2Z1
bmN0aW9uIHBsdWdpbkNyZWF0ZWQoKQoreworICAgIGxvZygiUGx1Z2luIGNyZWF0ZWQiKTsKKyAg
ICBzZXRUaW1lb3V0KCJydW5UZXN0KCkiLCAwKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
Cit7CisgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nZ2luZyIpLmlubmVySFRNTCArPSBj
dXJyZW50VGVzdFN0YWdlICsgIjogIiArIG1lc3NhZ2UgKyAiPGJyPiI7Cit9Cis8L3NjcmlwdD4K
KworPGJvZHkgb25sb2FkPSJsb2FkZWQoKSIgb25wYWdlaGlkZT0iaGlkZGVuKCk7IiBvbnBhZ2Vz
aG93PSJzaG93bigpOyI+CitUaGlzIHRlc3RzIHRoYXQgcGFnZXMgd2l0aCBwbHVnaW5zIGJlaGF2
ZSBwcm9wZXJseSB3aXRoIHRoZSBwYWdlIGNhY2hlLiAgVGhpcyBpbmNsdWRlczo8YnI+CistVGhl
IHBsdWdpbiBiZWluZyBkZXN0cm95ZWQgdXBvbiBuYXZpZ2F0aW9uIGF3YXkgZnJvbSB0aGUgcGFn
ZS48YnI+CistVGhlIHBsdWdpbiBiZWluZyByZWNyZWF0ZWQgdXBvbiByZXN0b3JpbmcgdGhlIHBh
Z2UgZnJvbSB0aGUgcGFnZSBjYWNoZS48YnI+CistUGx1Z2luIHNjcmlwdCBvYmplY3RzIGFjY2Vz
c2VkIHRoZSBmaXJzdCB0aW1lIHRoZSBwbHVnaW4gd2FzIGNyZWF0ZWQgYXJlIGFwcHJvcHJpYXRl
bHkgaW52YWxpZGF0ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSB0aGUg
cGFnZSBjYWNoZS48YnI+PGJyPgorVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyByZWxpYWJsZSB3
YXkgdG8gZ2V0IGFmZmlybWF0aXZlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBwbHVnaW4gd2FzIGRl
c3Ryb3llZCB1cG9uIG5hdmlnYXRpb24gYXdheSBmcm9tIHRoZSBwYWdlLiAgRm9yIG5vdyB3ZSds
bCBhc3N1bWUgcmVjcmVhdGlvbiBtZWFucyBpdCBoYWQgc3VjY2Vzc2Z1bGx5IGJlZW4gZGVzdHJv
eWVkLjxicj4KKzxlbWJlZCBpZD0idGVzdFBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJr
aXQtdGVzdC1uZXRzY2FwZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIG9uTmV3PSJwbHVnaW5D
cmVhdGVkKCkiPjwvZW1iZWQ+PGJyPgorPGRpdiBpZD0ibG9nZ2luZyI+PC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Jlc291cmNlcy9nby1iYWNrLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvZ28tYmFjay5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvZ28tYmFj
ay5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8c2NyaXB0PgorZnVuY3Rpb24g
bG9hZGVkKCkKK3sKKyAgICBzZXRUaW1lb3V0KCJoaXN0b3J5LmdvKC0xKSIsIDApOworfQorPC9z
Y3JpcHQ+Cis8Ym9keSBvbmxvYWQ9ImxvYWRlZCgpOyI+VGhpcyBwYWdlIHNob3VsZCBnbyBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwYWdlLjwvYm9keT4KKzxzY3JpcHQ+CitpZiAoaGlzdG9yeS5sZW5n
dGggPT0gMCkgeworICAgIGRvY3VtZW50LmlubmVySFRNTCArPSAiPGJyPiBCdXQgaXQgd29uJ3Qg
d29yayBiZWNhdXNlIHRoZXJlIGlzIG5vIGJhY2sgaGlzdG9yeSEiOworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKzwvc2NyaXB0Pgo=
</data>
<flag name="commit-queue"
          id="118456"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118814</attachid>
            <date>2011-12-12 10:34:23 -0800</date>
            <delta_ts>2011-12-12 12:18:15 -0800</delta_ts>
            <desc>Patch v2 - Fixed naming in new Node.h method</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>30104</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjYwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDExLTEyLTEyICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBQYWdlIGNhY2hlIHNob3VsZCBz
dXBwb3J0IHBhZ2VzIHdpdGggcGx1Z2lucy4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUxOTAx
MjI+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCeSBtYWtpbmcg
cGx1Z2luIGVsZW1lbnRzIHJlbmRlcmVycyBnbyBkaXNwbGF5Om5vbmUgd2hlbiBlbnRlcmluZyB0
aGUgcGFnZSBjYWNoZSwKKyAgICAgICAgd2UgZGVzdHJveSB0aGUgcGx1Zy1pbiBpbiBhIGNyb3Nz
IHBsYXRmb3JtIHdheSBhcyB3ZWxsIGFzIGhhbmRsZSBpbnZhbGlkYXRpbmcgc2NyaXB0CisgICAg
ICAgIG9iamVjdHMgY3JlYXRlZCBieSB0aGF0IHBsdWdpbi4KKworICAgICAgICBCeSByZXN0b3Jp
bmcgdGhlIG9yaWdpbmFsIHN0eWxlIHdoZW4gbGVhdmluZyB0aGUgcGFnZSBjYWNoZSBhbmQgZm9y
Y2luZyBhIHN0eWxlIHJlY2FsYworICAgICAgICBvbiB0aGUgcGx1Z2luIGVsZW1lbnQsIHRoZSBw
bHVnaW4gaXMgZ3JhY2VmdWxseSByZWluc3RhbnRpYXRlZCB3aGVuIHRoZSB1c2VyIGdvZXMgYmFj
ay4KKworICAgICAgICBUZXN0OiBwbHVnaW5zL25ldHNjYXBlLXBsdWdpbi1wYWdlLWNhY2hlLXdv
cmtzLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOiBDb3B5IHRoaXMgY29sbGVjdGlv
biBiZWZvcmUgaXRlcmF0aW5nIG92ZXIKKyAgICAgICAgICBpdCwgYXMgdGhlIGNhbGxiYWNrcyBt
aWdodCByZXN1bHQgaW4gbXV0YXRpbmcgdGhlIHNldC4KKworICAgICAgICAqIGRvbS9Ob2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNsZWFySGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6
IEV4cG9zZSB0aGUgYWJpbGl0eSB0byBzdG9wIHVzaW5nIGEgCisgICAgICAgICAgY3VzdG9tIHJl
bmRlcmVyIGFuZCBnbyBiYWNrIHRvIHRoZSBkZWZhdWx0IHJlbmRlcmVyLgorCisgICAgICAgICog
aGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRGcmFtZTo6
Q2FjaGVkRnJhbWUpOiBNb3ZlIHRoZSBkb2N1bWVudCBpbmFjdGl2YXRpb24gY2FsbCB0byB0aGUg
c2FtZSBwbGFjZQorICAgICAgICAgIHdlIHN1c3BlbmQgYWN0aXZlIERPTSBvYmplY3RzLiBJdCBp
cyBpbXBvcnRhbnQgdGhpcyBjYWxsIGJlICphZnRlciogdGhlIGJlZm9yZXVubG9hZCBldmVudAor
ICAgICAgICAgIGlzIGRpc3BhdGNoZWQsIGFuZCB3YXMgY29pbmNpZGVudGFsIG5vbiBvZiB0aGUg
ZWxlbWVudHMgdGhhdCB1c2luZyBEb2N1bWVudCBhY3RpdmF0aW9uCisgICAgICAgICAgaGFkIHJ1
biBpbiB0byB0aGlzIHByb2JsZW0geWV0LgorCisgICAgICAgICogaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURlY2lzaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZSk6
IElmIHRoZSBwYWdlIGNvbnRhaW5zIHBsdWdpbnMgYnV0CisgICAgICAgICAgdGhlIFBhZ2VDYWNo
ZVN1cHBvcnRzUGx1Z2lucyBzZXR0aW5nIGlzIHRydWUsIGFsbG93IHRoaXMgcGFnZS4KKworICAg
ICAgICBLaWxsIGFuZCByZWNyZWF0ZSB0aGUgcGx1Z2luIGJ5IGxpc3RlbmluZyBmb3IgRG9jdW1l
bnQgYWN0aXZhdGlvbiBjYWxsYmFja3MgYW5kIHNldHRpbmcgYSBjdXN0b20KKyAgICAgICAgZGlz
cGxheTpub25lIHJlbmRlciBzdHlsZToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojp+SFRNTFBsdWdJbkltYWdlRWxlbWVudCk6IFVucmVnaXN0ZXIgZm9yIGRvY3VtZW50
IGFjdGl2YXRpb24KKyAgICAgICAgICBjYWxsYmFja3MuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6IE9uY2UgYSByZW5kZXJlciAoaWUu
IHBsdWdpbiBpbnN0YW5jZSkgaXMKKyAgICAgICAgICBjcmVhdGVkLCB0aGlzIGVsZW1lbnQgbmVl
ZHMgRG9jdW1lbnQgKGluKWFjdGl2YXRpb24gY2FsbGJhY2tzLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQpOiBNYW5h
Z2UgRG9jdW1lbnQgYWN0aXZhdGlvbiAKKyAgICAgICAgICBjYWxsYmFjayByZWdpc3RyYXRpb24u
CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRNb3ZlVG9OZXdP
d25lckRvY3VtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6IENsb25lIHRoZSBlbGVtZW50J3Mg
Y3VycmVudCBzdHlsZQorICAgICAgICAgIGFuZCBzZXQgdGhlIGNsb25lJ3MgZGlzcGxheSB2YWx1
ZSB0byBOb25lLiBTdGFydCB1c2luZyB0aGlzIGN1c3RvbSBzdHlsZSBhbmQgZm9yY2UgYSBzdHls
ZQorICAgICAgICAgIHJlY2FsbC4gVGhpcyBkZXN0cm95cyB0aGUgcmVuZGVyZXIgYW5kIHRoZXJl
Zm9yZSB0aGUgcGx1Z2luIGluc3RhbmNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbklt
YWdlRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUpOiBTdG9wIHVzaW5nIHRoZSBjdXN0
b20gc3R5bGUgYW5kCisgICAgICAgICAgZm9yY2UgYSBzdHlsZSByZWNhbGwgdG8gcmVpbnN0YW50
aWF0ZSB0aGUgcGx1Z2luLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6IFJldHVybiB0aGUgc3RhbmQtaW4gc3R5bGUgdGhh
dCBoYXMKKyAgICAgICAgICBkaXNwbGF5Om5vbmUgc2V0LgorICAgICAgICAqIGh0bWwvSFRNTFBs
dWdJbkltYWdlRWxlbWVudC5oOgorCisgICAgICAgIEFkZCBhIHNldHRpbmcgdGhhdCBhbGxvd3Mg
cnVudGltZSBjb25maWd1cmF0aW9uIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGNhY2hlIHN1
cHBvcnRzIHBsdWdpbnM6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMp
OgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucyk6
CisKIDIwMTEtMTItMTIgIE1hcnkgV3UgIDxtYXJ5Lnd1QHRvcmNobW9iaWxlLmNvbS5jbj4KIAog
ICAgICAgICBVcHN0cmVhbSAzIGZpbGVzIGludG8gV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEwMjYwMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MzAsOCArMzkz
MCwxMCBAQCB2b2lkIERvY3VtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2CiAKIHZvaWQg
RG9jdW1lbnQ6OmRvY3VtZW50RGlkQmVjb21lQWN0aXZlKCkgCiB7Ci0gICAgSGFzaFNldDxFbGVt
ZW50Kj46Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tFbGVtZW50
cy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBpID0gbV9kb2N1
bWVudEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCisg
ICAgVmVjdG9yPEVsZW1lbnQqPiBlbGVtZW50czsKKyAgICBjb3B5VG9WZWN0b3IobV9kb2N1bWVu
dEFjdGl2YXRpb25DYWxsYmFja0VsZW1lbnRzLCBlbGVtZW50cyk7CisgICAgVmVjdG9yPEVsZW1l
bnQqPjo6aXRlcmF0b3IgZW5kID0gZWxlbWVudHMuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8RWxl
bWVudCo+OjppdGVyYXRvciBpID0gZWxlbWVudHMuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKICAg
ICAgICAgKCppKS0+ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkocmV2aXNpb24gMTAyNjAxKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjkxLDcgKzY5MSw4
IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldEhhc0N1c3RvbVdpbGxPckRpZFJlY2FsY1N0eWxl
KCkgeyBzZXRGbGFnKHRydWUsIEhhc0N1c3RvbVdpbGxPckRpZFJlY2FsY1N0eWxlRmxhZyk7IH0K
ICAgICAKICAgICBib29sIGhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBnZXRGbGFnKEhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXJGbGFnKTsgfQotICAgIHZvaWQgc2V0
SGFzQ3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIHsgc2V0RmxhZyh0cnVlLCBIYXNDdXN0b21TdHls
ZUZvclJlbmRlcmVyRmxhZyk7IH0gCisgICAgdm9pZCBzZXRIYXNDdXN0b21TdHlsZUZvclJlbmRl
cmVyKCkgeyBzZXRGbGFnKHRydWUsIEhhc0N1c3RvbVN0eWxlRm9yUmVuZGVyZXJGbGFnKTsgfQor
ICAgIHZvaWQgY2xlYXJIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKCkgeyBjbGVhckZsYWcoSGFz
Q3VzdG9tU3R5bGVGb3JSZW5kZXJlckZsYWcpOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gRG8gbm90
IHVzZSB0aGlzIG1ldGhvZCB0byBjaGFuZ2UgdGhlIGRvY3VtZW50IG9mIGEgbm9kZSB1bnRpbCBh
ZnRlciB0aGUgbm9kZSBoYXMgYmVlbgpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRG
cmFtZS5jcHAJKHJldmlzaW9uIDEwMjYwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyArMTU2LDYgQEAgQ2FjaGVkRnJh
bWU6OkNhY2hlZEZyYW1lKEZyYW1lKiBmcmFtZSkKICAgICAvLyBDdXN0b20gc2Nyb2xsYmFyIHJl
bmRlcmVycyB3aWxsIGdldCByZWF0dGFjaGVkIHdoZW4gdGhlIGRvY3VtZW50IGNvbWVzIG91dCBv
ZiB0aGUgcGFnZSBjYWNoZQogICAgIG1fdmlldy0+ZGV0YWNoQ3VzdG9tU2Nyb2xsYmFycygpOwog
Ci0gICAgbV9kb2N1bWVudC0+ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICBmcmFt
ZS0+Y2xlYXJUaW1lcnMoKTsKICAgICBtX2RvY3VtZW50LT5zZXRJblBhZ2VDYWNoZSh0cnVlKTsK
ICAgICBmcmFtZS0+bG9hZGVyKCktPnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5VW5sb2Fk
QW5kUGFnZUhpZGUpOwpAQCAtMTcwLDYgKzE2OSw3IEBAIENhY2hlZEZyYW1lOjpDYWNoZWRGcmFt
ZShGcmFtZSogZnJhbWUpCiAgICAgLy8gU3VzcGVuZGluZyBtdXN0IGFsc28gaGFwcGVuIGFmdGVy
IHdlJ3ZlIHJlY3Vyc2VkIG92ZXIgY2hpbGQgZnJhbWVzLCBpbiBjYXNlCiAgICAgLy8gdGhvc2Ug
Y3JlYXRlIG1vcmUgb2JqZWN0cy4KICAgICAvLyBGSVhNRTogSXQncyBzdGlsbCBwb3NzaWJsZSB0
byBoYXZlIG9iamVjdHMgY3JlYXRlZCBhZnRlciBzdXNwZW5kaW5nIGluIHNvbWUgY2FzZXMsIHNl
ZSBodHRwOi8vd2Via2l0Lm9yZy9iLzUzNzMzIGZvciBtb3JlIGRldGFpbHMuCisgICAgbV9kb2N1
bWVudC0+ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKTsKICAgICBtX2RvY3VtZW50LT5zdXNw
ZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgbV9kb2N1bWVu
dC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxC
ZWNvbWVJbmFjdGl2ZSk7CiAgICAgbV9jYWNoZWRGcmFtZVNjcmlwdERhdGEgPSBhZG9wdFB0cihu
ZXcgU2NyaXB0Q2FjaGVkRnJhbWVEYXRhKGZyYW1lKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiAxMDI2MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0
b3J5L1BhZ2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0
aWMgYm9vbCBsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24oRnJhCiAgICAgICAgICAgICBQQ0xPRygi
ICAgLU1haW4gZG9jdW1lbnQgaGFzIGFuIGVycm9yIik7CiAgICAgICAgICAgICBjYW5ub3RDYWNo
ZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJh
bWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5sb2Fk
ZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkgJiYgIWZyYW1lLT5wYWdl
KCktPnNldHRpbmdzKCktPnBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2lucygpKSB7CiAgICAgICAgICAg
ICBQQ0xPRygiICAgLUZyYW1lIGNvbnRhaW5zIHBsdWdpbnMiKTsKICAgICAgICAgICAgIGNhbm5v
dENhY2hlID0gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjU1LDEyICsyNTUsNyBAQCBib29sIFBhZ2VD
YWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoCiAgICAgICAgICYmIGZyYW1lLT5sb2FkZXIo
KS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpbkRvY3VtZW50RXJyb3IoKS5pc051bGwoKQogICAgICAg
ICAvLyBEbyBub3QgY2FjaGUgZXJyb3IgcGFnZXMgKHRoZXNlIGNhbiBiZSByZWNvZ25pemVkIGFz
IHBhZ2VzIHdpdGggc3Vic3RpdHV0ZSBkYXRhIG9yIHVucmVhY2hhYmxlIFVSTHMpLgogICAgICAg
ICAmJiAhKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3RpdHV0ZURhdGEo
KS5pc1ZhbGlkKCkgJiYgIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Vic3Rp
dHV0ZURhdGEoKS5mYWlsaW5nVVJMKCkuaXNFbXB0eSgpKQotICAgICAgICAvLyBGSVhNRTogSWYg
d2UgZXZlciBjaGFuZ2UgdGhpcyBzbyB0aGF0IGZyYW1lcyB3aXRoIHBsdWctaW5zIHdpbGwgYmUg
Y2FjaGVkLAotICAgICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGNh
Y2hlIGZyYW1lcyB0aGF0IGhhdmUgb3V0c3RhbmRpbmcgTlBPYmplY3RzCi0gICAgICAgIC8vIChv
YmplY3RzIGNyZWF0ZWQgYnkgdGhlIHBsdWctaW4pLiBTaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8g
cGF1c2UvcmVzdW1lIGEgTmV0c2NhcGUgcGx1Zy1pbiwKLSAgICAgICAgLy8gdGhleSB3b3VsZCBu
ZWVkIHRvIGJlIGRlc3Ryb3llZCBhbmQgdGhlbiByZWNyZWF0ZWQsIGFuZCB0aGVyZSBpcyBubyB3
YXkgdGhhdCB3ZSBjYW4gcmVjcmVhdGUKLSAgICAgICAgLy8gdGhlIHJpZ2h0IE5QT2JqZWN0cy4g
U2VlIDxyZGFyOi8vcHJvYmxlbS81MTk3MDQxPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSAgICAg
ICAgJiYgIWZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5z
KCkKKyAgICAgICAgJiYgKCFmcmFtZS0+bG9hZGVyKCktPnN1YmZyYW1lTG9hZGVyKCktPmNvbnRh
aW5zUGx1Z2lucygpIHx8IGZyYW1lLT5wYWdlKCktPnNldHRpbmdzKCktPnBhZ2VDYWNoZVN1cHBv
cnRzUGx1Z2lucygpKQogICAgICAgICAmJiAhZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3Rv
Y29sSXMoImh0dHBzIikKICAgICAgICAgJiYgKCFmcmFtZS0+ZG9tV2luZG93KCkgfHwgIWZyYW1l
LT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50
KSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxMDI2MDEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MiwxMCArNDIsMTcgQEAgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6SFRNTFBsdWdJbklt
YWdlRQogICAgIC8vIHRoZSBzYW1lIGNvZGVwYXRoIGluIHRoaXMgY2xhc3MuCiAgICAgLCBtX25l
ZWRzV2lkZ2V0VXBkYXRlKCFjcmVhdGVkQnlQYXJzZXIpCiAgICAgLCBtX3Nob3VsZFByZWZlclBs
dWdJbnNGb3JJbWFnZXMocHJlZmVyUGx1Z0luc0ZvckltYWdlc09wdGlvbiA9PSBTaG91bGRQcmVm
ZXJQbHVnSW5zRm9ySW1hZ2VzKQorICAgICwgbV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxi
YWNrcyhmYWxzZSkKIHsKICAgICBzZXRIYXNDdXN0b21XaWxsT3JEaWRSZWNhbGNTdHlsZSgpOwog
fQogCitIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp+SFRNTFBsdWdJbkltYWdlRWxlbWVudCgpCit7
CisgICAgaWYgKG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MpCisgICAgICAgIGRv
Y3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3ModGhpcyk7
Cit9CisKIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZW5k
ZXJFbWJlZGRlZE9iamVjdCgpIGNvbnN0CiB7CiAgICAgLy8gSFRNTE9iamVjdEVsZW1lbnQgYW5k
IEhUTUxFbWJlZEVsZW1lbnQgbWF5IHJldHVybiBhcmJpdHJhcnkgcmVuZGVyZXJzCkBAIC0xMTUs
NiArMTIyLDEzIEBAIGJvb2wgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6d291bGRMb2FkQXMKIAog
UmVuZGVyT2JqZWN0KiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKKyAgICAvLyBPbmNlIGEgUGx1
Z0luIEVsZW1lbnQgY3JlYXRlcyBpdHMgcmVuZGVyZXIsIGl0IG5lZWRzIHRvIGJlIHRvbGQgd2hl
biB0aGUgRG9jdW1lbnQgZ29lcworICAgIC8vIGluYWN0aXZlIG9yIHJlYWN0aXZhdGVzIHNvIGl0
IGNhbiBjbGVhciB0aGUgcmVuZGVyZXIgYmVmb3JlIGdvaW5nIGludG8gdGhlIHBhZ2UgY2FjaGUu
CisgICAgaWYgKCFtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKSB7CisgICAgICAg
IG1fbmVlZHNEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3MgPSB0cnVlOworICAgICAgICBkb2N1
bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsKKyAg
ICB9CisgICAgCiAgICAgLy8gRmFsbGJhY2sgY29udGVudCBicmVha3MgdGhlIERPTS0+UmVuZGVy
ZXIgY2xhc3MgcmVsYXRpb25zaGlwIG9mIHRoaXMKICAgICAvLyBjbGFzcyBhbmQgYWxsIHN1cGVy
Y2xhc3NlcyBiZWNhdXNlIGNyZWF0ZU9iamVjdCB3b24ndCBuZWNlc3NhcmlseQogICAgIC8vIHJl
dHVybiBhIFJlbmRlckVtYmVkZGVkT2JqZWN0LCBSZW5kZXJQYXJ0IG9yIGV2ZW4gUmVuZGVyV2lk
Z2V0LgpAQCAtMTg5LDExICsyMDMsNTggQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpm
aW5pc2hQYXJzaQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdP
d25lckRvY3VtZW50KCkKIHsKKyAgICBpZiAobV9uZWVkc0RvY3VtZW50QWN0aXZhdGlvbkNhbGxi
YWNrcykKKyAgICAgICAgZG9jdW1lbnQoKS0+dW5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlv
bkNhbGxiYWNrcyh0aGlzKTsKKwogICAgIGlmIChtX2ltYWdlTG9hZGVyKQogICAgICAgICBtX2lt
YWdlTG9hZGVyLT5lbGVtZW50V2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKKwogICAgIEhU
TUxQbHVnSW5FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOwogfQogCit2b2lk
IEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKQorewor
ICAgIGlmIChtX25lZWRzRG9jdW1lbnRBY3RpdmF0aW9uQ2FsbGJhY2tzKQorICAgICAgICBkb2N1
bWVudCgpLT5yZWdpc3RlckZvckRvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrcyh0aGlzKTsgICAK
KyAgICAKKyAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZGlkTW92ZVRvTmV3T3duZXJEb2N1bWVudCgp
OworfQorCit2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUlu
YWN0aXZlKCkKK3sKKyAgICBpZiAoUmVuZGVyU3R5bGUqIHJzID0gcmVuZGVyU3R5bGUoKSkgewor
ICAgICAgICBtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hlID0gUmVuZGVyU3R5bGU6OmNsb25lKHJz
KTsKKyAgICAgICAgbV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZS0+c2V0RGlzcGxheShOT05FKTsK
KyAgICB9CisKKyAgICBzZXRIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKCk7CisKKyAgICBpZiAo
bV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZSkKKyAgICAgICAgcmVjYWxjU3R5bGUoRm9yY2UpOwor
ICAgICAgICAKKyAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3Rp
dmUoKTsKK30KKwordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpkb2N1bWVudERpZEJlY29t
ZUFjdGl2ZSgpCit7CisgICAgY2xlYXJIYXNDdXN0b21TdHlsZUZvclJlbmRlcmVyKCk7CisKKyAg
ICBpZiAobV9jdXN0b21TdHlsZUZvclBhZ2VDYWNoZSkgeworICAgICAgICBtX2N1c3RvbVN0eWxl
Rm9yUGFnZUNhY2hlID0gMDsKKyAgICAgICAgcmVjYWxjU3R5bGUoRm9yY2UpOworICAgIH0KKyAg
ICAKKyAgICBIVE1MUGx1Z0luRWxlbWVudDo6ZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKK30K
KworUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y3VzdG9t
U3R5bGVGb3JSZW5kZXJlcigpCit7CisgICAgaWYgKCFtX2N1c3RvbVN0eWxlRm9yUGFnZUNhY2hl
KQorICAgICAgICByZXR1cm4gcmVuZGVyU3R5bGUoKTsKKworICAgIHJldHVybiBtX2N1c3RvbVN0
eWxlRm9yUGFnZUNhY2hlOworfQorCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0
ZVdpZGdldENhbGxiYWNrKE5vZGUqIG4sIHVuc2lnbmVkKQogewogICAgIHN0YXRpY19jYXN0PEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQqPihuKS0+dXBkYXRlV2lkZ2V0SWZOZWNlc3NhcnkoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oCShyZXZp
c2lvbiAxMDI2MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2RlZmluZSBIVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50X2gKIAogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisKKyNpbmNs
dWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDIsNiArNDQsOCBAQCBlbnVtIFByZWZlclBsdWdJbnNGb3JJbWFnZXNP
cHRpb24gewogLy8gQmFzZSBjbGFzcyBmb3IgSFRNTE9iamVjdEVsZW1lbnQgYW5kIEhUTUxFbWJl
ZEVsZW1lbnQKIGNsYXNzIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQgOiBwdWJsaWMgSFRNTFBsdWdJ
bkVsZW1lbnQgewogcHVibGljOgorICAgIHZpcnR1YWwgfkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQo
KSBPVkVSUklERTsKKwogICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJFbWJlZGRlZE9i
amVjdCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVdpZGdldChQbHVnaW5DcmVh
dGlvbk9wdGlvbikgPSAwOwpAQCAtNjksNyArNzMsMTMgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
YWxsb3dlZFRvTG9hZEZyYW1lVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBib29sIHdvdWxk
TG9hZEFzTmV0c2NhcGVQbHVnaW4oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgc2Vy
dmljZVR5cGUpOwogCi0gICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKSBPVkVSUklE
RTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKSBPVkVS
UklERTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVG
b3JSZW5kZXJlcigpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CkBAIC04Miw2
ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBtX25lZWRzV2lkZ2V0VXBkYXRlOwog
ICAgIGJvb2wgbV9zaG91bGRQcmVmZXJQbHVnSW5zRm9ySW1hZ2VzOworICAgIGJvb2wgbV9uZWVk
c0RvY3VtZW50QWN0aXZhdGlvbkNhbGxiYWNrczsKKyAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1f
Y3VzdG9tU3R5bGVGb3JQYWdlQ2FjaGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gMTAyNjAxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw2ICsxNTMs
NyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNET01QYXN0ZUFs
bG93ZWQoZmFsc2UpCiAgICAgLCBtX3Nocmlua3NTdGFuZGFsb25lSW1hZ2VzVG9GaXQodHJ1ZSkK
ICAgICAsIG1fdXNlc1BhZ2VDYWNoZShmYWxzZSkKKyAgICAsIG1fcGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zKGZhbHNlKQogICAgICwgbV9zaG93c1VSTHNJblRvb2xUaXBzKGZhbHNlKQogICAgICwg
bV9zaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChmYWxzZSkKICAgICAsIG1fZm9yY2VGVFBE
aXJlY3RvcnlMaXN0aW5ncyhmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlz
aW9uIDEwMjYwMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMjI5LDYgKzIyOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
b2lkIHNldFVzZXNQYWdlQ2FjaGUoYm9vbCk7CiAgICAgICAgIGJvb2wgdXNlc1BhZ2VDYWNoZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdXNlc1BhZ2VDYWNoZTsgfQorICAgICAgICAKKyAgICAgICAgdm9p
ZCBzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoYm9vbCBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnMpIHsgbV9wYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMgPSBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnM7IH0KKyAgICAgICAgYm9vbCBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luczsgfQogCiAgICAgICAgIHZvaWQgc2V0U2hy
aW5rc1N0YW5kYWxvbmVJbWFnZXNUb0ZpdChib29sKTsKICAgICAgICAgYm9vbCBzaHJpbmtzU3Rh
bmRhbG9uZUltYWdlc1RvRml0KCkgY29uc3QgeyByZXR1cm4gbV9zaHJpbmtzU3RhbmRhbG9uZUlt
YWdlc1RvRml0OyB9CkBAIC01NjEsNyArNTY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIG1fbmVlZHNMZW9wYXJkTWFpbFF1aXJrcyA6IDE7CiAgICAgICAgIGJvb2wgbV9p
c0RPTVBhc3RlQWxsb3dlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9zaHJpbmtzU3RhbmRhbG9uZUlt
YWdlc1RvRml0IDogMTsKLSAgICAgICAgYm9vbCBtX3VzZXNQYWdlQ2FjaGU6IDE7CisgICAgICAg
IGJvb2wgbV91c2VzUGFnZUNhY2hlIDogMTsKKyAgICAgICAgYm9vbCBtX3BhZ2VDYWNoZVN1cHBv
cnRzUGx1Z2lucyA6IDE7CiAgICAgICAgIGJvb2wgbV9zaG93c1VSTHNJblRvb2xUaXBzIDogMTsK
ICAgICAgICAgYm9vbCBtX3Nob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0IDogMTsKICAgICAg
ICAgYm9vbCBtX2ZvcmNlRlRQRGlyZWN0b3J5TGlzdGluZ3MgOiAxOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMTAyNjAxKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFBhZ2UgY2FjaGUgc2hvdWxkIHN1cHBvcnQgcGFnZXMgd2l0
aCBwbHVnaW5zLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE5MDEyMj4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNAorCisgICAgICAgIEV4cG9zZSBh
IFdlYktpdDIgcHJlZmVyZW5jZSBmb3IgdGhlIHBhZ2UgY2FjaGUgc3VwcG9ydGluZyBwbHVnaW5z
IChvbiBieSBkZWZhdWx0KS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2Vz
U2V0UGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRQ
YWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUHJpdmF0ZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisK
IDIwMTEtMTItMTIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBjbGVhbnVwIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkocmV2aXNpb24gMTAyNjAxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBtYWNybyhXZWJBcmNoaXZl
RGVidWdNb2RlRW5hYmxlZCwgd2ViQXJjaGl2ZURlYnVnTW9kZUVuYWJsZWQsIEJvb2wsIGJvb2ws
IGZhbHNlKSBcCiAgICAgbWFjcm8oTG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgbG9j
YWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBt
YWNybyhVc2VzUGFnZUNhY2hlLCB1c2VzUGFnZUNhY2hlLCBCb29sLCBib29sLCB0cnVlKSBcCisg
ICAgbWFjcm8oUGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zLCBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnMsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhBdXRob3JBbmRVc2VyU3R5bGVzRW5h
YmxlZCwgYXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAg
ICBtYWNybyhQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQsIHBhZ2luYXRlRHVyaW5nTGF5b3V0
RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhET01QYXN0ZUFsbG93ZWQs
IGRvbVBhc3RlQWxsb3dlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDEw
MjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDkyLDYgKzQ5MiwxNiBAQCBib29sIFdLUHJlZmVyZW5jZXNH
ZXRQYWdlQ2FjaGVFbmFibGVkKFdLCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnVzZXNQYWdlQ2FjaGUoKTsKIH0KIAordm9pZCBXS1ByZWZlcmVuY2VzU2V0UGFnZUNhY2hlU3Vw
cG9ydHNQbHVnaW5zKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgcGFnZUNh
Y2hlU3VwcG9ydHNQbHVnaW5zKQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFBh
Z2VDYWNoZVN1cHBvcnRzUGx1Z2lucyhwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMpOworfQorCiti
b29sIFdLUHJlZmVyZW5jZXNHZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnMoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zKCk7Cit9CisKIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCBib29sIGVuYWJsZWQpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0UGFn
aW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGVuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlz
aW9uIDEwMjYwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDEwIEBAIFdLX0VYUE9S
VCBib29sIFdLUHJlZmVyZW5jZXNHZXRMb2NhbEZpbGUKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRQYWdlQ2FjaGVFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIGJv
b2wgZW5hYmxlZCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0UGFnZUNhY2hlRW5h
YmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKIAorLy8gRGVmYXVsdHMgdG8gdHJ1
ZS4KK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdp
bnMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcywgYm9vbCBwYWdlQ2FjaGVTdXBwb3J0c1Bs
dWdpbnMpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFBhZ2VDYWNoZVN1cHBvcnRz
UGx1Z2lucyhXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzKTsKKwogLy8gRGVmYXVsdHMgdG8g
ZmFsc2UuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UGFnaW5hdGVEdXJpbmdMYXlv
dXRFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMsIGJvb2wgZW5hYmxlZCk7CiBX
S19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVk
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTAyNjAxKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzkyLDYgKzE3OTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNv
bnN0IFdlCiAjZW5kaWYKICAgICBzZXR0aW5ncy0+c2V0TG9jYWxGaWxlQ29udGVudFNuaWZmaW5n
RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmxvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRVc2Vz
UGFnZUNhY2hlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dXNl
c1BhZ2VDYWNoZUtleSgpKSk7CisgICAgc2V0dGluZ3MtPnNldFBhZ2VDYWNoZVN1cHBvcnRzUGx1
Z2lucyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBhZ2VDYWNo
ZVN1cHBvcnRzUGx1Z2luc0tleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldEF1dGhvckFuZFVzZXJT
dHlsZXNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRQYWdp
bmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjpwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLT5zZXRET01QYXN0ZUFsbG93ZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojpkb21QYXN0ZUFsbG93ZWRLZXkoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMTAyNjAxKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTEtMTItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2UgY2FjaGUgc2hvdWxkIHN1cHBvcnQgcGFnZXMg
d2l0aCBwbHVnaW5zLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTE5MDEyMj4gYW5kIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzYzNAorCisgICAgICAgIEV4cG9z
ZSBhIFdlYktpdCBwcmVmZXJlbmNlIGZvciB0aGUgcGFnZSBjYWNoZSBzdXBwb3J0aW5nIHBsdWdp
bnMgKG9uIGJ5IGRlZmF1bHQpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKworICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgtW1dlYlByZWZlcmVu
Y2VzIHBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc10pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNl
cyBzZXRQYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnM6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQ
cmVmZXJlbmNlc1ByaXZhdGUuaDoKKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorCiAyMDExLTEyLTA3ICBN
YXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSAzMi1iaXQgYnVp
bGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJp
dmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDEwMjYwMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1
LDYgKzc1LDcgQEAKICNkZWZpbmUgV2ViQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxl
ZCBAIldlYkF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktp
dERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVm
ZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSBAIldl
YktpdFVzZXNQYWdlQ2FjaGVQcmVmZXJlbmNlS2V5IgorI2RlZmluZSBXZWJLaXRQYWdlQ2FjaGVT
dXBwb3J0c1BsdWdpbnNQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQbHVn
aW5zUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRo
IEAiV2ViS2l0RlRQRGlyZWN0b3J5VGVtcGxhdGVQYXRoIgogI2RlZmluZSBXZWJLaXRGb3JjZUZU
UERpcmVjdG9yeUxpc3RpbmdzIEAiV2ViS2l0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5ncyIKICNk
ZWZpbmUgV2ViS2l0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRE
ZXZlbG9wZXJFeHRyYXNFbmFibGVkUHJlZmVyZW5jZUtleSIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTAyNjAxKQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTU1Nyw2ICsxNTU3LDE3IEBAIC0gKHZvaWQpc2V0UGljdG9ncmFwaEZvbnRGYW1pbHk6KE5T
U3RyaW4KICAgICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6IGZhbWlseSBmb3JLZXk6IFdlYktpdFBp
Y3RvZ3JhcGhGb250UHJlZmVyZW5jZUtleV07CiB9CiAKKy0gKEJPT0wpcGFnZUNhY2hlU3VwcG9y
dHNQbHVnaW5zCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0UGFn
ZUNhY2hlU3VwcG9ydHNQbHVnaW5zUHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0UGFn
ZUNhY2hlU3VwcG9ydHNQbHVnaW5zOihCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZh
bHVlOmZsYWcgZm9yS2V5OldlYktpdFBhZ2VDYWNoZVN1cHBvcnRzUGx1Z2luc1ByZWZlcmVuY2VL
ZXldOworCit9CisKIC0gKHZvaWQpc2V0U3VwcHJlc3NJbmNyZW1lbnRhbFJlbmRlcmluZzooQk9P
TClmbGFnCiB7CiAgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktleTpXZWJLaXRTdXBw
cmVzc0luY3JlbWVudGFsUmVuZGVyaW5nS2V5XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMTAyNjAxKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjE5LDYgKzIxOSw5IEBAIEBpbnRlcmZhY2UgV2ViUHJlZmVyZW5jZXMg
KFdlYlByaXZhdGUpCiAtIChOU1N0cmluZyAqKXBpY3RvZ3JhcGhGb250RmFtaWx5OwogLSAodm9p
ZClzZXRQaWN0b2dyYXBoRm9udEZhbWlseTooTlNTdHJpbmcgKilmYW1pbHk7CiAKKy0gKEJPT0wp
cGFnZUNhY2hlU3VwcG9ydHNQbHVnaW5zOworLSAodm9pZClzZXRQYWdlQ2FjaGVTdXBwb3J0c1Bs
dWdpbnM6KEJPT0wpZmxhZzsKKwogLy8gVGhpcyBpcyBhIGdsb2JhbCBzZXR0aW5nLgogLSAoQk9P
TCltb2NrU2Nyb2xsYmFyc0VuYWJsZWQ7CiAtICh2b2lkKXNldE1vY2tTY3JvbGxiYXJzRW5hYmxl
ZDooQk9PTClmbGFnOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2
aXNpb24gMTAyNjAxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDI4LDYgKzE0MjgsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0No
YW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGluZ3MtPnNldFRleHREaXJlY3Rpb25TdWJtZW51
SW5jbHVzaW9uQmVoYXZpb3IoY29yZShbcHJlZmVyZW5jZXMgdGV4dERpcmVjdGlvblN1Ym1lbnVJ
bmNsdXNpb25CZWhhdmlvcl0pKTsKICAgICBzZXR0aW5ncy0+c2V0RE9NUGFzdGVBbGxvd2VkKFtw
cmVmZXJlbmNlcyBpc0RPTVBhc3RlQWxsb3dlZF0pOwogICAgIHNldHRpbmdzLT5zZXRVc2VzUGFn
ZUNhY2hlKFtzZWxmIHVzZXNQYWdlQ2FjaGVdKTsKKyAgICBzZXR0aW5ncy0+c2V0UGFnZUNhY2hl
U3VwcG9ydHNQbHVnaW5zKFtwcmVmZXJlbmNlcyBwYWdlQ2FjaGVTdXBwb3J0c1BsdWdpbnNdKTsK
ICAgICBzZXR0aW5ncy0+c2V0U2hvd3NVUkxzSW5Ub29sVGlwcyhbcHJlZmVyZW5jZXMgc2hvd3NV
UkxzSW5Ub29sVGlwc10pOwogICAgIHNldHRpbmdzLT5zZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNh
dGVkVGV4dChbcHJlZmVyZW5jZXMgc2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRdKTsKICAg
ICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChbcHJlZmVyZW5jZXMgZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZF0pOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNjAxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTIt
MTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2UgY2Fj
aGUgc2hvdWxkIHN1cHBvcnQgcGFnZXMgd2l0aCBwbHVnaW5zLgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTE5MDEyMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzYzNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4tcGFnZS1jYWNoZS13b3Jrcy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHBsdWdpbnMvbmV0c2NhcGUtcGx1Z2luLXBhZ2UtY2FjaGUtd29y
a3MuaHRtbDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy9yZXNvdXJjZXMvZ28tYmFjay5odG1s
OiBBZGRlZC4KKwogMjAxMS0xMi0xMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuIEFkZCBRdDUgc3BlY2lm
aWMgZXhwZWN0ZWQgcmVzdWx0cyBhZnRlciByMTAyMzg4LgpJbmRleDogTGF5b3V0VGVzdHMvcGx1
Z2lucy9uZXRzY2FwZS1wbHVnaW4tcGFnZS1jYWNoZS13b3Jrcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4tcGFnZS1jYWNoZS13
b3Jrcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL25l
dHNjYXBlLXBsdWdpbi1wYWdlLWNhY2hlLXdvcmtzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHBhZ2VzIHdpdGggcGx1Z2lucyBiZWhh
dmUgcHJvcGVybHkgd2l0aCB0aGUgcGFnZSBjYWNoZS4gVGhpcyBpbmNsdWRlczoKKy1UaGUgcGx1
Z2luIGJlaW5nIGRlc3Ryb3llZCB1cG9uIG5hdmlnYXRpb24gYXdheSBmcm9tIHRoZSBwYWdlLgor
LVRoZSBwbHVnaW4gYmVpbmcgcmVjcmVhdGVkIHVwb24gcmVzdG9yaW5nIHRoZSBwYWdlIGZyb20g
dGhlIHBhZ2UgY2FjaGUuCistUGx1Z2luIHNjcmlwdCBvYmplY3RzIGFjY2Vzc2VkIHRoZSBmaXJz
dCB0aW1lIHRoZSBwbHVnaW4gd2FzIGNyZWF0ZWQgYXJlIGFwcHJvcHJpYXRlbHkgaW52YWxpZGF0
ZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSB0aGUgcGFnZSBjYWNoZS4K
KworVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgdG8gZ2V0IGFmZmlybWF0
aXZlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBwbHVnaW4gd2FzIGRlc3Ryb3llZCB1cG9uIG5hdmln
YXRpb24gYXdheSBmcm9tIHRoZSBwYWdlLiBGb3Igbm93IHdlJ2xsIGFzc3VtZSByZWNyZWF0aW9u
IG1lYW5zIGl0IGhhZCBzdWNjZXNzZnVsbHkgYmVlbiBkZXN0cm95ZWQuCisKK0luaXRpYWwgbG9h
ZDogUGFnZSBsb2FkZWQKK0luaXRpYWwgbG9hZDogUGFnZSBzaG93bgorSW5pdGlhbCBsb2FkOiBQ
bHVnaW4gY3JlYXRlZAorSW5pdGlhbCBsb2FkOiBBY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9wZXJ0
eQorSW5pdGlhbCBsb2FkOiBBY2Nlc3NlZCB0ZXN0T2JqZWN0LnByb3BlcnR5IHdpdGhvdXQgZXhj
ZXB0aW9uCitJbml0aWFsIGxvYWQ6IEFzc2lnbmluZyB0byB0ZXN0T2JqZWN0LnByb3BlcnR5CitJ
bml0aWFsIGxvYWQ6IEFzc2lnbmVkIHRvIHRlc3RPYmplY3QucHJvcGVydHkgd2l0aG91dCBleGNl
cHRpb24KK0luaXRpYWwgbG9hZDogUGFnZSBoaWRkZW4KK1Jlc3RvcmVkIGZyb20gcGFnZSBjYWNo
ZTogUGFnZSBzaG93bgorUmVzdG9yZWQgZnJvbSBwYWdlIGNhY2hlOiBQbHVnaW4gY3JlYXRlZAor
UmVzdG9yZWQgZnJvbSBwYWdlIGNhY2hlOiBBY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9wZXJ0eQor
UmVzdG9yZWQgZnJvbSBwYWdlIGNhY2hlOiBXaGlsZSBhY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9w
ZXJ0eTogUmVmZXJlbmNlRXJyb3I6IFRyeWluZyB0byBhY2Nlc3Mgb2JqZWN0IGZyb20gZGVzdHJv
eWVkIHBsdWctaW4uCitSZXN0b3JlZCBmcm9tIHBhZ2UgY2FjaGU6IEFzc2lnbmluZyB0byB0ZXN0
T2JqZWN0LnByb3BlcnR5CitSZXN0b3JlZCBmcm9tIHBhZ2UgY2FjaGU6IFdoaWxlIGFzc2lnbmlu
ZyB0byB0ZXN0T2JqZWN0LnByb3BlcnR5OiBSZWZlcmVuY2VFcnJvcjogVHJ5aW5nIHRvIGFjY2Vz
cyBvYmplY3QgZnJvbSBkZXN0cm95ZWQgcGx1Zy1pbi4KKwpJbmRleDogTGF5b3V0VGVzdHMvcGx1
Z2lucy9uZXRzY2FwZS1wbHVnaW4tcGFnZS1jYWNoZS13b3Jrcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtcGx1Z2luLXBhZ2UtY2FjaGUtd29ya3MuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsdWdpbnMvbmV0c2NhcGUtcGx1Z2luLXBh
Z2UtY2FjaGUtd29ya3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorPGh0bWw+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53
YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXRVc2VzUGFnZUNhY2hlUHJlZmVyZW5jZUtleSIsIDEpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0UGFnZUNhY2hlU3VwcG9ydHNQ
bHVnaW5zUHJlZmVyZW5jZUtleSIsIDEpOworfQorCit2YXIgc2F2ZWRUZXN0T2JqZWN0ID0gbnVs
bDsKK3ZhciBjdXJyZW50VGVzdFN0YWdlID0gbnVsbDsKK3ZhciBoYXNIaWRkZW4gPSBmYWxzZTsK
KworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHBsdWdpbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0UGx1Z2luIik7CisgICAgCisgICAgaWYgKCFzYXZlZFRlc3RPYmplY3Qp
CisgICAgICAgIHNhdmVkVGVzdE9iamVjdCA9IHBsdWdpbi50ZXN0T2JqZWN0OworCisgICAgdHJ5
IHsKKyAgICAgICAgbG9nKCJBY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9wZXJ0eSIpOworICAgICAg
ICBzYXZlZFRlc3RPYmplY3QucHJvcGVydHk7CisgICAgICAgIGxvZygiQWNjZXNzZWQgdGVzdE9i
amVjdC5wcm9wZXJ0eSB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgbG9nKCJXaGlsZSBhY2Nlc3NpbmcgdGVzdE9iamVjdC5wcm9wZXJ0eTogIiArIGUpOwor
ICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIGxvZygiQXNzaWduaW5nIHRvIHRlc3RPYmplY3Qu
cHJvcGVydHkiKTsKKyAgICAgICAgc2F2ZWRUZXN0T2JqZWN0LnByb3BlcnR5ID0gJ2hlbGxvJzsK
KyAgICAgICAgbG9nKCJBc3NpZ25lZCB0byB0ZXN0T2JqZWN0LnByb3BlcnR5IHdpdGhvdXQgZXhj
ZXB0aW9uIik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2coIldoaWxlIGFzc2lnbmlu
ZyB0byB0ZXN0T2JqZWN0LnByb3BlcnR5OiAiICsgZSk7CisgICAgfQorICAgIAorICAgIGlmICgh
aGFzSGlkZGVuKQorICAgICAgICBzZXRUaW1lb3V0KCJ3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdy
ZXNvdXJjZXMvZ28tYmFjay5odG1sJyIsIDApOworICAgIGVsc2UgeworICAgICAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKK30KKworZnVuY3Rpb24gbG9hZGVkKCkgewor
ICAgIGN1cnJlbnRUZXN0U3RhZ2UgPSAiSW5pdGlhbCBsb2FkIjsKKyAgICBsb2coIlBhZ2UgbG9h
ZGVkIik7Cit9CisKK2Z1bmN0aW9uIGhpZGRlbigpIHsKKyAgICBsb2coIlBhZ2UgaGlkZGVuIik7
CisgICAgaGFzSGlkZGVuID0gdHJ1ZTsKK30KKworZnVuY3Rpb24gc2hvd24oKSB7CisgICAgaWYg
KGhhc0hpZGRlbikKKyAgICAgICAgY3VycmVudFRlc3RTdGFnZSA9ICJSZXN0b3JlZCBmcm9tIHBh
Z2UgY2FjaGUiCisgICAgbG9nKCJQYWdlIHNob3duIik7Cit9CisKK2Z1bmN0aW9uIHBsdWdpbkNy
ZWF0ZWQoKQoreworICAgIGxvZygiUGx1Z2luIGNyZWF0ZWQiKTsKKyAgICBzZXRUaW1lb3V0KCJy
dW5UZXN0KCkiLCAwKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nZ2luZyIpLmlubmVySFRNTCArPSBjdXJyZW50VGVzdFN0YWdl
ICsgIjogIiArIG1lc3NhZ2UgKyAiPGJyPiI7Cit9Cis8L3NjcmlwdD4KKworPGJvZHkgb25sb2Fk
PSJsb2FkZWQoKSIgb25wYWdlaGlkZT0iaGlkZGVuKCk7IiBvbnBhZ2VzaG93PSJzaG93bigpOyI+
CitUaGlzIHRlc3RzIHRoYXQgcGFnZXMgd2l0aCBwbHVnaW5zIGJlaGF2ZSBwcm9wZXJseSB3aXRo
IHRoZSBwYWdlIGNhY2hlLiAgVGhpcyBpbmNsdWRlczo8YnI+CistVGhlIHBsdWdpbiBiZWluZyBk
ZXN0cm95ZWQgdXBvbiBuYXZpZ2F0aW9uIGF3YXkgZnJvbSB0aGUgcGFnZS48YnI+CistVGhlIHBs
dWdpbiBiZWluZyByZWNyZWF0ZWQgdXBvbiByZXN0b3JpbmcgdGhlIHBhZ2UgZnJvbSB0aGUgcGFn
ZSBjYWNoZS48YnI+CistUGx1Z2luIHNjcmlwdCBvYmplY3RzIGFjY2Vzc2VkIHRoZSBmaXJzdCB0
aW1lIHRoZSBwbHVnaW4gd2FzIGNyZWF0ZWQgYXJlIGFwcHJvcHJpYXRlbHkgaW52YWxpZGF0ZWQg
YWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSB0aGUgcGFnZSBjYWNoZS48YnI+
PGJyPgorVW5mb3J0dW5hdGVseSB0aGVyZSBpcyBubyByZWxpYWJsZSB3YXkgdG8gZ2V0IGFmZmly
bWF0aXZlIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSBwbHVnaW4gd2FzIGRlc3Ryb3llZCB1cG9uIG5h
dmlnYXRpb24gYXdheSBmcm9tIHRoZSBwYWdlLiAgRm9yIG5vdyB3ZSdsbCBhc3N1bWUgcmVjcmVh
dGlvbiBtZWFucyBpdCBoYWQgc3VjY2Vzc2Z1bGx5IGJlZW4gZGVzdHJveWVkLjxicj4KKzxlbWJl
ZCBpZD0idGVzdFBsdWdpbiIgdHlwZT0iYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2Fw
ZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIG9uTmV3PSJwbHVnaW5DcmVhdGVkKCkiPjwvZW1i
ZWQ+PGJyPgorPGRpdiBpZD0ibG9nZ2luZyI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Jlc291cmNlcy9nby1iYWNrLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvZ28tYmFjay5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy9yZXNvdXJjZXMvZ28tYmFjay5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE0IEBACis8c2NyaXB0PgorZnVuY3Rpb24gbG9hZGVkKCkKK3sKKyAg
ICBzZXRUaW1lb3V0KCJoaXN0b3J5LmdvKC0xKSIsIDApOworfQorPC9zY3JpcHQ+Cis8Ym9keSBv
bmxvYWQ9ImxvYWRlZCgpOyI+VGhpcyBwYWdlIHNob3VsZCBnbyBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwYWdlLjwvYm9keT4KKzxzY3JpcHQ+CitpZiAoaGlzdG9yeS5sZW5ndGggPT0gMCkgeworICAg
IGRvY3VtZW50LmlubmVySFRNTCArPSAiPGJyPiBCdXQgaXQgd29uJ3Qgd29yayBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGJhY2sgaGlzdG9yeSEiOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwv
c2NyaXB0Pgo=
</data>
<flag name="review"
          id="118663"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="118664"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>