<?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>96507</bug_id>
          
          <creation_ts>2012-09-12 06:44:33 -0700</creation_ts>
          <short_desc>[Chromium] Move getPluginsList out of PlatformSupport</short_desc>
          <delta_ts>2012-12-10 10:23:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>718303</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-12 06:44:33 -0700</bug_when>
    <thetext>[Chromium] Move getPluginsList out of PlatformSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718304</commentid>
    <comment_count>1</comment_count>
      <attachid>163616</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-12 06:45:00 -0700</bug_when>
    <thetext>Created attachment 163616
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718476</commentid>
    <comment_count>2</comment_count>
      <attachid>163616</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 09:55:56 -0700</bug_when>
    <thetext>Comment on attachment 163616
WIP patch

The extra whitespace changes make the diff harder to read.  Typically we don&apos;t remove trailing whitespace unless we&apos;re editing a line nearby.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718522</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-12 11:08:39 -0700</bug_when>
    <thetext>No idea how that happened. My editor doesn&apos;t usually do this. Re-diffing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718565</commentid>
    <comment_count>4</comment_count>
      <attachid>163668</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-09-12 11:59:41 -0700</bug_when>
    <thetext>Created attachment 163668
WIP Patch #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718567</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 12:03:13 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718574</commentid>
    <comment_count>6</comment_count>
      <attachid>163668</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 12:10:40 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13832471</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718589</commentid>
    <comment_count>7</comment_count>
      <attachid>163668</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-12 12:20:31 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13828607</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718598</commentid>
    <comment_count>8</comment_count>
      <attachid>163668</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-12 12:24:07 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13820923</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718613</commentid>
    <comment_count>9</comment_count>
      <attachid>163668</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-12 12:34:29 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13841069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718617</commentid>
    <comment_count>10</comment_count>
      <attachid>163668</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-12 12:41:31 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13841068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718625</commentid>
    <comment_count>11</comment_count>
      <attachid>163668</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-12 12:51:21 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13824808</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718819</commentid>
    <comment_count>12</comment_count>
      <attachid>163668</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-12 15:40:08 -0700</bug_when>
    <thetext>Comment on attachment 163668
WIP Patch #2

Attachment 163668 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13839258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785572</commentid>
    <comment_count>13</comment_count>
      <attachid>178144</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-06 20:20:11 -0800</bug_when>
    <thetext>Created attachment 178144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785573</commentid>
    <comment_count>14</comment_count>
      <attachid>178144</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-06 20:21:02 -0800</bug_when>
    <thetext>Comment on attachment 178144
Patch

Latest patch implements idea from fishd. Notes from conversation:

Goals:
1. remove plugins() interface from PlatformSupport.h
2. remove plugins() implementation from PlatformSupport.cpp
3. move getPluginListBuilder() interface from WebKitPlatformSupport.h
to Platform.h

Steps:
1. PlatformSupport::plugins() is called from one place,
WebCore/plugins/chromium/PluginDataChromium.cpp. Modify
PluginDataChromium.cpp to inline the code that is currently in
PlatformSupport.cpp.
2. #1 won&apos;t compile, because the code relies on
WebKit::WebPluginListBuilderImpl, which we don&apos;t have access to from
PluginDataChromium. Solution: move WebPluginListBuilderImpl.cpp/.h
into WebCore/plugins/chromium/ .
3. #2 won&apos;t compile because WebPluginListBuilderImpl is a subclass of
WebPluginListBuilder, which lives in WebKit/chromium/public/.
Solution: move WebPluginListBuilder.h to Platform/chromium/public/
(should be safe, no non-Platform dependencies).
4. Remove plugins() interface from PlatformSupport.h
5. Remove plugins() implementation from PlatformSupport.cpp
6. Move getPluginListBuilder interface to Platform.h
7. Profit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786097</commentid>
    <comment_count>15</comment_count>
      <attachid>178144</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-12-07 13:27:52 -0800</bug_when>
    <thetext>Comment on attachment 178144
Patch

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

&gt; Source/WebCore/plugins/chromium/WebPluginListBuilderImpl.h:42
&gt; +    WebPluginListBuilderImpl(Vector&lt;WebCore::PluginInfo&gt;* results) : m_results(results) { }

nit: since the job of this class is to produce a list of PluginInfo objects, you
can use a name for the class like PluginListBuilder, which is nice b/c it is
shorter.  You could also use a name like PluginInfoListBuilder, but it seems OK
to leave out the &quot;Info&quot; term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786117</commentid>
    <comment_count>16</comment_count>
      <attachid>178267</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-07 13:57:07 -0800</bug_when>
    <thetext>Created attachment 178267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786118</commentid>
    <comment_count>17</comment_count>
      <attachid>178267</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-07 13:57:33 -0800</bug_when>
    <thetext>Comment on attachment 178267
Patch

Interface renamed to PluginListBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786126</commentid>
    <comment_count>18</comment_count>
      <attachid>178267</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-12-07 14:02:09 -0800</bug_when>
    <thetext>Comment on attachment 178267
Patch

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

&gt; Source/WebCore/plugins/chromium/PluginListBuilder.h:38
&gt; +namespace WebKit {

nit: should be in the WebCore namespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786129</commentid>
    <comment_count>19</comment_count>
      <attachid>178271</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-07 14:06:46 -0800</bug_when>
    <thetext>Created attachment 178271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786130</commentid>
    <comment_count>20</comment_count>
      <attachid>178271</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-12-07 14:07:09 -0800</bug_when>
    <thetext>Comment on attachment 178271
Patch

moved PluginListBuilder to WebCore namespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787488</commentid>
    <comment_count>21</comment_count>
      <attachid>178271</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 10:23:29 -0800</bug_when>
    <thetext>Comment on attachment 178271
Patch

Clearing flags on attachment: 178271

Committed r137177: &lt;http://trac.webkit.org/changeset/137177&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>787489</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-10 10:23:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163616</attachid>
            <date>2012-09-12 06:45:00 -0700</date>
            <delta_ts>2012-09-12 11:59:38 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-96507-20120912094348.patch</filename>
            <type>text/plain</type>
            <size>29001</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4MzAyKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTEyICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9m
IHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1m
dW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3Jt
Lmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBsdWdpbkxpc3RCdWlsZGVy
KToKKwogMjAxMi0wOS0xMSAgWmFjaCBLdXpuaWEgIDx6b3JrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBGaXggRmlsdGVyVHlwZVpvb20gdG8gcHJvcGVybHkgY2FsbCBjYW52YXMtPnJlc3RvcmUo
KQpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEyODMwMCkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xp
ZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2lu
TGlzdEJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBvaW50Lmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0
QnVpbGRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlcl9oCisjZGVmaW5lIFdlYlBsdWdpbkxpc3RCdWlsZGVy
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gQW4gaW50
ZXJmYWNlIGZvciBidWlsZGluZyBhIGxpc3Qgb2Yga25vd24gcGx1Z2lucy4KK2NsYXNzIFdlYlBs
dWdpbkxpc3RCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKAor
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRp
b24sCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBhZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4oCisgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbikgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGFkZEZpbGVFeHRlbnNpb25Ub0xhc3RNZWRpYVR5cGUoCisgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgZmlsZUV4dGVuc2lvbikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4MzAyKQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTItMDkt
MTIgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJv
bWl1bV0gTW92ZSBnZXRQbHVnaW5zTGlzdCBvdXQgb2YgUGxhdGZvcm1TdXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3Jt
YXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBh
ZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgor
ICAgICAgICAoRW1wdHlDaHJvbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFt
ZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpnZXRQbHVnaW5MaXN0KToKKyAgICAg
ICAgKEVtcHR5SW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnQp
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXR3b3JrU3Rh
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6flBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Z29CYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmdvRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
Ojpnb0JhY2tPckZvcndhcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVmcmVzaFBsdWdp
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0U2hvdWxkU3VwcHJlc3NTY3JvbGxiYXJB
bmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRpZE1vdmVPbnNjcmVlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjp3aWxsTW92ZU9mZnNjcmVlbik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChQbGF0
Zm9ybVN1cHBvcnQpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5EYXRhOjpwbHVnaW5OYW1lRm9yTWltZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luRGF0YTo6cmVmcmVzaCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5E
YXRhOjppbml0UGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5EYXRhLmg6CisgICAg
ICAgIChQbHVnaW5EYXRhKToKKyAgICAgICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbHVnaW5EYXRhOjpyZWZyZXNoKToKKwogMjAxMi0wOS0xMiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEyODIyMS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlD
bGllbnRzLmgJKHJldmlzaW9uIDEyODMwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBuZWVkVG91Y2hFdmVudHMo
Ym9vbCkgeyB9CiAjZW5kaWYKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBudW1XaGVlbEV2ZW50
SGFuZGxlcnNDaGFuZ2VkKHVuc2lnbmVkKSBPVkVSUklERSB7IH0KLSAgICAKKwogICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oV2ViQ29yZTo6U2Nyb2xsRGlyZWN0
aW9uKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogfTsKIApAQCAtMzI2LDcgKzMyNiw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzYXZlUGxhdGZvcm1EYXRhVG9DYWNoZWRGcmFtZShD
YWNoZWRGcmFtZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRG
cm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWUqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIHsgfSAgICAKKyAgICB2aXJ0dWFsIHZvaWQgdHJh
bnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFNhdmVUb1BhZ2VDYWNoZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXN0b3JlRnJvbVBh
Z2VDYWNoZSgpIHsgfQpAQCAtMzU2LDYgKzM1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGdldFBsdWdpbkxpc3QoYm9vbCwgVmVjdG9yPFBsdWdpbkluZm8+JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdy
YXBwZXJXb3JsZCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFi
bGUoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNv
bnN0IHsgfQpAQCAtNTYyLDcgKzU2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5FbXB0eUlu
c3BlY3RvckNsaWVudCgpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpIHsgfQotICAgIAorCiAgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9w
ZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTI4MzAwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcsMTMg
KzcsMTMgQEAKICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCiAgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQotI2lmZGVmIF9fT0JKQ19fIAorI2lmZGVm
IF9fT0JKQ19fCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIHR5cGVkZWYgaWQg
UmVtb3RlQVhPYmplY3RSZWY7CiAjZWxzZQpAQCAtODksNiArODksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUGFnZTsKICAgICBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiAgICAg
Y2xhc3MgUGx1Z2luVmlldzsKKyAgICBjbGFzcyBQbHVnaW5JbmZvOwogICAgIGNsYXNzIFBvbGlj
eUNoZWNrZXI7CiAgICAgY2xhc3MgUmVzb3VyY2VFcnJvcjsKICAgICBjbGFzcyBSZXNvdXJjZUhh
bmRsZTsKQEAgLTEzMiw3ICsxMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
VXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRM
b2FkZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJikgPSAwOyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpID0gMDsKICNpZiBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUHJvdGVjdGlvblNwYWNlJikgPSAwOwogI2Vu
ZGlmCkBAIC0xODksNyArMTkwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9u
KCkgPSAwOwotICAgICAgICAKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9j
dW1lbnRSZWFkeShib29sKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHN0YXJ0RG93bmxv
YWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0g
U3RyaW5nKCkpID0gMDsKQEAgLTE5OSw3ICsyMDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqLCBjb25z
dCBjaGFyKiwgaW50KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqKSA9IDA7Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xv
YmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKSA9IDA7CiAKQEAgLTI0NSw3ICsyNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJp
bmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgS1VSTCYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFN0
cmluZyB1c2VyQWdlbnQoY29uc3QgS1VSTCYpID0gMDsKLSAgICAgICAgCisKICAgICAgICAgdmly
dHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lKikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRvQ29tbWl0dGVkRnJvbUNhY2hlZEZy
YW1lKENhY2hlZEZyYW1lKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNpdGlvblRv
Q29tbWl0dGVkRm9yTmV3UGFnZSgpID0gMDsKQEAgLTI2MSw2ICsyNjIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUo
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVu
dCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29sIGFsbG93c1Njcm9s
bGluZywgaW50IG1hcmdpbldpZHRoLCBpbnQgbWFyZ2luSGVpZ2h0KSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxXaWRnZXQ+IGNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiwgSFRN
TFBsdWdJbkVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFN0cmluZyYsIGJvb2wgbG9hZE1hbnVhbGx5KSA9IDA7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXaWRnZXQqIHBsdWdp
bldpZGdldCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luTGlzdChib29sLCBW
ZWN0b3I8UGx1Z2luSW5mbz4mKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdp
ZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBJbnRTaXplJiwgSFRNTEFwcGxldEVs
ZW1lbnQqLCBjb25zdCBLVVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1O
YW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSA9IDA7CiAKQEAgLTI4NSw3
ICsyODcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKGJvb2wgbGlzdGVuID0gdHJ1ZSkgPSAw
OwotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgLy8gQWxsb3cgYW4gYWNj
ZXNzaWJpbGl0eSBvYmplY3QgdG8gcmV0cmlldmUgYSBGcmFtZSBwYXJlbnQgaWYgdGhlcmUncyBu
byBQbGF0Zm9ybVdpZGdldC4KICAgICAgICAgdmlydHVhbCBSZW1vdGVBWE9iamVjdFJlZiBhY2Nl
c3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZp
c2lvbiAxMjgzMDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04OCw3ICs4OCw3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNv
dW50ZWQKIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5nZWQoKQogewogICAgIFZlY3RvcjxS
ZWZQdHI8RnJhbWU+ID4gZnJhbWVzOwotICAgIAorCiAgICAgLy8gR2V0IGFsbCB0aGUgZnJhbWVz
IG9mIGFsbCB0aGUgcGFnZXMgaW4gYWxsIHRoZSBwYWdlIGdyb3VwcwogICAgIEhhc2hTZXQ8UGFn
ZSo+OjppdGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PFBh
Z2UqPjo6aXRlcmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CkBAIC0xNzIsNyArMTcyLDcgQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMp
CiAKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hTZXQ8
UGFnZSo+OwotICAgICAgICAKKwogICAgICAgICBuZXR3b3JrU3RhdGVOb3RpZmllcigpLnNldE5l
dHdvcmtTdGF0ZUNoYW5nZWRGdW5jdGlvbihuZXR3b3JrU3RhdGVDaGFuZ2VkKTsKICAgICB9CiAK
QEAgLTE4OSw3ICsxODksNyBAQCBQYWdlOjp+UGFnZSgpCiAgICAgbV9tYWluRnJhbWUtPnNldFZp
ZXcoMCk7CiAgICAgc2V0R3JvdXBOYW1lKFN0cmluZygpKTsKICAgICBhbGxQYWdlcy0+cmVtb3Zl
KHRoaXMpOwotICAgIAorCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgZnJh
bWUtPndpbGxEZXRhY2hQYWdlKCk7CiAgICAgICAgIGZyYW1lLT5kZXRhY2hGcm9tUGFnZSgpOwpA
QCAtMzA0LDcgKzMwNCw3IEBAIEJhY2tGb3J3YXJkTGlzdCogUGFnZTo6YmFja0ZvcndhcmRMaXN0
KCkKIGJvb2wgUGFnZTo6Z29CYWNrKCkKIHsKICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IGJhY2tG
b3J3YXJkKCktPmJhY2tJdGVtKCk7Ci0gICAgCisKICAgICBpZiAoaXRlbSkgewogICAgICAgICBn
b1RvSXRlbShpdGVtLCBGcmFtZUxvYWRUeXBlQmFjayk7CiAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgUGFnZTo6Z29CYWNrKCkKIGJvb2wgUGFnZTo6Z29Gb3J3
YXJkKCkKIHsKICAgICBIaXN0b3J5SXRlbSogaXRlbSA9IGJhY2tGb3J3YXJkKCktPmZvcndhcmRJ
dGVtKCk7Ci0gICAgCisKICAgICBpZiAoaXRlbSkgewogICAgICAgICBnb1RvSXRlbShpdGVtLCBG
cmFtZUxvYWRUeXBlRm9yd2FyZCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzQyLDcgKzM0
Miw3IEBAIHZvaWQgUGFnZTo6Z29CYWNrT3JGb3J3YXJkKGludCBkaXN0YW5jZSkKICAgICBIaXN0
b3J5SXRlbSogaXRlbSA9IGJhY2tGb3J3YXJkKCktPml0ZW1BdEluZGV4KGRpc3RhbmNlKTsKICAg
ICBpZiAoIWl0ZW0pIHsKICAgICAgICAgaWYgKGRpc3RhbmNlID4gMCkgewotICAgICAgICAgICAg
aWYgKGludCBmb3J3YXJkQ291bnQgPSBiYWNrRm9yd2FyZCgpLT5mb3J3YXJkQ291bnQoKSkgCisg
ICAgICAgICAgICBpZiAoaW50IGZvcndhcmRDb3VudCA9IGJhY2tGb3J3YXJkKCktPmZvcndhcmRD
b3VudCgpKQogICAgICAgICAgICAgICAgIGl0ZW0gPSBiYWNrRm9yd2FyZCgpLT5pdGVtQXRJbmRl
eChmb3J3YXJkQ291bnQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGludCBi
YWNrQ291bnQgPSBiYWNrRm9yd2FyZCgpLT5iYWNrQ291bnQoKSkKQEAgLTQyNiwyMSArNDI2LDIy
IEBAIHZvaWQgUGFnZTo6cmVmcmVzaFBsdWdpbnMoYm9vbCByZWxvYWQpCiAgICAgaWYgKCFhbGxQ
YWdlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUGx1Z2luRGF0YTo6cmVmcmVzaCgpOworICAg
IEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7CisgICAgUGFn
ZSogcmFuZG9tUGFnZSA9ICplbmQ7CisgICAgUGx1Z2luRGF0YTo6cmVmcmVzaChyYW5kb21QYWdl
KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+ID4gZnJhbWVzTmVlZGluZ1JlbG9hZDsKIAot
ICAgIEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBlbmQgPSBhbGxQYWdlcy0+ZW5kKCk7CiAgICAg
Zm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgaXQgPSBhbGxQYWdlcy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFBhZ2UqIHBhZ2UgPSAqaXQ7Ci0gICAgICAgIAorCiAg
ICAgICAgIC8vIENsZWFyIG91dCB0aGUgcGFnZSdzIHBsdWctaW4gZGF0YS4KICAgICAgICAgaWYg
KHBhZ2UtPm1fcGx1Z2luRGF0YSkKICAgICAgICAgICAgIHBhZ2UtPm1fcGx1Z2luRGF0YSA9IDA7
CiAKICAgICAgICAgaWYgKCFyZWxvYWQpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
CisKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAoKml0KS0+bWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgICAgICBp
ZiAoZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRlcigpLT5jb250YWluc1BsdWdpbnMoKSkK
ICAgICAgICAgICAgICAgICBmcmFtZXNOZWVkaW5nUmVsb2FkLmFwcGVuZChmcmFtZSk7CkBAIC03
MTMsNyArNzE0LDcgQEAgdm9pZCBQYWdlOjpzZXRTaG91bGRTdXBwcmVzc1Njcm9sbGJhckFuaQog
ICAgICAgICByZXR1cm47CiAKICAgICB2aWV3LT5maW5pc2hDdXJyZW50U2Nyb2xsQW5pbWF0aW9u
cygpOwotICAgIAorCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRnJhbWVW
aWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAoIWZyYW1lVmlldykK
QEAgLTc2Niw3ICs3NjcsNyBAQCB2b2lkIFBhZ2U6OmRpZE1vdmVPbnNjcmVlbigpCiAgICAgICAg
IGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpCiAgICAgICAgICAgICBm
cmFtZVZpZXctPmRpZE1vdmVPbnNjcmVlbigpOwogICAgIH0KLSAgICAKKwogICAgIHJlc3VtZVNj
cmlwdGVkQW5pbWF0aW9ucygpOwogfQogCkBAIC03NzgsMTQgKzc3OSwxNCBAQCB2b2lkIFBhZ2U6
OndpbGxNb3ZlT2Zmc2NyZWVuKCkKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
ZnJhbWUtPnZpZXcoKSkKICAgICAgICAgICAgIGZyYW1lVmlldy0+d2lsbE1vdmVPZmZzY3JlZW4o
KTsKICAgICB9Ci0gICAgCisKICAgICBzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7CiB9CiAK
IHZvaWQgUGFnZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRCkKIHsKICAgICBtX2Rpc3BsYXlJRCA9IGRpc3BsYXlJRDsKLSAgICAKKwogICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlE
KTsKQEAgLTgxNSw3ICs4MTYsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25D
aGFuZ2VkCiAgICAgLy8gRklYTUU6IEV2ZW50dWFsbHkgd2Ugd2lsbCBtb3ZlIHRvIGEgbW9kZWwg
b2YganVzdCBiZWluZyBoYW5kZWQgdGhlIHNoZWV0CiAgICAgLy8gdGV4dCBpbnN0ZWFkIG9mIGxv
YWRpbmcgdGhlIFVSTCBvdXJzZWx2ZXMuCiAgICAgS1VSTCB1cmwgPSBtX3NldHRpbmdzLT51c2Vy
U3R5bGVTaGVldExvY2F0aW9uKCk7Ci0gICAgCisKICAgICAvLyBBbGxvdyBhbnkgbG9jYWwgZmls
ZSBVUkwgc2NoZW1lIHRvIGJlIGxvYWRlZC4KICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSkpCiAgICAgICAgIG1fdXNlclN0
eWxlU2hlZXRQYXRoID0gdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CkBAIC04MjcsNyArODI4LDcgQEAg
dm9pZCBQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9uQ2hhbmdlZAogICAgIG1fdXNlclN0eWxl
U2hlZXRNb2RpZmljYXRpb25UaW1lID0gMDsKIAogICAgIC8vIERhdGEgVVJMcyB3aXRoIGJhc2U2
NC1lbmNvZGVkIFVURi04IHN0eWxlIHNoZWV0cyBhcmUgY29tbW9uLiBXZSBjYW4gcHJvY2VzcyB0
aGVtCi0gICAgLy8gc3luY2hyb25vdXNseSBhbmQgYXZvaWQgdXNpbmcgYSBsb2FkZXIuIAorICAg
IC8vIHN5bmNocm9ub3VzbHkgYW5kIGF2b2lkIHVzaW5nIGEgbG9hZGVyLgogICAgIGlmICh1cmwu
cHJvdG9jb2xJc0RhdGEoKSAmJiB1cmwuc3RyaW5nKCkuc3RhcnRzV2l0aCgiZGF0YTp0ZXh0L2Nz
cztjaGFyc2V0PXV0Zi04O2Jhc2U2NCwiKSkgewogICAgICAgICBtX2RpZExvYWRVc2VyU3R5bGVT
aGVldCA9IHRydWU7CiAKQEAgLTEwOTgsNyArMTA5OSw3IEBAIFBhZ2VWaXNpYmlsaXR5U3RhdGUg
UGFnZTo6dmlzaWJpbGl0eVN0YXQKIC8vIEZJWE1FOiBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJl
c2hvbGQgaXMgbm8gbG9uZ2VyIHVzZWQgZm9yIGNhbGN1bGF0aW5nIHJlbGV2YW50IHJlcGFpbnRl
ZCBhcmVhcywKIC8vIGFuZCBpdCBzaG91bGQgYmUgcmVtb3ZlZC4gRm9yIHRoZSB0aW1lIGJlaW5n
LCBpdCBpcyB1c2VmdWwgYmVjYXVzZSBpdCBhbGxvd3MgdXMgdG8gYXZvaWQgZG9pbmcKIC8vIGFu
eSBvZiB0aGlzIHdvcmsgZm9yIHBvcnRzIHRoYXQgZG9uJ3QgbWFrZSBzdXJlIG9mIGRpZE5ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC4gV2Ugc2hvdWxkCi0vLyByZW1vdmUgdGhpcyB3aGVu
IHdlIHJlc29sdmUgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPiBOZWVkIHRvIG1lcmdlIGRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCAKKy8vIHJlbW92ZSB0aGlzIHdoZW4gd2UgcmVzb2x2
ZSA8cmRhcjovL3Byb2JsZW0vMTA3OTE2ODA+IE5lZWQgdG8gbWVyZ2UgZGlkRmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0CiAvLyBhbmQgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
CiBzdGF0aWMgdWludDY0X3QgZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xkID0gMDsKIApA
QCAtMTE1OCw3ICsxMTU5LDcgQEAgdm9pZCBQYWdlOjphZGRSZWxldmFudFJlcGFpbnRlZE9iamVj
dChSZQogICAgIFJlbmRlclZpZXcqIHZpZXcgPSBvYmplY3QtPnZpZXcoKTsKICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGZsb2F0IHZpZXdBcmVhID0gdmlldy0+
dmlld1JlY3QoKS53aWR0aCgpICogdmlldy0+dmlld1JlY3QoKS5oZWlnaHQoKTsKICAgICBmbG9h
dCByYXRpb09mVmlld1RoYXRJc1BhaW50ZWQgPSBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbi50b3Rh
bEFyZWEoKSAvIHZpZXdBcmVhOwogICAgIGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzVW5wYWludGVk
ID0gbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKSAvIHZpZXdBcmVhOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBw
b3J0LmgJKHJldmlzaW9uIDEyODMwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw2IEBACiAj
aW5jbHVkZSAiRmlsZVN5c3RlbS5oIgogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAjaW5jbHVk
ZSAiTGlua0hhc2guaCIKLSNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMjEsNyArMTIwLDYgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGFsbG93U2NyaXB0RGVzcGl0ZVNldHRpbmdzKGNvbnN0
IEtVUkwmIGRvY3VtZW50VVJMKTsKIAogICAgIC8vIFBsdWdpbiAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgc3RhdGljIGJv
b2wgcGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQbHVnaW5JbmZvPiopOwogICAgIHN0YXRp
YyBOUE9iamVjdCogcGx1Z2luU2NyaXB0YWJsZU9iamVjdChXaWRnZXQqKTsKICAgICBzdGF0aWMg
Ym9vbCBwb3B1cHNBbGxvd2VkKE5QUCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVn
aW5EYXRhLmNwcAkocmV2aXNpb24gMTI4MzAwKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9Q
bHVnaW5EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBTdHJpbmcgUGx1
Z2luRGF0YTo6cGx1Z2luTmFtZUZvck1pbWVUeXBlCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fbWltZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgTWltZUNsYXNzSW5m
byYgaW5mbyA9IG1fbWltZXNbaV07Ci0gICAgCisKICAgICAgICAgaWYgKGluZm8udHlwZSA9PSBt
aW1lVHlwZSkKICAgICAgICAgICAgIHJldHVybiBtX3BsdWdpbnNbbV9taW1lUGx1Z2luSW5kaWNl
c1tpXV0ubmFtZTsKICAgICB9CkBAIC02NSw3ICs2NSw3IEBAIFN0cmluZyBQbHVnaW5EYXRhOjpw
bHVnaW5OYW1lRm9yTWltZVR5cGUKIH0KIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQot
dm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKK3ZvaWQgUGx1Z2luRGF0YTo6cmVmcmVzaChQYWdl
KikKIHsKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+cmVmcmVz
aFBsdWdpbnMoKTsKIH0KQEAgLTczLDcgKzczLDcgQEAgdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNo
KCkKIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdpbnMoY29uc3QgUGFnZSogcGFnZSkKIHsKICAg
ICBBU1NFUlQobV9wbHVnaW5zLmlzRW1wdHkoKSk7Ci0gICAgCisKICAgICBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGx1Z2luU3RyYXRlZ3koKS0+Z2V0UGx1Z2luSW5mbyhwYWdlLCBtX3BsdWdpbnMp
OwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEuaAkocmV2aXNp
b24gMTI4MzAwKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDExICs3NiwxMSBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gbV9wbHVnaW5zOyB9CiAgICAgY29u
c3QgVmVjdG9yPE1pbWVDbGFzc0luZm8+JiBtaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1fbWltZXM7
IH0KICAgICBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbWltZVBsdWdpbkluZGljZXMoKSBjb25zdCB7
IHJldHVybiBtX21pbWVQbHVnaW5JbmRpY2VzOyB9Ci0gICAgCisKICAgICBib29sIHN1cHBvcnRz
TWltZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdp
bk5hbWVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKIAotICAgIHN0
YXRpYyB2b2lkIHJlZnJlc2goKTsKKyAgICBzdGF0aWMgdm9pZCByZWZyZXNoKFBhZ2UqKTsKIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBQbHVnaW5EYXRhKGNvbnN0IFBhZ2UqKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJv
bWl1bS5jcHAJKHJldmlzaW9uIDEyODMwMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hy
b21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSwx
MCBAQAogLyoKICAqIENvcHlyaWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIAorICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQog
ICogbWV0OgotICogCisgKgogICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKQEAgLTE0
LDcgKzE0LDcgQEAKICAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKICAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCiAgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCisgKgogICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwogICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKICAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgpAQCAtMzEsNyArMzEsMTAgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhQ2hyb21pdW0uaCIKIAotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oPgorCit1c2luZyBXZWJLaXQ6
OldlYlBsdWdpbkxpc3RCdWlsZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDEw
ICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVmcmVzaCA9IHJlZnJlc2g7CiAgICAgfQog
Ci0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkKKyAgICBjb25zdCBWZWN0
b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMoUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIGlmICgh
bV9sb2FkZWQpIHsKLSAgICAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2lucyhtX3JlZnJl
c2gsICZtX3BsdWdpbnMpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJQbHVnaW5MaXN0QnVpbGRl
ciBidWlsZGVyKCZtX3BsdWdpbnMpOworICAgICAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5jbGllbnQoKS0+Z2V0UGx1Z2luTGlzdChyZWZyZXNoLCAmYnVpbGRlcik7CiAgICAg
ICAgICAgICBtX2xvYWRlZCA9IHRydWU7CiAgICAgICAgICAgICBtX3JlZnJlc2ggPSBmYWxzZTsK
ICAgICAgICAgfQpAQCAtNzYsMTAgKzgwLDEwIEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5pdFBsdWdp
bnMoY29uc3QgUGFnZSoKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5zW2ldKTsKIH0K
IAotdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKK3ZvaWQgUGx1Z2luRGF0YTo6cmVmcmVzaChQ
YWdlKiBwYWdlKQogewogICAgIHBsdWdpbkNhY2hlKCkucmVzZXQodHJ1ZSk7Ci0gICAgcGx1Z2lu
Q2FjaGUoKS5wbHVnaW5zKCk7IC8vIEZvcmNlIHRoZSBwbHVnaW5zIHRvIGJlIHJlbG9hZGVkIG5v
dy4KKyAgICBwbHVnaW5DYWNoZSgpLnBsdWdpbnMocGFnZSk7IC8vIEZvcmNlIHRoZSBwbHVnaW5z
IHRvIGJlIHJlbG9hZGVkIG5vdy4KIH0KIAogU3RyaW5nIGdldFBsdWdpbk1pbWVUeXBlRnJvbUV4
dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjgzMDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTEyICBNYXJrIFBp
bGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUg
Z2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRo
ZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5j
dGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJQ
bHVnaW5MaXN0QnVpbGRlci5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAg
ICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6Z2V0UGx1Z2luTGlzdCk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKEZyYW1lTG9hZGVy
Q2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmg6CisK
IDIwMTItMDktMTIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSSBtb3ZlIFN0cmluZyogaW5zdHJ1bWVudGF0aW9uIHRv
IHd0Zi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RC
dWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
UGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNpb24gMTI4MzAwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMjcgKzI4LDQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbHVnaW5M
aXN0QnVpbGRlcl9oCi0jZGVmaW5lIFdlYlBsdWdpbkxpc3RCdWlsZGVyX2gKLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLWNsYXNzIFdlYlN0cmluZzsKLQotLy8gQW4gaW50ZXJmYWNlIGZvciBidWls
ZGluZyBhIGxpc3Qgb2Yga25vd24gcGx1Z2lucy4KLWNsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVy
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKAotICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24sCi0gICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRNZWRp
YVR5cGVUb0xhc3RQbHVnaW4oCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3Qg
V2ViU3RyaW5nJiBkZXNjcmlwdGlvbikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEZpbGVF
eHRlbnNpb25Ub0xhc3RNZWRpYVR5cGUoCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZUV4
dGVuc2lvbikgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2lu
Y2x1ZGUgIi4uLy4uLy4uL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVp
bGRlci5oIgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEyODMw
MCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCwxMyArNjAsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBXZWJJREJGYWN0b3J5KiBpZGJGYWN0b3J5KCkgeyByZXR1cm4gMDsgfQogCiAK
LSAgICAvLyBQbHVnaW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIElmIHJlZnJlc2ggaXMgdHJ1ZSwgdGhlbiBj
YWNoZWQgaW5mb3JtYXRpb24gc2hvdWxkIG5vdCBiZSB1c2VkIHRvCi0gICAgLy8gc2F0aXNmeSB0
aGlzIGNhbGwuCi0gICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkxpc3QoYm9vbCByZWZyZXNoLCBX
ZWJQbHVnaW5MaXN0QnVpbGRlciopIHsgfQotCi0KICAgICAvLyBTaGFyZWQgV29ya2VycyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAg
IHZpcnR1YWwgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeSogc2hhcmVkV29ya2VyUmVwb3NpdG9y
eSgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTI4MzAwKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwNCw2ICsxNTA0LDExIEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudEltcGwKICAgICAgICAgImFwcGxpY2F0aW9uL3gtamF2YS1hcHBsZXQiLCBmYWxz
ZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpnZXRQbHVnaW5MaXN0KGJvb2wg
cmVmcmVzaCwgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKQoreworICAgIC8vIEZJWE1FLU1B
UAorfQorCiBPYmplY3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudEltcGw6Om9iamVjdENv
bnRlbnRUeXBlKAogICAgIGNvbnN0IEtVUkwmIHVybCwKICAgICBjb25zdCBTdHJpbmcmIGV4cGxp
Y2l0TWltZVR5cGUsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gMTI4MzAwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4MSw2ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiwKICAgICAgICAgY29uc3QgV1RGOjpTdHJp
bmcmLCBib29sIGxvYWRNYW51YWxseSk7CiAgICAgdmlydHVhbCB2b2lkIHJlZGlyZWN0RGF0YVRv
UGx1Z2luKFdlYkNvcmU6OldpZGdldCogcGx1Z2luV2lkZ2V0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0UGx1Z2luTGlzdChib29sLCBWZWN0b3I8UGx1Z2luSW5mbz4mKTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KAogICAgICAg
ICBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwKICAgICAgICAgV2ViQ29yZTo6SFRNTEFwcGxldEVs
ZW1lbnQqLApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1
cHBvcnQuY3BwCShyZXZpc2lvbiAxMjgzMDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYsMTMgKzI2Niw2IEBA
IFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IFAKIAogLy8gUGx1Z2luIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1ib29sIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2lucyhib29sIHJlZnJlc2gs
IFZlY3RvcjxQbHVnaW5JbmZvPiogcmVzdWx0cykKLXsKLSAgICBXZWJQbHVnaW5MaXN0QnVpbGRl
ckltcGwgYnVpbGRlcihyZXN1bHRzKTsKLSAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Z2V0
UGx1Z2luTGlzdChyZWZyZXNoLCAmYnVpbGRlcik7Ci0gICAgcmV0dXJuIHRydWU7ICAvLyBGSVhN
RTogVGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gYSB2YWx1ZS4K
LX0KLQogTlBPYmplY3QqIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2luU2NyaXB0YWJsZU9iamVjdChX
aWRnZXQqIHdpZGdldCkKIHsKICAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5pc1BsdWdpbkNv
bnRhaW5lcigpKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luTGlz
dEJ1aWxkZXJJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgJKHJldmlzaW9uIDEyODMwMCkKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAorICoK
ICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163668</attachid>
            <date>2012-09-12 11:59:41 -0700</date>
            <delta_ts>2012-12-06 20:20:08 -0800</delta_ts>
            <desc>WIP Patch #2</desc>
            <filename>bug-96507-20120912145829.patch</filename>
            <type>text/plain</type>
            <size>15799</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4MzQ0KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTEyICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9m
IHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1m
dW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3Jt
Lmd5cGk6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBsdWdpbkxpc3RCdWlsZGVy
KToKKwogMjAxMi0wOS0xMSAgWmFjaCBLdXpuaWEgIDx6b3JrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBGaXggRmlsdGVyVHlwZVpvb20gdG8gcHJvcGVybHkgY2FsbCBjYW52YXMtPnJlc3RvcmUo
KQpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEyODMzOSkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xp
ZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbkhh
bmRsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9u
SGFuZGxlckNsaWVudC5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2lu
TGlzdEJ1aWxkZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBvaW50Lmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaCcsCiAgICAgICAg
ICAgICAnY2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCkluZGV4OiBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0
QnVpbGRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlcl9oCisjZGVmaW5lIFdlYlBsdWdpbkxpc3RCdWlsZGVy
X2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlN0cmluZzsKKworLy8gQW4gaW50
ZXJmYWNlIGZvciBidWlsZGluZyBhIGxpc3Qgb2Yga25vd24gcGx1Z2lucy4KK2NsYXNzIFdlYlBs
dWdpbkxpc3RCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKAor
ICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRp
b24sCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBhZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4oCisgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbikgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIGFkZEZpbGVFeHRlbnNpb25Ub0xhc3RNZWRpYVR5cGUoCisgICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgZmlsZUV4dGVuc2lvbikgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI4MzQ0KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDkt
MTIgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJv
bWl1bV0gTW92ZSBnZXRQbHVnaW5zTGlzdCBvdXQgb2YgUGxhdGZvcm1TdXBwb3J0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUwNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3Jt
YXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBh
ZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgor
ICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6Z2V0UGx1Z2luTGlzdCk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChGcmFtZUxv
YWRlckNsaWVudCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OnJlZnJlc2hQbHVnaW5zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpbkRhdGE6OnJlZnJl
c2gpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luRGF0YS5oOgorICAgICAgICAoUGx1Z2luRGF0
YSk6CisgICAgICAgICogcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGx1Z2luQ2FjaGU6OnBsdWdpbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luRGF0YTo6cmVmcmVzaCk6CisKIDIwMTItMDktMTIgIENocmlzdG9waGVyIENhbWVy
b24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBFdmljdCB0
ZXh0dXJlcyB0aHJvdWdoIHRoZSB0ZXh0dXJlIG1hbmFnZXIgaW5zdGVhZCBvZiB0aGUgcmVzb3Vy
Y2UgcHJvdmlkZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDEyODMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzU2LDYgKzM1Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmlu
ZyBvdmVycmlkZU1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFN0cmluZygpOyB9CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2lkZ2V0KikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGdldFBsdWdpbkxpc3QoYm9vbCwgVmVjdG9yPFBsdWdpbkluZm8+JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkb2N1bWVudEVsZW1lbnRBdmFpbGFibGUo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUZpcnN0TmF2aWdhdGlvbigpIGNvbnN0
IHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDEyODMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJGcmFtZUxv
YWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGEu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApA
QCAtMjYxLDYgKzI2Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIGJvb2wgYWxsb3dzU2Nyb2xsaW5nLCBpbnQgbWFyZ2luV2lkdGgsIGludCBt
YXJnaW5IZWlnaHQpID0gMDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdpZGdldD4gY3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmLCBIVE1MUGx1Z0luRWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBsb2FkTWFudWFsbHkpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdpZGdldCogcGx1Z2luV2lkZ2V0KSA9IDA7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBnZXRQbHVnaW5MaXN0KGJvb2wsIFZlY3RvcjxQbHVnaW5JbmZvPiYpID0gMDsKIAog
ICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0
KGNvbnN0IEludFNpemUmLCBIVE1MQXBwbGV0RWxlbWVudCosIGNvbnN0IEtVUkwmIGJhc2VVUkws
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
cGFyYW1WYWx1ZXMpID0gMDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAxMjgz
MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MjYsMTEgKzQyNiwxMiBAQCB2b2lkIFBhZ2U6OnJlZnJlc2hQbHVnaW5zKGJvb2wgcmVsb2FkKQog
ICAgIGlmICghYWxsUGFnZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIFBsdWdpbkRhdGE6OnJl
ZnJlc2goKTsKKyAgICBIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgZW5kID0gYWxsUGFnZXMtPmVu
ZCgpOworICAgIFBhZ2UqIHJhbmRvbVBhZ2UgPSAqZW5kOworICAgIFBsdWdpbkRhdGE6OnJlZnJl
c2gocmFuZG9tUGFnZSk7CiAKICAgICBWZWN0b3I8UmVmUHRyPEZyYW1lPiA+IGZyYW1lc05lZWRp
bmdSZWxvYWQ7CiAKLSAgICBIYXNoU2V0PFBhZ2UqPjo6aXRlcmF0b3IgZW5kID0gYWxsUGFnZXMt
PmVuZCgpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGl0ID0gYWxsUGFnZXMt
PmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBQYWdlKiBwYWdlID0gKml0Owog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1BsYXRmb3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMjgzMzkpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NyArMzgsNiBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJj
ZS5oIgogI2luY2x1ZGUgIkxpbmtIYXNoLmgiCi0jaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtMTE3
LDcgKzExNiw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBub3RpZnlKU091dE9mTWVtb3J5
KEZyYW1lKik7CiAKICAgICAvLyBQbHVnaW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIHN0YXRpYyBib29sIHBsdWdpbnMo
Ym9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qKTsKICAgICBzdGF0aWMgTlBPYmplY3Qq
IHBsdWdpblNjcmlwdGFibGVPYmplY3QoV2lkZ2V0Kik7CiAgICAgc3RhdGljIGJvb2wgcG9wdXBz
QWxsb3dlZChOUFApOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpbkRhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5jcHAJ
KHJldmlzaW9uIDEyODMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDcgKzY1LDcgQEAgU3RyaW5nIFBsdWdpbkRhdGE6OnBs
dWdpbk5hbWVGb3JNaW1lVHlwZQogfQogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCi12
b2lkIFBsdWdpbkRhdGE6OnJlZnJlc2goKQordm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKFBhZ2Uq
KQogewogICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wbHVnaW5TdHJhdGVneSgpLT5yZWZyZXNo
UGx1Z2lucygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5EYXRhLmgJKHJldmlz
aW9uIDEyODMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzTWlt
ZVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CiAgICAgU3RyaW5nIHBsdWdpbk5h
bWVGb3JNaW1lVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKIAotICAgIHN0YXRp
YyB2b2lkIHJlZnJlc2goKTsKKyAgICBzdGF0aWMgdm9pZCByZWZyZXNoKFBhZ2UqKTsKIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBQbHVnaW5EYXRhKGNvbnN0IFBhZ2UqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1
bS5jcHAJKHJldmlzaW9uIDEyODMzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21p
dW0vUGx1Z2luRGF0YUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsMTAg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhQ2hyb21pdW0uaCIK
IAotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oPgorCit1c2luZyBX
ZWJLaXQ6OldlYlBsdWdpbkxpc3RCdWlsZGVyOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ3LDEwICs1MCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVmcmVzaCA9IHJlZnJlc2g7CiAg
ICAgfQogCi0gICAgY29uc3QgVmVjdG9yPFBsdWdpbkluZm8+JiBwbHVnaW5zKCkKKyAgICBjb25z
dCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMoUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAg
IGlmICghbV9sb2FkZWQpIHsKLSAgICAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2lucyht
X3JlZnJlc2gsICZtX3BsdWdpbnMpOworICAgICAgICAgICAgV2ViS2l0OjpXZWJQbHVnaW5MaXN0
QnVpbGRlciBidWlsZGVyKCZtX3BsdWdpbnMpOworICAgICAgICAgICAgcGFnZS0+bWFpbkZyYW1l
KCktPmxvYWRlcigpLT5jbGllbnQoKS0+Z2V0UGx1Z2luTGlzdChyZWZyZXNoLCAmYnVpbGRlcik7
CiAgICAgICAgICAgICBtX2xvYWRlZCA9IHRydWU7CiAgICAgICAgICAgICBtX3JlZnJlc2ggPSBm
YWxzZTsKICAgICAgICAgfQpAQCAtNzYsMTAgKzgwLDEwIEBAIHZvaWQgUGx1Z2luRGF0YTo6aW5p
dFBsdWdpbnMoY29uc3QgUGFnZSoKICAgICAgICAgbV9wbHVnaW5zLmFwcGVuZChwbHVnaW5zW2ld
KTsKIH0KIAotdm9pZCBQbHVnaW5EYXRhOjpyZWZyZXNoKCkKK3ZvaWQgUGx1Z2luRGF0YTo6cmVm
cmVzaChQYWdlKiBwYWdlKQogewogICAgIHBsdWdpbkNhY2hlKCkucmVzZXQodHJ1ZSk7Ci0gICAg
cGx1Z2luQ2FjaGUoKS5wbHVnaW5zKCk7IC8vIEZvcmNlIHRoZSBwbHVnaW5zIHRvIGJlIHJlbG9h
ZGVkIG5vdy4KKyAgICBwbHVnaW5DYWNoZSgpLnBsdWdpbnMocGFnZSk7IC8vIEZvcmNlIHRoZSBw
bHVnaW5zIHRvIGJlIHJlbG9hZGVkIG5vdy4KIH0KIAogU3RyaW5nIGdldFBsdWdpbk1pbWVUeXBl
RnJvbUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGV4dGVuc2lvbikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjgzNDQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA5LTEyICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1d
IE1vdmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9u
IG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBl
ci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9PUFMhKS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdFBsYXRmb3JtU3VwcG9ydCk6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Z2V0UGx1Z2luTGlzdCk6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKyAgICAgICAgKEZyYW1l
TG9hZGVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wOS0xMiAgQ2hyaXN0b3BoZXIgQ2FtZXJvbiAgPGNj
YW1lcm9uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEV2aWN0IHRleHR1cmVz
IHRocm91Z2ggdGhlIHRleHR1cmUgbWFuYWdlciBpbnN0ZWFkIG9mIHRoZSByZXNvdXJjZSBwcm92
aWRlcgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1
aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQ
bHVnaW5MaXN0QnVpbGRlci5oCShyZXZpc2lvbiAxMjgzMzkpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
OCwyNyArMjgsNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlBsdWdpbkxp
c3RCdWlsZGVyX2gKLSNkZWZpbmUgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViU3RyaW5nOwotCi0vLyBBbiBpbnRlcmZhY2UgZm9yIGJ1aWxk
aW5nIGEgbGlzdCBvZiBrbm93biBwbHVnaW5zLgotY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXIg
ewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBhZGRQbHVnaW4oCi0gICAgICAgIGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwKLSAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZE1lZGlh
VHlwZVRvTGFzdFBsdWdpbigKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJTdHJpbmcmIGRlc2NyaXB0aW9uKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkRmlsZUV4
dGVuc2lvblRvTGFzdE1lZGlhVHlwZSgKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBmaWxlRXh0
ZW5zaW9uKSA9IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCisjaW5j
bHVkZSAiLi4vLi4vLi4vUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWls
ZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTI4MzM5
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDEzICs2MCw2IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZhY3RvcnkoKSB7IHJldHVybiAwOyB9CiAKIAot
ICAgIC8vIFBsdWdpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gSWYgcmVmcmVzaCBpcyB0cnVlLCB0aGVuIGNh
Y2hlZCBpbmZvcm1hdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgdG8KLSAgICAvLyBzYXRpc2Z5IHRo
aXMgY2FsbC4KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luTGlzdChib29sIHJlZnJlc2gsIFdl
YlBsdWdpbkxpc3RCdWlsZGVyKikgeyB9Ci0KLQogICAgIC8vIFNoYXJlZCBXb3JrZXJzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAg
dmlydHVhbCBXZWJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5KiBzaGFyZWRXb3JrZXJSZXBvc2l0b3J5
KCkgeyByZXR1cm4gMDsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjgzMzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTA0LDYgKzE1MDQsMTEgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbAogICAgICAgICAiYXBwbGljYXRpb24veC1qYXZhLWFwcGxldCIsIGZhbHNl
KTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmdldFBsdWdpbkxpc3QoYm9vbCBy
ZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMpCit7CisgICAgLy8gRklYTUUtTUFQ
Cit9CisKIE9iamVjdENvbnRlbnRUeXBlIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6b2JqZWN0Q29u
dGVudFR5cGUoCiAgICAgY29uc3QgS1VSTCYgdXJsLAogICAgIGNvbnN0IFN0cmluZyYgZXhwbGlj
aXRNaW1lVHlwZSwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMjgzMzkpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
MTgxLDYgKzE4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5n
PiYsIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mLAogICAgICAgICBjb25zdCBXVEY6OlN0cmlu
ZyYsIGJvb2wgbG9hZE1hbnVhbGx5KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVkaXJlY3REYXRhVG9Q
bHVnaW4oV2ViQ29yZTo6V2lkZ2V0KiBwbHVnaW5XaWRnZXQpOworICAgIHZpcnR1YWwgdm9pZCBn
ZXRQbHVnaW5MaXN0KGJvb2wsIFZlY3RvcjxQbHVnaW5JbmZvPiYpOwogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoCiAgICAgICAg
IGNvbnN0IFdlYkNvcmU6OkludFNpemUmLAogICAgICAgICBXZWJDb3JlOjpIVE1MQXBwbGV0RWxl
bWVudCosCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3Vw
cG9ydC5jcHAJKHJldmlzaW9uIDEyODMzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NiwxMyArMjY2LDYgQEAg
UGFzc1JlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gUAogCiAvLyBQbHVnaW4gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLWJvb2wgUGxhdGZvcm1TdXBwb3J0OjpwbHVnaW5zKGJvb2wgcmVmcmVzaCwg
VmVjdG9yPFBsdWdpbkluZm8+KiByZXN1bHRzKQotewotICAgIFdlYlBsdWdpbkxpc3RCdWlsZGVy
SW1wbCBidWlsZGVyKHJlc3VsdHMpOwotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5nZXRQ
bHVnaW5MaXN0KHJlZnJlc2gsICZidWlsZGVyKTsKLSAgICByZXR1cm4gdHJ1ZTsgIC8vIEZJWE1F
OiBUaGVyZSBpcyBubyBuZWVkIGZvciB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybiBhIHZhbHVlLgot
fQotCiBOUE9iamVjdCogUGxhdGZvcm1TdXBwb3J0OjpwbHVnaW5TY3JpcHRhYmxlT2JqZWN0KFdp
ZGdldCogd2lkZ2V0KQogewogICAgIGlmICghd2lkZ2V0IHx8ICF3aWRnZXQtPmlzUGx1Z2luQ29u
dGFpbmVyKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178144</attachid>
            <date>2012-12-06 20:20:11 -0800</date>
            <delta_ts>2012-12-07 13:57:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96507-20121206231658.patch</filename>
            <type>text/plain</type>
            <size>24339</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2OTE5KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTA2ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2Vy
aWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToK
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpnZXRQbHVn
aW5MaXN0KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luTGlzdEJ1aWxk
ZXIpOgorCiAyMDEyLTEyLTA2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW5hbWUgbm9uLXN0YW5kYXJkIGRpc2NhcmQvZW5zdXJl
RnJhbWVidWZmZXJDSFJPTUlVTSBleHRlbnNpb25zIHNvIHdlIGNhbiB1c2UgcmVhbCBHTF9FWFRf
ZGlzY2FyZF9mcmFtZWJ1ZmZlcgpJbmRleDogU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHJldmlzaW9uIDEz
NjkxOSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9QbGF0Zm9ybS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw2ICs5NSw3IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbENsaWVudC5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWlt
ZVJlZ2lzdHJ5LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJOb25Db3B5YWJs
ZS5oJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIu
aCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQcmVyZW5kZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vcHVibGljL1dlYlByZXJlbmRlcmluZ1N1cHBvcnQuaCcsCkluZGV4OiBTb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMzY5MTkpCisrKyBTb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDYgKzYwLDcgQEAgY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXI7CiBjbGFzcyBXZWJNZWRp
YVN0cmVhbUNlbnRlckNsaWVudDsKIGNsYXNzIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbDsKIGNsYXNz
IFdlYk1pbWVSZWdpc3RyeTsKK2NsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVyOwogY2xhc3MgV2Vi
UlRDUGVlckNvbm5lY3Rpb25IYW5kbGVyOwogY2xhc3MgV2ViUlRDUGVlckNvbm5lY3Rpb25IYW5k
bGVyQ2xpZW50OwogY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQ7CkBAIC0yMzcsNiArMjM4LDEzIEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2FjaGVNZXRhZGF0YShjb25zdCBXZWJVUkwmLCBk
b3VibGUgcmVzcG9uc2VUaW1lLCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YVNpemUpIHsg
fQogCiAKKyAgICAvLyBQbHVnaW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIElmIHJlZnJlc2ggaXMgdHJ1ZSwg
dGhlbiBjYWNoZWQgaW5mb3JtYXRpb24gc2hvdWxkIG5vdCBiZSB1c2VkIHRvCisgICAgLy8gc2F0
aXNmeSB0aGlzIGNhbGwuCisgICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkxpc3QoYm9vbCByZWZy
ZXNoLCBXZWJQbHVnaW5MaXN0QnVpbGRlciopIHsgfQorCisKICAgICAvLyBSZXNvdXJjZXMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogICAgIC8vIFJldHVybnMgYSBsb2NhbGl6ZWQgc3RyaW5nIHJlc291cmNlICh3aXRoIHN1YnN0
aXR1dGlvbiBwYXJhbWV0ZXJzKS4KSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlBsdWdpbkxpc3RCdWlsZGVyX2gK
KyNkZWZpbmUgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViU3RyaW5nOworCisvLyBBbiBpbnRlcmZhY2UgZm9yIGJ1aWxkaW5nIGEgbGlzdCBv
ZiBrbm93biBwbHVnaW5zLgorY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXIgeworcHVibGljOgor
ICAgIHZpcnR1YWwgdm9pZCBhZGRQbHVnaW4oCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBmaWxlTmFtZSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGFkZE1lZGlhVHlwZVRvTGFzdFBs
dWdpbigKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRl
c2NyaXB0aW9uKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRmlsZUV4dGVuc2lvblRvTGFz
dE1lZGlhVHlwZSgKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMzY5MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMi0wNiAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBNb3ZlIGdldFBsdWdpbnNMaXN0IG91
dCBvZiBQbGF0Zm9ybVN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk2NTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1
ZyA4Mjk0OC4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6Cisg
ICAgICAgICogcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGx1Z2luQ2FjaGU6OnBsdWdpbnMpOgorICAgICAgICAqIHBsdWdpbnMvY2hy
b21pdW0vV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OmFkZFBsdWdp
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkTWVkaWFU
eXBlVG9MYXN0UGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luTGlzdEJ1aWxkZXJJ
bXBsOjphZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKToKKyAgICAgICAgKiBwbHVnaW5z
L2Nocm9taXVtL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQbHVnaW5MaXN0QnVpbGRlckltcGw6OldlYlBsdWdpbkxpc3RCdWlsZGVySW1wbCk6
CisKIDIwMTItMTItMDYgIFJpY2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENTUyBjdXJzb3IgcHJvcGVydHkgc2hvdWxkIHN1cHBvcnQgd2Via2l0LWltYWdlLXNldApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM2OTE5KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yMjA1LDYgKzIyMDUsOCBAQAogICAgICAg
ICAgICAgJ3BsdWdpbnMvUGx1Z2luVmlld05vbmUuY3BwJywKICAgICAgICAgICAgICdwbHVnaW5z
L2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMv
Y2hyb21pdW0vUGx1Z2luRGF0YUNocm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsdWdpbnMvY2hy
b21pdW0vV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAncGx1Z2lu
cy9jaHJvbWl1bS9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaCcsCiAgICAgICAgICAgICAncGx1
Z2lucy9ndGsvUGx1Z2luUGFja2FnZUd0ay5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMvZ3Rr
L1BsdWdpblZpZXdHdGsuY3BwJywKICAgICAgICAgICAgICdwbHVnaW5zL2d0ay9ndGsyeHRiaW4u
aCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0
Zm9ybVN1cHBvcnQuaAkocmV2aXNpb24gMTM2OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1TdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2
LDYgQEAgcHVibGljOgogICAgIC8vIEluZGV4ZWREQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IGlkYkZhY3RvcnkoKTsKIAotICAgIC8vIFBsdWdp
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gICAgc3RhdGljIGJvb2wgcGx1Z2lucyhib29sIHJlZnJlc2gsIFZlY3RvcjxQbHVn
aW5JbmZvPiopOwotCiAgICAgLy8gVGhlbWluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICNpZiBPUyhXSU5ET1dTKSAmJiAhRU5B
QkxFKERFRkFVTFRfUkVOREVSX1RIRU1FKQogICAgIHN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2lu
RGF0YUNocm9taXVtLmNwcAkocmV2aXNpb24gMTM2OTE5KQorKysgU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YUNo
cm9taXVtLmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJXZWJQ
bHVnaW5MaXN0QnVpbGRlckltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCw3ICs1MSw4IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8UGx1Z2luSW5mbz4mIHBsdWdpbnMoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2xv
YWRlZCkgewotICAgICAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpwbHVnaW5zKG1fcmVmcmVzaCwg
Jm1fcGx1Z2lucyk7CisgICAgICAgICAgICBXZWJLaXQ6OldlYlBsdWdpbkxpc3RCdWlsZGVySW1w
bCBidWlsZGVyKCZtX3BsdWdpbnMpOworICAgICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3Vy
cmVudCgpLT5nZXRQbHVnaW5MaXN0KG1fcmVmcmVzaCwgJmJ1aWxkZXIpOwogICAgICAgICAgICAg
bV9sb2FkZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9yZWZyZXNoID0gZmFsc2U7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vV2ViUGx1Z2luTGlzdEJ1
aWxkZXJJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9t
aXVtL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgiCisKKyNpbmNsdWRlICJQbHVnaW5EYXRhLmgi
CisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkUGx1Z2luKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFt
ZSkKK3sKKyAgICBQbHVnaW5JbmZvIGluZm87CisgICAgaW5mby5uYW1lID0gbmFtZTsKKyAgICBp
bmZvLmRlc2MgPSBkZXNjcmlwdGlvbjsKKyAgICBpbmZvLmZpbGUgPSBmaWxlTmFtZTsKKyAgICBt
X3Jlc3VsdHMtPmFwcGVuZChpbmZvKTsKK30KKwordm9pZCBXZWJQbHVnaW5MaXN0QnVpbGRlcklt
cGw6OmFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pCit7CisgICAgTWltZUNsYXNzSW5mbyBpbmZvOworICAg
IGluZm8udHlwZSA9IG5hbWU7CisgICAgaW5mby5kZXNjID0gZGVzY3JpcHRpb247CisgICAgbV9y
ZXN1bHRzLT5sYXN0KCkubWltZXMuYXBwZW5kKGluZm8pOworfQorCit2b2lkIFdlYlBsdWdpbkxp
c3RCdWlsZGVySW1wbDo6YWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlhVHlwZShjb25zdCBXZWJT
dHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBNaW1lQ2xhc3NJbmZvJiBpbmZvID0gbV9yZXN1bHRz
LT5sYXN0KCkubWltZXMubGFzdCgpOworICAgIGluZm8uZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5z
aW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL2Nocm9taXVtL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBs
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1dlYlBs
dWdpbkxpc3RCdWlsZGVySW1wbC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGxfaAorI2RlZmluZSBXZWJQbHVnaW5MaXN0QnVp
bGRlckltcGxfaAorCisjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJQbHVnaW5MaXN0QnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbCA6IHB1YmxpYyBX
ZWJQbHVnaW5MaXN0QnVpbGRlciB7CitwdWJsaWM6CisgICAgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJ
bXBsKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiogcmVzdWx0cykgOiBtX3Jlc3VsdHMocmVz
dWx0cykgeyB9CisKKyAgICAvLyBXZWJQbHVnaW5MaXN0QnVpbGRlciBtZXRob2RzOgorICAgIHZp
cnR1YWwgdm9pZCBhZGRQbHVnaW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIGRlc2NyaXB0aW9uLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2luKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGFkZEZpbGVFeHRl
bnNpb25Ub0xhc3RNZWRpYVR5cGUoY29uc3QgV2ViU3RyaW5nJiBleHRlbnNpb24pOworCitwcml2
YXRlOgorICAgIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiogbV9yZXN1bHRzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzNjkxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMTItMDYgIE1hcmsgUGls
Z3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gTW92ZSBn
ZXRQbHVnaW5zTGlzdCBvdXQgb2YgUGxhdGZvcm1TdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjUwNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhcnQgb2YgYSByZWZhY3RvcmluZyBzZXJpZXMu
IFNlZSB0cmFja2luZyBidWcgODI5NDguCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAg
ICAqIHB1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oOgorICAgICAgICAqIHB1YmxpYy9wbGF0
Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYktpdFBsYXRmb3JtU3VwcG9ydDo6aWRiRmFjdG9yeSk6CisgICAgICAgICog
c3JjL1BsYXRmb3JtU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBz
cmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMv
V2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmg6IFJlbW92ZWQuCisKIDIwMTItMTItMDYgIFJpY2sg
QnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENTUyBjdXJzb3IgcHJvcGVy
dHkgc2hvdWxkIHN1cHBvcnQgd2Via2l0LWltYWdlLXNldApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cAkocmV2aXNpb24gMTM2OTE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsOCArNjA0LDYgQEAKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQ
bHVnaW5Eb2N1bWVudC5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2luTGlzdEJ1
aWxkZXJJbXBsLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRl
ckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQbHVnaW5Mb2FkT2JzZXJ2ZXIuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlBsdWdpbkxvYWRPYnNlcnZlci5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYlBsdWdpblNjcm9sbGJhckltcGwuY3BwJywKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIu
aAkocmV2aXNpb24gMTM2OTE5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
UGx1Z2luTGlzdEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMjcgKzI4LDQgQEAKICAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlcl9oCi0jZGVm
aW5lIFdlYlBsdWdpbkxpc3RCdWlsZGVyX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYlN0cmluZzsKLQotLy8gQW4gaW50ZXJmYWNlIGZvciBidWlsZGluZyBhIGxpc3Qgb2Yga25v
d24gcGx1Z2lucy4KLWNsYXNzIFdlYlBsdWdpbkxpc3RCdWlsZGVyIHsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNv
bnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24sCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmls
ZU5hbWUpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBhZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4o
Ci0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlw
dGlvbikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFkZEZpbGVFeHRlbnNpb25Ub0xhc3RNZWRp
YVR5cGUoCi0gICAgICAgIGNvbnN0IFdlYlN0cmluZyYgZmlsZUV4dGVuc2lvbikgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgorI2luY2x1ZGUgIi4uLy4uLy4uL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oIgpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEzNjkxOSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NiwxMCArNDYsNyBAQCB0eXBlZGVmIHZvaWQgKkhBTkRMRTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OyAvLyBGSVhN
RTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KLWNsYXNzIFdlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0Q2xpZW50OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNs
YXNzIFdlYklEQkZhY3Rvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3Jt
PwotY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25n
IGluIHBsYXRmb3JtPwogY2xhc3MgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeTsgLy8gRklYTUU6
IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiAKIC8vIEZJWE1FOiBFdmVudHVhbGx5IGFs
bCB0aGVzZSBBUEkgd2lsbCBuZWVkIHRvIG1vdmUgdG8gV2ViS2l0OjpQbGF0Zm9ybS4KQEAgLTYw
LDEzICs1Nyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYklEQkZhY3RvcnkqIGlkYkZhY3Rv
cnkoKSB7IHJldHVybiAwOyB9CiAKIAotICAgIC8vIFBsdWdpbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gSWYg
cmVmcmVzaCBpcyB0cnVlLCB0aGVuIGNhY2hlZCBpbmZvcm1hdGlvbiBzaG91bGQgbm90IGJlIHVz
ZWQgdG8KLSAgICAvLyBzYXRpc2Z5IHRoaXMgY2FsbC4KLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1
Z2luTGlzdChib29sIHJlZnJlc2gsIFdlYlBsdWdpbkxpc3RCdWlsZGVyKikgeyB9Ci0KLQogICAg
IC8vIFNoYXJlZCBXb3JrZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiAgICAgdmlydHVhbCBXZWJTaGFyZWRXb3JrZXJSZXBvc2l0b3J5
KiBzaGFyZWRXb3JrZXJSZXBvc2l0b3J5KCkgeyByZXR1cm4gMDsgfQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxMzY5
MTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTMsMTUgKzExMyw2IEBAIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJh
Y2tlbmRJbnRlcmZhY2U+IFAKICAgICByZXR1cm4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3Jl
YXRlKCk7CiB9CiAKLS8vIFBsdWdpbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotYm9vbCBQbGF0Zm9ybVN1cHBv
cnQ6OnBsdWdpbnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qIHJlc3VsdHMpCi17
Ci0gICAgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsIGJ1aWxkZXIocmVzdWx0cyk7Ci0gICAgd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmdldFBsdWdpbkxpc3QocmVmcmVzaCwgJmJ1aWxkZXIpOwot
ICAgIHJldHVybiB0cnVlOyAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoaXMgZnVu
Y3Rpb24gdG8gcmV0dXJuIGEgdmFsdWUuCi19Ci0KIC8vIFRoZW1pbmcgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAog
I2lmIE9TKFdJTkRPV1MpICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWls
ZGVySW1wbC5jcHAJKHJldmlzaW9uIDEzNjkxOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoK
LSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICog
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbHVnaW5MaXN0QnVp
bGRlckltcGwuaCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlIDxwdWJsaWMv
V2ViU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxk
ZXJJbXBsOjphZGRQbHVnaW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcm
IGRlc2NyaXB0aW9uLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQotewotICAgIFBsdWdpbklu
Zm8gaW5mbzsKLSAgICBpbmZvLm5hbWUgPSBuYW1lOwotICAgIGluZm8uZGVzYyA9IGRlc2NyaXB0
aW9uOwotICAgIGluZm8uZmlsZSA9IGZpbGVOYW1lOwotICAgIG1fcmVzdWx0cy0+YXBwZW5kKGlu
Zm8pOwotfQotCi12b2lkIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkTWVkaWFUeXBlVG9M
YXN0UGx1Z2luKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlw
dGlvbikKLXsKLSAgICBNaW1lQ2xhc3NJbmZvIGluZm87Ci0gICAgaW5mby50eXBlID0gbmFtZTsK
LSAgICBpbmZvLmRlc2MgPSBkZXNjcmlwdGlvbjsKLSAgICBtX3Jlc3VsdHMtPmxhc3QoKS5taW1l
cy5hcHBlbmQoaW5mbyk7Ci19Ci0KLXZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRG
aWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0ZW5zaW9uKQot
ewotICAgIE1pbWVDbGFzc0luZm8mIGluZm8gPSBtX3Jlc3VsdHMtPmxhc3QoKS5taW1lcy5sYXN0
KCk7Ci0gICAgaW5mby5leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkxpc3RCdWlsZGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5oCShyZXZpc2lvbiAxMzY5MTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlcklt
cGxfaAotI2RlZmluZSBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGxfaAotCi0jaW5jbHVkZSAiV2Vi
UGx1Z2luTGlzdEJ1aWxkZXIuaCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQbHVnaW5M
aXN0QnVpbGRlckltcGwgOiBwdWJsaWMgV2ViUGx1Z2luTGlzdEJ1aWxkZXIgewotcHVibGljOgot
ICAgIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4q
IHJlc3VsdHMpIDogbV9yZXN1bHRzKHJlc3VsdHMpIHsgfQotCi0gICAgLy8gV2ViUGx1Z2luTGlz
dEJ1aWxkZXIgbWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKGNvbnN0IFdlYlN0
cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5n
JiBmaWxlTmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbihj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pOwotICAg
IHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0
cmluZyYgZXh0ZW5zaW9uKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2lu
SW5mbz4qIG1fcmVzdWx0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178267</attachid>
            <date>2012-12-07 13:57:07 -0800</date>
            <delta_ts>2012-12-07 14:06:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96507-20121207165353.patch</filename>
            <type>text/plain</type>
            <size>24381</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2OTgwKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTA3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2Vy
aWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToK
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpnZXRQbHVn
aW5MaXN0KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luTGlzdEJ1aWxk
ZXIpOgorCiAyMDEyLTEyLTA3ICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3
aXRjaCB0byBkZWZhdWx0CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQkocmV2aXNpb24gMTM2OTc5
KQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDYgKzk1LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRD
aGFubmVsQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVn
aXN0cnkuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUG9pbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oJywKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEzNjk3OSkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NiArNjAsNyBAQCBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNzIFdlYk1lZGlhU3Ry
ZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOwogY2xhc3MgV2Vi
TWltZVJlZ2lzdHJ5OworY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7CiBjbGFzcyBXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9ydDsKQEAgLTIzNyw2ICsyMzgsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWNoZU1ldGFkYXRhKGNvbnN0IFdlYlVSTCYsIGRvdWJs
ZSByZXNwb25zZVRpbWUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkgeyB9CiAK
IAorICAgIC8vIFBsdWdpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gSWYgcmVmcmVzaCBpcyB0cnVlLCB0aGVu
IGNhY2hlZCBpbmZvcm1hdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgdG8KKyAgICAvLyBzYXRpc2Z5
IHRoaXMgY2FsbC4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luTGlzdChib29sIHJlZnJlc2gs
IFdlYlBsdWdpbkxpc3RCdWlsZGVyKikgeyB9CisKKwogICAgIC8vIFJlc291cmNlcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAg
ICAgLy8gUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVzb3VyY2UgKHdpdGggc3Vic3RpdHV0
aW9uIHBhcmFtZXRlcnMpLgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJQbHVnaW5MaXN0QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAorI2Rl
ZmluZSBXZWJQbHVnaW5MaXN0QnVpbGRlcl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJTdHJpbmc7CisKKy8vIEFuIGludGVyZmFjZSBmb3IgYnVpbGRpbmcgYSBsaXN0IG9mIGtu
b3duIHBsdWdpbnMuCitjbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGFkZFBsdWdpbigKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZp
bGVOYW1lKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2lu
KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3Jp
cHRpb24pID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVk
aWFUeXBlKAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEzNjk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA3ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9m
IFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgy
OTQ4LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAg
ICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9jaHJvbWl1
bS9QbHVnaW5MaXN0QnVpbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luTGlzdEJ1aWxkZXI6OmFkZFBsdWdpbik6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpbkxpc3RCdWlsZGVyOjphZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5MaXN0QnVpbGRlcjo6YWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlh
VHlwZSk6CisgICAgICAgICogcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5MaXN0QnVpbGRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQbHVnaW5MaXN0QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpbkxpc3RCdWlsZGVyOjpQbHVnaW5MaXN0QnVpbGRlcik6CisK
IDIwMTItMTItMDcgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgbGludXggdGhlbWUgcmVsYXRlZCBmaWxlcyBhbmQgc3dpdGNoIHRv
IGRlZmF1bHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzNjk3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjIwOSw2ICsyMjA5LDgg
QEAKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcCcsCiAgICAgICAgICAg
ICAncGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAg
ICdwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdw
bHVnaW5zL2Nocm9taXVtL1BsdWdpbkxpc3RCdWlsZGVyLmNwcCcsCisgICAgICAgICAgICAncGx1
Z2lucy9jaHJvbWl1bS9QbHVnaW5MaXN0QnVpbGRlci5oJywKICAgICAgICAgICAgICdwbHVnaW5z
L2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcCcsCiAgICAgICAgICAgICAncGx1Z2lucy9ndGsvUGx1
Z2luVmlld0d0ay5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMvZ3RrL2d0azJ4dGJpbi5oJywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYsNiBA
QCBwdWJsaWM6CiAgICAgLy8gSW5kZXhlZERCIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZT4gaWRiRmFjdG9yeSgpOwogCi0gICAgLy8gUGx1Z2luIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLSAgICBzdGF0aWMgYm9vbCBwbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbklu
Zm8+Kik7Ci0KICAgICAvLyBUaGVtaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI2lmIE9TKFdJTkRPV1MpICYmICFFTkFCTEUo
REVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAgc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRh
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhQ2hyb21p
dW0uaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlBsdWdpbkxp
c3RCdWlsZGVyLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTAsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zKCkKICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZWQpIHsKLSAg
ICAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2lucyhtX3JlZnJlc2gsICZtX3BsdWdpbnMp
OworICAgICAgICAgICAgV2ViS2l0OjpQbHVnaW5MaXN0QnVpbGRlciBidWlsZGVyKCZtX3BsdWdp
bnMpOworICAgICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5nZXRQbHVnaW5M
aXN0KG1fcmVmcmVzaCwgJmJ1aWxkZXIpOwogICAgICAgICAgICAgbV9sb2FkZWQgPSB0cnVlOwog
ICAgICAgICAgICAgbV9yZWZyZXNoID0gZmFsc2U7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luTGlzdEJ1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luTGlzdEJ1aWxkZXIuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5M
aXN0QnVpbGRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiUGx1Z2luTGlzdEJ1aWxkZXIuaCIKKworI2luY2x1ZGUgIlBs
dWdpbkRhdGEuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK3ZvaWQgUGx1Z2luTGlzdEJ1aWxkZXI6OmFkZFBsdWdpbihjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IFdlYlN0cmluZyYgZmls
ZU5hbWUpCit7CisgICAgUGx1Z2luSW5mbyBpbmZvOworICAgIGluZm8ubmFtZSA9IG5hbWU7Cisg
ICAgaW5mby5kZXNjID0gZGVzY3JpcHRpb247CisgICAgaW5mby5maWxlID0gZmlsZU5hbWU7Cisg
ICAgbV9yZXN1bHRzLT5hcHBlbmQoaW5mbyk7Cit9CisKK3ZvaWQgUGx1Z2luTGlzdEJ1aWxkZXI6
OmFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdl
YlN0cmluZyYgZGVzY3JpcHRpb24pCit7CisgICAgTWltZUNsYXNzSW5mbyBpbmZvOworICAgIGlu
Zm8udHlwZSA9IG5hbWU7CisgICAgaW5mby5kZXNjID0gZGVzY3JpcHRpb247CisgICAgbV9yZXN1
bHRzLT5sYXN0KCkubWltZXMuYXBwZW5kKGluZm8pOworfQorCit2b2lkIFBsdWdpbkxpc3RCdWls
ZGVyOjphZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0
ZW5zaW9uKQoreworICAgIE1pbWVDbGFzc0luZm8mIGluZm8gPSBtX3Jlc3VsdHMtPmxhc3QoKS5t
aW1lcy5sYXN0KCk7CisgICAgaW5mby5leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hy
b21pdW0vUGx1Z2luTGlzdEJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL2Nocm9taXVtL1BsdWdpbkxpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkxpc3RCdWlsZGVyLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsdWdpbkxpc3RCdWlsZGVyX2gKKyNkZWZp
bmUgUGx1Z2luTGlzdEJ1aWxkZXJfaAorCisjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsdWdpbkxpc3RCdWlsZGVyIDogcHVi
bGljIFdlYlBsdWdpbkxpc3RCdWlsZGVyIHsKK3B1YmxpYzoKKyAgICBQbHVnaW5MaXN0QnVpbGRl
cihWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIHJlc3VsdHMpIDogbV9yZXN1bHRzKHJlc3Vs
dHMpIHsgfQorCisgICAgLy8gV2ViUGx1Z2luTGlzdEJ1aWxkZXIgbWV0aG9kczoKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkUGx1Z2luKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5n
JiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSk7CisgICAgdmlydHVhbCB2
b2lkIGFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0ZW5z
aW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0ZW5zaW9uKTsKKworcHJpdmF0
ZToKKyAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIG1fcmVzdWx0czsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMzY5ODApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTA3ICBNYXJrIFBpbGdy
aW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgZ2V0
UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBT
ZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmlkYkZhY3RvcnkpOgorICAgICAgICAqIHNy
Yy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1TdXBwb3J0
OjppZGJGYWN0b3J5KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmg6IFJl
bW92ZWQuCisKIDIwMTItMTItMDcgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbGludXggdGhlbWUgcmVsYXRlZCBmaWxlcyBhbmQg
c3dpdGNoIHRvIGRlZmF1bHQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlz
aW9uIDEzNjk3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2lu
ZyBjb3B5KQpAQCAtNjAyLDggKzYwMiw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQbHVnaW5Db250
YWluZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2luRG9jdW1lbnQuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAnLAot
ICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViUGx1Z2luTG9hZE9ic2VydmVyLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJQbHVnaW5Mb2FkT2JzZXJ2ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJQbHVnaW5TY3JvbGxiYXJJbXBsLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgJKHJldmlzaW9uIDEzNjk3
OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDI3ICsyOCw0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAotI2RlZmluZSBXZWJQbHVnaW5MaXN0
QnVpbGRlcl9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTdHJpbmc7Ci0KLS8v
IEFuIGludGVyZmFjZSBmb3IgYnVpbGRpbmcgYSBsaXN0IG9mIGtub3duIHBsdWdpbnMuCi1jbGFz
cyBXZWJQbHVnaW5MaXN0QnVpbGRlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGFkZFBs
dWdpbigKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRl
c2NyaXB0aW9uLAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2luKAotICAgICAgICBjb25zdCBX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKAotICAgICAgICBj
b25zdCBXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
MTAgKzQ2LDcgQEAgdHlwZWRlZiB2b2lkICpIQU5ETEU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxv
bmcgaW4gcGxhdGZvcm0/Ci1jbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsgLy8g
RklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJJREJGYWN0b3J5
OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KLWNsYXNzIFdlYlBsdWdp
bkxpc3RCdWlsZGVyOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KIGNs
YXNzIFdlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25n
IGluIHBsYXRmb3JtPwogCiAvLyBGSVhNRTogRXZlbnR1YWxseSBhbGwgdGhlc2UgQVBJIHdpbGwg
bmVlZCB0byBtb3ZlIHRvIFdlYktpdDo6UGxhdGZvcm0uCkBAIC02MCwxMyArNTcsNiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBXZWJJREJGYWN0b3J5KiBpZGJGYWN0b3J5KCkgeyByZXR1cm4gMDsg
fQogCiAKLSAgICAvLyBQbHVnaW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIElmIHJlZnJlc2ggaXMgdHJ1ZSwg
dGhlbiBjYWNoZWQgaW5mb3JtYXRpb24gc2hvdWxkIG5vdCBiZSB1c2VkIHRvCi0gICAgLy8gc2F0
aXNmeSB0aGlzIGNhbGwuCi0gICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkxpc3QoYm9vbCByZWZy
ZXNoLCBXZWJQbHVnaW5MaXN0QnVpbGRlciopIHsgfQotCi0KICAgICAvLyBTaGFyZWQgV29ya2Vy
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAogICAgIHZpcnR1YWwgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeSogc2hhcmVkV29ya2VyUmVw
b3NpdG9yeSgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTM2OTc5KQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYktp
dC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKLSNpbmNsdWRlICJXZWJQ
bHVnaW5MaXN0QnVpbGRlckltcGwuaCIKICNpbmNsdWRlICJXZWJTYW5kYm94U3VwcG9ydC5oIgog
I2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCkBA
IC0xMTIsMTUgKzExMSw2IEBAIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+
IFAKICAgICByZXR1cm4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3JlYXRlKCk7CiB9CiAKLS8v
IFBsdWdpbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBsdWdpbnMoYm9v
bCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qIHJlc3VsdHMpCi17Ci0gICAgV2ViUGx1Z2lu
TGlzdEJ1aWxkZXJJbXBsIGJ1aWxkZXIocmVzdWx0cyk7Ci0gICAgd2ViS2l0UGxhdGZvcm1TdXBw
b3J0KCktPmdldFBsdWdpbkxpc3QocmVmcmVzaCwgJmJ1aWxkZXIpOwotICAgIHJldHVybiB0cnVl
OyAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJu
IGEgdmFsdWUuCi19Ci0KIC8vIFRoZW1pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogI2lmIE9TKFdJTkRPV1Mp
ICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5jcHAJKHJl
dmlzaW9uIDEzNjk3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxp
c3RCdWlsZGVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaCIKLQot
I2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRQbHVn
aW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLCBj
b25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQotewotICAgIFBsdWdpbkluZm8gaW5mbzsKLSAgICBp
bmZvLm5hbWUgPSBuYW1lOwotICAgIGluZm8uZGVzYyA9IGRlc2NyaXB0aW9uOwotICAgIGluZm8u
ZmlsZSA9IGZpbGVOYW1lOwotICAgIG1fcmVzdWx0cy0+YXBwZW5kKGluZm8pOwotfQotCi12b2lk
IFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2luKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbikKLXsKLSAgICBN
aW1lQ2xhc3NJbmZvIGluZm87Ci0gICAgaW5mby50eXBlID0gbmFtZTsKLSAgICBpbmZvLmRlc2Mg
PSBkZXNjcmlwdGlvbjsKLSAgICBtX3Jlc3VsdHMtPmxhc3QoKS5taW1lcy5hcHBlbmQoaW5mbyk7
Ci19Ci0KLXZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRGaWxlRXh0ZW5zaW9uVG9M
YXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0ZW5zaW9uKQotewotICAgIE1pbWVDbGFz
c0luZm8mIGluZm8gPSBtX3Jlc3VsdHMtPmxhc3QoKS5taW1lcy5sYXN0KCk7Ci0gICAgaW5mby5l
eHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxp
c3RCdWlsZGVySW1wbC5oCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0g
KiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGxfaAotI2RlZmluZSBX
ZWJQbHVnaW5MaXN0QnVpbGRlckltcGxfaAotCi0jaW5jbHVkZSAiV2ViUGx1Z2luTGlzdEJ1aWxk
ZXIuaCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwg
OiBwdWJsaWMgV2ViUGx1Z2luTGlzdEJ1aWxkZXIgewotcHVibGljOgotICAgIFdlYlBsdWdpbkxp
c3RCdWlsZGVySW1wbChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIHJlc3VsdHMpIDogbV9y
ZXN1bHRzKHJlc3VsdHMpIHsgfQotCi0gICAgLy8gV2ViUGx1Z2luTGlzdEJ1aWxkZXIgbWV0aG9k
czoKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29u
c3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbihjb25zdCBXZWJTdHJpbmcm
IG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pOwotICAgIHZpcnR1YWwgdm9pZCBh
ZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0ZW5zaW9u
KTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIG1fcmVzdWx0
czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178271</attachid>
            <date>2012-12-07 14:06:46 -0800</date>
            <delta_ts>2012-12-10 10:23:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96507-20121207170332.patch</filename>
            <type>text/plain</type>
            <size>24444</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2OTgwKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTA3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2Vy
aWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogUGxhdGZvcm0uZ3lwaToK
KyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChQbGF0Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtOjpnZXRQbHVn
aW5MaXN0KToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIu
aDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGx1Z2luTGlzdEJ1aWxk
ZXIpOgorCiAyMDEyLTEyLTA3ICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMgYW5kIHN3
aXRjaCB0byBkZWZhdWx0CkluZGV4OiBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0vUGxhdGZvcm0uZ3lwaQkocmV2aXNpb24gMTM2OTc5
KQorKysgU291cmNlL1BsYXRmb3JtL1BsYXRmb3JtLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTk1
LDYgKzk1LDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViTWVzc2FnZVBvcnRD
aGFubmVsQ2xpZW50LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJNaW1lUmVn
aXN0cnkuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmgn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9wdWJsaWMvV2ViUG9pbnQuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vcHVibGljL1dlYlByZXJlbmRlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9w
dWJsaWMvV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5oJywKSW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEzNjk3OSkKKysrIFNvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNjAs
NiArNjAsNyBAQCBjbGFzcyBXZWJNZWRpYVN0cmVhbUNlbnRlcjsKIGNsYXNzIFdlYk1lZGlhU3Ry
ZWFtQ2VudGVyQ2xpZW50OwogY2xhc3MgV2ViTWVzc2FnZVBvcnRDaGFubmVsOwogY2xhc3MgV2Vi
TWltZVJlZ2lzdHJ5OworY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7CiBjbGFzcyBXZWJSVENQ
ZWVyQ29ubmVjdGlvbkhhbmRsZXI7CiBjbGFzcyBXZWJSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQ7CiBjbGFzcyBXZWJTYW5kYm94U3VwcG9ydDsKQEAgLTIzNyw2ICsyMzgsMTMgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjYWNoZU1ldGFkYXRhKGNvbnN0IFdlYlVSTCYsIGRvdWJs
ZSByZXNwb25zZVRpbWUsIGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBkYXRhU2l6ZSkgeyB9CiAK
IAorICAgIC8vIFBsdWdpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gSWYgcmVmcmVzaCBpcyB0cnVlLCB0aGVu
IGNhY2hlZCBpbmZvcm1hdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgdG8KKyAgICAvLyBzYXRpc2Z5
IHRoaXMgY2FsbC4KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UGx1Z2luTGlzdChib29sIHJlZnJlc2gs
IFdlYlBsdWdpbkxpc3RCdWlsZGVyKikgeyB9CisKKwogICAgIC8vIFJlc291cmNlcyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAg
ICAgLy8gUmV0dXJucyBhIGxvY2FsaXplZCBzdHJpbmcgcmVzb3VyY2UgKHdpdGggc3Vic3RpdHV0
aW9uIHBhcmFtZXRlcnMpLgpJbmRleDogU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJQbHVnaW5MaXN0QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAorI2Rl
ZmluZSBXZWJQbHVnaW5MaXN0QnVpbGRlcl9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJTdHJpbmc7CisKKy8vIEFuIGludGVyZmFjZSBmb3IgYnVpbGRpbmcgYSBsaXN0IG9mIGtu
b3duIHBsdWdpbnMuCitjbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRlciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIGFkZFBsdWdpbigKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0aW9uLAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZp
bGVOYW1lKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2lu
KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3Jp
cHRpb24pID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVk
aWFUeXBlKAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEzNjk4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA3ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1vdmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9m
IFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgy
OTQ4LgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtU3VwcG9ydC5oOgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKyAgICAg
ICAgKiBwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5DYWNoZTo6cGx1Z2lucyk6CisgICAgICAgICogcGx1Z2lucy9jaHJvbWl1
bS9QbHVnaW5MaXN0QnVpbGRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luTGlzdEJ1aWxkZXI6OmFkZFBsdWdpbik6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpbkxpc3RCdWlsZGVyOjphZGRNZWRpYVR5cGVUb0xhc3RQbHVnaW4pOgorICAgICAg
ICAoV2ViS2l0OjpQbHVnaW5MaXN0QnVpbGRlcjo6YWRkRmlsZUV4dGVuc2lvblRvTGFzdE1lZGlh
VHlwZSk6CisgICAgICAgICogcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5MaXN0QnVpbGRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChQbHVnaW5MaXN0QnVpbGRlcik6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpbkxpc3RCdWlsZGVyOjpQbHVnaW5MaXN0QnVpbGRlcik6CisK
IDIwMTItMTItMDcgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgbGludXggdGhlbWUgcmVsYXRlZCBmaWxlcyBhbmQgc3dpdGNoIHRv
IGRlZmF1bHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEzNjk3OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMjIwOSw2ICsyMjA5LDgg
QEAKICAgICAgICAgICAgICdwbHVnaW5zL1BsdWdpblZpZXdOb25lLmNwcCcsCiAgICAgICAgICAg
ICAncGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRhQ2hyb21pdW0uY3BwJywKICAgICAgICAgICAg
ICdwbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5oJywKKyAgICAgICAgICAgICdw
bHVnaW5zL2Nocm9taXVtL1BsdWdpbkxpc3RCdWlsZGVyLmNwcCcsCisgICAgICAgICAgICAncGx1
Z2lucy9jaHJvbWl1bS9QbHVnaW5MaXN0QnVpbGRlci5oJywKICAgICAgICAgICAgICdwbHVnaW5z
L2d0ay9QbHVnaW5QYWNrYWdlR3RrLmNwcCcsCiAgICAgICAgICAgICAncGx1Z2lucy9ndGsvUGx1
Z2luVmlld0d0ay5jcHAnLAogICAgICAgICAgICAgJ3BsdWdpbnMvZ3RrL2d0azJ4dGJpbi5oJywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3Jt
U3VwcG9ydC5oCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSArNzYsNiBA
QCBwdWJsaWM6CiAgICAgLy8gSW5kZXhlZERCIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZT4gaWRiRmFjdG9yeSgpOwogCi0gICAgLy8gUGx1Z2luIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLSAgICBzdGF0aWMgYm9vbCBwbHVnaW5zKGJvb2wgcmVmcmVzaCwgVmVjdG9yPFBsdWdpbklu
Zm8+Kik7Ci0KICAgICAvLyBUaGVtaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI2lmIE9TKFdJTkRPV1MpICYmICFFTkFCTEUo
REVGQVVMVF9SRU5ERVJfVEhFTUUpCiAgICAgc3RhdGljIHZvaWQgcGFpbnRCdXR0b24oCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5EYXRh
Q2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L2Nocm9taXVtL1BsdWdpbkRhdGFDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcg
KzMxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhQ2hyb21p
dW0uaCIKIAotI2luY2x1ZGUgIlBsYXRmb3JtU3VwcG9ydC5oIgorI2luY2x1ZGUgIlBsdWdpbkxp
c3RCdWlsZGVyLmgiCisjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTAsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFBs
dWdpbkluZm8+JiBwbHVnaW5zKCkKICAgICB7CiAgICAgICAgIGlmICghbV9sb2FkZWQpIHsKLSAg
ICAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6cGx1Z2lucyhtX3JlZnJlc2gsICZtX3BsdWdpbnMp
OworICAgICAgICAgICAgUGx1Z2luTGlzdEJ1aWxkZXIgYnVpbGRlcigmbV9wbHVnaW5zKTsKKyAg
ICAgICAgICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Z2V0UGx1Z2luTGlzdChtX3Jl
ZnJlc2gsICZidWlsZGVyKTsKICAgICAgICAgICAgIG1fbG9hZGVkID0gdHJ1ZTsKICAgICAgICAg
ICAgIG1fcmVmcmVzaCA9IGZhbHNlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL2Nocm9taXVtL1BsdWdpbkxpc3RCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL2Nocm9taXVtL1BsdWdpbkxpc3RCdWlsZGVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luTGlzdEJ1aWxk
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsdWdpbkxpc3RCdWlsZGVyLmgiCisKKyNpbmNsdWRlICJQbHVnaW5EYXRh
LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFBsdWdpbkxpc3RCdWlsZGVyOjphZGRQ
bHVnaW4oY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZpbGVOYW1lKQorewor
ICAgIFBsdWdpbkluZm8gaW5mbzsKKyAgICBpbmZvLm5hbWUgPSBuYW1lOworICAgIGluZm8uZGVz
YyA9IGRlc2NyaXB0aW9uOworICAgIGluZm8uZmlsZSA9IGZpbGVOYW1lOworICAgIG1fcmVzdWx0
cy0+YXBwZW5kKGluZm8pOworfQorCit2b2lkIFBsdWdpbkxpc3RCdWlsZGVyOjphZGRNZWRpYVR5
cGVUb0xhc3RQbHVnaW4oY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBkZXNjcmlwdGlvbikKK3sKKyAgICBNaW1lQ2xhc3NJbmZvIGluZm87Cisg
ICAgaW5mby50eXBlID0gbmFtZTsKKyAgICBpbmZvLmRlc2MgPSBkZXNjcmlwdGlvbjsKKyAgICBt
X3Jlc3VsdHMtPmxhc3QoKS5taW1lcy5hcHBlbmQoaW5mbyk7Cit9CisKK3ZvaWQgUGx1Z2luTGlz
dEJ1aWxkZXI6OmFkZEZpbGVFeHRlbnNpb25Ub0xhc3RNZWRpYVR5cGUoY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBNaW1lQ2xhc3NJbmZvJiBpbmZvID0gbV9yZXN1
bHRzLT5sYXN0KCkubWltZXMubGFzdCgpOworICAgIGluZm8uZXh0ZW5zaW9ucy5hcHBlbmQoZXh0
ZW5zaW9uKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9jaHJvbWl1bS9QbHVnaW5MaXN0QnVpbGRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luTGlzdEJ1aWxkZXIuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvY2hyb21pdW0vUGx1Z2luTGlzdEJ1aWxk
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGx1Z2luTGlzdEJ1
aWxkZXJfaAorI2RlZmluZSBQbHVnaW5MaXN0QnVpbGRlcl9oCisKKyNpbmNsdWRlICJQbHVnaW5E
YXRhLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsdWdpbkxp
c3RCdWlsZGVyIDogcHVibGljIFdlYktpdDo6V2ViUGx1Z2luTGlzdEJ1aWxkZXIgeworcHVibGlj
OgorICAgIFBsdWdpbkxpc3RCdWlsZGVyKFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiogcmVz
dWx0cykgOiBtX3Jlc3VsdHMocmVzdWx0cykgeyB9CisKKyAgICAvLyBXZWJQbHVnaW5MaXN0QnVp
bGRlciBtZXRob2RzOgorICAgIHZpcnR1YWwgdm9pZCBhZGRQbHVnaW4oY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZpbGVOYW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkTWVk
aWFUeXBlVG9MYXN0UGx1Z2luKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYgZGVzY3JpcHRpb24pOworICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxl
RXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBleHRlbnNp
b24pOworCitwcml2YXRlOgorICAgIFZlY3RvcjxQbHVnaW5JbmZvPiogbV9yZXN1bHRzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMzY5ODApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTA3ICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIE1v
dmUgZ2V0UGx1Z2luc0xpc3Qgb3V0IG9mIFBsYXRmb3JtU3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY1MDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jpbmcgc2Vy
aWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaDoKKyAgICAgICAgKiBwdWJsaWMv
cGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmlkYkZhY3RvcnkpOgorICAgICAg
ICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1T
dXBwb3J0OjppZGJGYWN0b3J5KToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJ
bXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBs
Lmg6IFJlbW92ZWQuCisKIDIwMTItMTItMDcgIFNjb3R0IFZpb2xldCAgPHNreUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgbGludXggdGhlbWUgcmVsYXRlZCBmaWxl
cyBhbmQgc3dpdGNoIHRvIGRlZmF1bHQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJ
KHJldmlzaW9uIDEzNjk3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAko
d29ya2luZyBjb3B5KQpAQCAtNjAyLDggKzYwMiw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJQbHVn
aW5Db250YWluZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2luRG9jdW1l
bnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5j
cHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViUGx1Z2luTG9hZE9ic2VydmVyLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJQbHVnaW5Mb2FkT2JzZXJ2ZXIuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJQbHVnaW5TY3JvbGxiYXJJbXBsLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJQbHVnaW5MaXN0QnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RCdWlsZGVyLmgJKHJldmlzaW9u
IDEzNjk3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBsdWdpbkxpc3RC
dWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDI3ICsyOCw0IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV2ViUGx1Z2luTGlzdEJ1aWxkZXJfaAotI2RlZmluZSBXZWJQbHVn
aW5MaXN0QnVpbGRlcl9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJTdHJpbmc7
Ci0KLS8vIEFuIGludGVyZmFjZSBmb3IgYnVpbGRpbmcgYSBsaXN0IG9mIGtub3duIHBsdWdpbnMu
Ci1jbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lk
IGFkZFBsdWdpbigKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJp
bmcmIGRlc2NyaXB0aW9uLAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2luKAotICAgICAgICBj
b25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pID0gMDsK
LQotICAgIHZpcnR1YWwgdm9pZCBhZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKAotICAg
ICAgICBjb25zdCBXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKKyNpbmNsdWRlICIuLi8uLi8uLi9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViUGx1Z2luTGlzdEJ1aWxkZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5oCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsMTAgKzQ2LDcgQEAgdHlwZWRlZiB2b2lkICpIQU5ETEU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1jbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsgLy8gRklYTUU6IERvZXMgdGhp
cyBiZWxvbmcgaW4gcGxhdGZvcm0/Ci1jbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVu
dDsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJJREJG
YWN0b3J5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9ybT8KLWNsYXNzIFdl
YlBsdWdpbkxpc3RCdWlsZGVyOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0Zm9y
bT8KIGNsYXNzIFdlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnk7IC8vIEZJWE1FOiBEb2VzIHRoaXMg
YmVsb25nIGluIHBsYXRmb3JtPwogCiAvLyBGSVhNRTogRXZlbnR1YWxseSBhbGwgdGhlc2UgQVBJ
IHdpbGwgbmVlZCB0byBtb3ZlIHRvIFdlYktpdDo6UGxhdGZvcm0uCkBAIC02MCwxMyArNTcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJJREJGYWN0b3J5KiBpZGJGYWN0b3J5KCkgeyByZXR1
cm4gMDsgfQogCiAKLSAgICAvLyBQbHVnaW5zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIElmIHJlZnJlc2ggaXMg
dHJ1ZSwgdGhlbiBjYWNoZWQgaW5mb3JtYXRpb24gc2hvdWxkIG5vdCBiZSB1c2VkIHRvCi0gICAg
Ly8gc2F0aXNmeSB0aGlzIGNhbGwuCi0gICAgdmlydHVhbCB2b2lkIGdldFBsdWdpbkxpc3QoYm9v
bCByZWZyZXNoLCBXZWJQbHVnaW5MaXN0QnVpbGRlciopIHsgfQotCi0KICAgICAvLyBTaGFyZWQg
V29ya2VycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogICAgIHZpcnR1YWwgV2ViU2hhcmVkV29ya2VyUmVwb3NpdG9yeSogc2hhcmVkV29y
a2VyUmVwb3NpdG9yeSgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkocmV2aXNpb24gMTM2OTc5KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUg
IldlYktpdC5oIgogI2luY2x1ZGUgIldlYlBsdWdpbkNvbnRhaW5lckltcGwuaCIKLSNpbmNsdWRl
ICJXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaCIKICNpbmNsdWRlICJXZWJTYW5kYm94U3VwcG9y
dC5oIgogI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50
LmgiCkBAIC0xMTIsMTUgKzExMSw2IEBAIFBhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2U+IFAKICAgICByZXR1cm4gSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6Y3JlYXRlKCk7CiB9
CiAKLS8vIFBsdWdpbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OnBsdWdp
bnMoYm9vbCByZWZyZXNoLCBWZWN0b3I8UGx1Z2luSW5mbz4qIHJlc3VsdHMpCi17Ci0gICAgV2Vi
UGx1Z2luTGlzdEJ1aWxkZXJJbXBsIGJ1aWxkZXIocmVzdWx0cyk7Ci0gICAgd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KCktPmdldFBsdWdpbkxpc3QocmVmcmVzaCwgJmJ1aWxkZXIpOwotICAgIHJldHVy
biB0cnVlOyAgLy8gRklYTUU6IFRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoaXMgZnVuY3Rpb24gdG8g
cmV0dXJuIGEgdmFsdWUuCi19Ci0KIC8vIFRoZW1pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogI2lmIE9TKFdJ
TkRPV1MpICYmICFFTkFCTEUoREVGQVVMVF9SRU5ERVJfVEhFTUUpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWlsZGVySW1wbC5j
cHAJKHJldmlzaW9uIDEzNjk3OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkxpc3RCdWlsZGVySW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNjUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbHVnaW5MaXN0QnVpbGRlckltcGwu
aCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU3RyaW5n
Lmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
LQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjph
ZGRQbHVnaW4oY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRlc2NyaXB0
aW9uLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQotewotICAgIFBsdWdpbkluZm8gaW5mbzsK
LSAgICBpbmZvLm5hbWUgPSBuYW1lOwotICAgIGluZm8uZGVzYyA9IGRlc2NyaXB0aW9uOwotICAg
IGluZm8uZmlsZSA9IGZpbGVOYW1lOwotICAgIG1fcmVzdWx0cy0+YXBwZW5kKGluZm8pOwotfQot
Ci12b2lkIFdlYlBsdWdpbkxpc3RCdWlsZGVySW1wbDo6YWRkTWVkaWFUeXBlVG9MYXN0UGx1Z2lu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbikKLXsK
LSAgICBNaW1lQ2xhc3NJbmZvIGluZm87Ci0gICAgaW5mby50eXBlID0gbmFtZTsKLSAgICBpbmZv
LmRlc2MgPSBkZXNjcmlwdGlvbjsKLSAgICBtX3Jlc3VsdHMtPmxhc3QoKS5taW1lcy5hcHBlbmQo
aW5mbyk7Ci19Ci0KLXZvaWQgV2ViUGx1Z2luTGlzdEJ1aWxkZXJJbXBsOjphZGRGaWxlRXh0ZW5z
aW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0ZW5zaW9uKQotewotICAgIE1p
bWVDbGFzc0luZm8mIGluZm8gPSBtX3Jlc3VsdHMtPmxhc3QoKS5taW1lcy5sYXN0KCk7Ci0gICAg
aW5mby5leHRlbnNpb25zLmFwcGVuZChleHRlbnNpb24pOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkxpc3RCdWls
ZGVySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkxpc3RCdWlsZGVySW1wbC5oCShyZXZpc2lvbiAxMzY5NzkpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5MaXN0QnVpbGRlckltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICogCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKiAKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGxfaAotI2Rl
ZmluZSBXZWJQbHVnaW5MaXN0QnVpbGRlckltcGxfaAotCi0jaW5jbHVkZSAiV2ViUGx1Z2luTGlz
dEJ1aWxkZXIuaCIKLQotI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRl
ckltcGwgOiBwdWJsaWMgV2ViUGx1Z2luTGlzdEJ1aWxkZXIgewotcHVibGljOgotICAgIFdlYlBs
dWdpbkxpc3RCdWlsZGVySW1wbChWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIHJlc3VsdHMp
IDogbV9yZXN1bHRzKHJlc3VsdHMpIHsgfQotCi0gICAgLy8gV2ViUGx1Z2luTGlzdEJ1aWxkZXIg
bWV0aG9kczoKLSAgICB2aXJ0dWFsIHZvaWQgYWRkUGx1Z2luKGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QgV2ViU3RyaW5nJiBkZXNjcmlwdGlvbiwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFt
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZE1lZGlhVHlwZVRvTGFzdFBsdWdpbihjb25zdCBXZWJT
dHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZGVzY3JpcHRpb24pOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRGaWxlRXh0ZW5zaW9uVG9MYXN0TWVkaWFUeXBlKGNvbnN0IFdlYlN0cmluZyYgZXh0
ZW5zaW9uKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4qIG1f
cmVzdWx0czsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>