<?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>73593</bug_id>
          
          <creation_ts>2011-12-01 15:05:14 -0800</creation_ts>
          <short_desc>Add WebArrayBuffer to chromium API</short_desc>
          <delta_ts>2011-12-19 11:22:01 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Michael">dmichael</reporter>
          <assigned_to name="Dave Michael">dmichael</assigned_to>
          <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>513164</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-01 15:05:14 -0800</bug_when>
    <thetext>Add WebArrayBuffer to chromium API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513165</commentid>
    <comment_count>1</comment_count>
      <attachid>117498</attachid>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-01 15:06:14 -0800</bug_when>
    <thetext>Created attachment 117498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513176</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-01 15:13:52 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513499</commentid>
    <comment_count>3</comment_count>
      <attachid>117498</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-01 22:29:26 -0800</bug_when>
    <thetext>Comment on attachment 117498
Patch

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

&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:66
&gt; +    void* data();

you need WEBKIT_EXPORT in front of non-inline methods that can be reached by the embedder.

&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:67
&gt; +    const void* data() const;

hmm, why do we need both a const and non-const version of the data() access?  when would you
need non-const access?  do you intend to mutate the WebArrayBuffer contents this way?

&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:71
&gt; +    WEBKIT_EXPORT v8::Handle&lt;v8::Value&gt;  toV8Value();

nit: looks like there is an extra whitespace in front of toV8Value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513843</commentid>
    <comment_count>4</comment_count>
      <attachid>117640</attachid>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-02 09:38:01 -0800</bug_when>
    <thetext>Created attachment 117640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513844</commentid>
    <comment_count>5</comment_count>
      <attachid>117498</attachid>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-02 09:38:27 -0800</bug_when>
    <thetext>Comment on attachment 117498
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:66
&gt;&gt; +    void* data();
&gt; 
&gt; you need WEBKIT_EXPORT in front of non-inline methods that can be reached by the embedder.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:67
&gt;&gt; +    const void* data() const;
&gt; 
&gt; hmm, why do we need both a const and non-const version of the data() access?  when would you
&gt; need non-const access?  do you intend to mutate the WebArrayBuffer contents this way?

Yes. This eventually gets plumbed out to the PPB_VarArrayBuffer_Dev interface, where Map() needs to be able to provide a non-const pointer to the buffer. The plugin needs to be able to write to the buffer as well as read it. I could probably get away with _only_ the non-const one, but I may have to const_cast in some contexts in chromium code. This seemed the least evil option :-)

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:71
&gt;&gt; +    WEBKIT_EXPORT v8::Handle&lt;v8::Value&gt;  toV8Value();
&gt; 
&gt; nit: looks like there is an extra whitespace in front of toV8Value.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513847</commentid>
    <comment_count>6</comment_count>
      <attachid>117498</attachid>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-02 09:39:05 -0800</bug_when>
    <thetext>Comment on attachment 117498
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:66
&gt;&gt; +    void* data();
&gt; 
&gt; you need WEBKIT_EXPORT in front of non-inline methods that can be reached by the embedder.

Done.

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:67
&gt;&gt; +    const void* data() const;
&gt; 
&gt; hmm, why do we need both a const and non-const version of the data() access?  when would you
&gt; need non-const access?  do you intend to mutate the WebArrayBuffer contents this way?

Yes. This eventually gets plumbed out to the PPB_VarArrayBuffer_Dev interface, where Map() needs to be able to provide a non-const pointer to the buffer. The plugin needs to be able to write to the buffer as well as read it. I could probably get away with _only_ the non-const one, but I may have to const_cast in some contexts in chromium code. This seemed the least evil option :-)

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:71
&gt;&gt; +    WEBKIT_EXPORT v8::Handle&lt;v8::Value&gt;  toV8Value();
&gt; 
&gt; nit: looks like there is an extra whitespace in front of toV8Value.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>513966</commentid>
    <comment_count>7</comment_count>
      <attachid>117640</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-02 11:29:19 -0800</bug_when>
    <thetext>Comment on attachment 117640
Patch

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

&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:66
&gt; +    WEBKIT_EXPORT void* data();

WebArrayBufferView has a baseAddress method that is const yet return a void*.
Why shouldn&apos;t WebArrayBuffer use the same interface as WebArrayBufferView?
Should WebArrayBufferView::baseAddress() return a |const void*| instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514002</commentid>
    <comment_count>8</comment_count>
      <attachid>117640</attachid>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-02 12:13:06 -0800</bug_when>
    <thetext>Comment on attachment 117640
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebArrayBuffer.h:66
&gt;&gt; +    WEBKIT_EXPORT void* data();
&gt; 
&gt; WebArrayBufferView has a baseAddress method that is const yet return a void*.
&gt; Why shouldn&apos;t WebArrayBuffer use the same interface as WebArrayBufferView?
&gt; Should WebArrayBufferView::baseAddress() return a |const void*| instead?

It&apos;s kind of a judgement call. I was more-or-less plumbing out what ArrayBuffer has. I like this way, because it feels more const-correct to me, since WebArrayBuffer effectively owns the buffer.

But a const method just means the implicit &apos;this&apos; is const, which means the member _pointer_ itself is const, so it would be easy to return a |void*|. The _pointee_ is still mutable. In this case, I think treating the pointee (i.e., the contents of the buffer) as having the same const-ness as the owning WebArrayBuffer makes sense. WebArrayBufferView is somewhat more reasonable to do with just one const method, since the view doesn&apos;t own the buffer.

tl;dr: I think it makes sense as I have it, but I&apos;m open to changing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514050</commentid>
    <comment_count>9</comment_count>
      <attachid>117674</attachid>
    <who name="Dave Michael">dmichael</who>
    <bug_when>2011-12-02 13:09:24 -0800</bug_when>
    <thetext>Created attachment 117674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514373</commentid>
    <comment_count>10</comment_count>
      <attachid>117674</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 19:14:01 -0800</bug_when>
    <thetext>Comment on attachment 117674
Patch

Clearing flags on attachment: 117674

Committed r101896: &lt;http://trac.webkit.org/changeset/101896&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514374</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-02 19:14:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524053</commentid>
    <comment_count>12</comment_count>
      <attachid>117498</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 11:22:01 -0800</bug_when>
    <thetext>Comment on attachment 117498
Patch

Cleared review? from obsolete attachment 117498 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117498</attachid>
            <date>2011-12-01 15:06:14 -0800</date>
            <delta_ts>2011-12-19 11:22:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73593-20111201160613.patch</filename>
            <type>text/plain</type>
            <size>12032</size>
            <attacher name="Dave Michael">dmichael</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGZmYWYwYTI2YmVhODBkYTc5ODRkNDNiOTYwZDg5ZmJiMTIxOWFmMDMuLmQ1MjhlN2UwZWFjODYy
OGI5YmNiMGFhYjMyYjU3ZTQxZjZiMzY1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTEtMTItMDEgIERhdmUgTWljaGFlbCAgPGRtaWNoYWVsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViQXJyYXlCdWZmZXIgdG8gY2hyb21pdW0gQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXJyYXlCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkFycmF5QnVmZmVyOjp+V2ViQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBcnJheUJ1ZmZlcjo6V2ViQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
cnJheUJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXlCdWZmZXI6
OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAgICogc3Jj
L1dlYkFycmF5QnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6cmVzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6YXNzaWduKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXJyYXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZl
cjo6Ynl0ZUxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVmZmVyOjp0b1Y4VmFs
dWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6V2ViQXJyYXlCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXJyYXlCdWZmZXI6Om9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5
QnVmZmVyPik6CisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Z2V0QXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmluZGluZ3M6Omdl
dEFycmF5QnVmZmVyKToKKwogMjAxMS0xMi0wMSAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIGFkZCByZWZlcnJlciBwb2xpY3kgdG8g
V2ViQ29udGV4dE1lbnVEYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNzhhN2Uw
ZDk5MmQ4NjIxZGQyMTUyZWQxZDI2YmQxYzFiYjlmN2ZkYy4uZTMzNGJmNzU1OWY5MWY0MGJiNzlh
ZmI5YTQ0MmI4MGU0NDNlNDkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTE1
LDYgKzExNSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9s
bGVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3Qu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVu
dC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkFycmF5QnVmZmVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3LmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViQXR0cmlidXRlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXVk
aW9CdXMuaCcsCkBAIC00NjQsNiArNDY1LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlv
bkNvbnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25D
b250cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkFycmF5QnVmZmVyLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViQXVkaW9CdXMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkFycmF5QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJB
cnJheUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwNGQ0MzAxZTgzNGU1NGU2OTA3NjI5NTE5OGJlOWU2
OGM4OWJkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJBcnJheUJ1ZmZlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFycmF5QnVmZmVy
X2gKKyNkZWZpbmUgV2ViQXJyYXlCdWZmZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCisjaWYgV0VCS0lUX1VTSU5HX1Y4CituYW1lc3Bh
Y2UgdjggeworY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOwor
fQorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeyBjbGFzcyBBcnJheUJ1ZmZlcjsgfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQXJyYXlCdWZmZXIgeworcHVibGljOgorICAgIH5X
ZWJBcnJheUJ1ZmZlcigpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViQXJyYXlCdWZmZXIoKSB7IH0K
KyAgICBXZWJBcnJheUJ1ZmZlcihjb25zdCBXZWJBcnJheUJ1ZmZlciYgYikgeyBhc3NpZ24oYik7
IH0KKyAgICBXZWJBcnJheUJ1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IFdlYkFycmF5QnVmZmVyJiBi
KQorICAgIHsKKyAgICAgICAgYXNzaWduKGIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAg
fQorCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQXJyYXlCdWZmZXIgY3JlYXRlKHVuc2ln
bmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworCisgICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25z
dCBXZWJBcnJheUJ1ZmZlciYpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBt
X3ByaXZhdGUuaXNOdWxsKCk7IH0KKyAgICB2b2lkKiBkYXRhKCk7CisgICAgY29uc3Qgdm9pZCog
ZGF0YSgpIGNvbnN0OworICAgIHVuc2lnbmVkIGJ5dGVMZW5ndGgoKSBjb25zdDsKKworI2lmIFdF
QktJVF9VU0lOR19WOAorICAgIFdFQktJVF9FWFBPUlQgdjg6OkhhbmRsZTx2ODo6VmFsdWU+ICB0
b1Y4VmFsdWUoKTsKKyNlbmRpZgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2Vi
QXJyYXlCdWZmZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+Jik7Cisg
ICAgV2ViQXJyYXlCdWZmZXImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFdURjo6QXJyYXlC
dWZmZXI+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+
KCkgY29uc3Q7CisjZW5kaWYKKworcHJvdGVjdGVkOgorICAgIFdlYlByaXZhdGVQdHI8V1RGOjpB
cnJheUJ1ZmZlcj4gbV9wcml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJBcnJheUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQmluZGluZ3MuaAppbmRleCBjMzk0NDFkYTA4YTFhMDY4ZGQyN2Q4NzlmNzdhNzE2NTM5ZGQx
ZTQ3Li4zNGEzMjA1NTdkMTNiZTg5NjQ1MTQ4OTZiOGNiNDk4NDA3YmM0OGM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJpbmRpbmdzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
Y2xhc3MgV2ViQXJyYXlCdWZmZXI7CiBjbGFzcyBXZWJBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBX
ZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CkBAIC0xNDMsNiArMTQ0LDEwIEBAIHB1Ymxp
YzoKICAgICAvLyBJZiBzbywgcmV0dXJuIHRoYXQgcmFuZ2UgYXMgYSBXZWJSYW5nZSBvYmplY3Qu
CiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgYm9vbCBnZXRSYW5nZShOUE9iamVjdCogcmFuZ2Us
IFdlYlJhbmdlKik7CiAKKyAgICAvLyBSZXR1cm4gdHJ1ZSAoc3VjY2VzcykgaWYgdGhlIGdpdmVu
IG5wb2JqIGlzIGFuIEFycmF5QnVmZmVyIG9iamVjdC4KKyAgICAvLyBJZiBzbywgcmV0dXJuIGl0
IGFzIGEgV2ViQXJyYXlCdWZmZXIgb2JqZWN0LgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJv
b2wgZ2V0QXJyYXlCdWZmZXIoTlBPYmplY3QqIGFycmF5QnVmZmVyLCBXZWJBcnJheUJ1ZmZlciop
OworCiAgICAgLy8gUmV0dXJuIHRydWUgKHN1Y2Nlc3MpIGlmIHRoZSBnaXZlbiBucG9iaiBpcyBh
biBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0LgogICAgIC8vIElmIHNvLCByZXR1cm4gaXQgYXMgYSBX
ZWJBcnJheUJ1ZmZlclZpZXcgb2JqZWN0LgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wg
Z2V0QXJyYXlCdWZmZXJWaWV3KE5QT2JqZWN0KiBhcnJheUJ1ZmZlclZpZXcsIFdlYkFycmF5QnVm
ZmVyVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJy
YXlCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmFjMzE4YTA3MzIyNzRhMjMzNDZhMGMyZmNlNTUyNzYzZmUyYTY4YzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1
ZmZlci5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
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
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViQXJyYXlCdWZmZXIuaCIKKworI2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAi
VjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViQXJyYXlCdWZmZXIg
V2ViQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQgZWxl
bWVudEJ5dGVTaXplKQoreworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlC
dWZmZXI6OmNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVudEJ5dGVTaXplKTsKKyAgICByZXR1cm4g
V2ViQXJyYXlCdWZmZXIoYnVmZmVyKTsKK30KKwordm9pZCBXZWJBcnJheUJ1ZmZlcjo6cmVzZXQo
KQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQorCit2b2lkIFdlYkFycmF5QnVmZmVyOjph
c3NpZ24oY29uc3QgV2ViQXJyYXlCdWZmZXImIG90aGVyKQoreworICAgIG1fcHJpdmF0ZSA9IG90
aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCogV2ViQXJyYXlCdWZmZXI6OmRhdGEoKQoreworICAg
IGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmRhdGEoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworY29uc3Qgdm9pZCogV2ViQXJyYXlCdWZmZXI6OmRhdGEoKSBjb25zdAor
eworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmRhdGEoKTsK
KyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgV2ViQXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgo
KSBjb25zdAoreworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZhdGUt
PmJ5dGVMZW5ndGgoKTsKKyAgICByZXR1cm4gMDsKK30KKworI2lmIFdFQktJVF9VU0lOR19WOAor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkFycmF5QnVmZmVyOjp0b1Y4VmFsdWUoKQoreworICAg
IHJldHVybiBWOEFycmF5QnVmZmVyOjp3cmFwKG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisjZW5kaWYK
KworV2ViQXJyYXlCdWZmZXI6OldlYkFycmF5QnVmZmVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
VEY6OkFycmF5QnVmZmVyPiYgYmxvYikKKyAgICA6IG1fcHJpdmF0ZShibG9iKQoreworfQorCitX
ZWJBcnJheUJ1ZmZlciYgV2ViQXJyYXlCdWZmZXI6Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4mIGJsb2IpCit7CisgICAgbV9wcml2YXRlID0gYmxvYjsK
KyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkFycmF5QnVmZmVyOjpvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4oKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZh
dGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCmluZGV4IGI3YmQ0NjZiZGQ5MGVhZjcxMDZjNGI3MTM2
ZmJiM2MwMzJjMTI1MjcuLmEzNTM2MDk2ZDI0Y2Y2NWFhMzAwZTc0MzZmMDc4MGE5NDY0Y2FkNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKQEAgLTM5LDYg
KzM5LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0Lmgi
ICAvLyBmb3IgUHJpdmF0ZUlkZW50aWZpZXIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1ZGUg
IlY4QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1
ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCkBAIC00OSw2
ICs1MCw3IEBACiAjZWxpZiBVU0UoSlNDKQogI2luY2x1ZGUgImJyaWRnZS9jL2NfdXRpbGl0eS5o
IgogI2VuZGlmCisjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJBcnJh
eUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUmFu
Z2UuaCIKQEAgLTIzNCw2ICsyMzYsMjEgQEAgc3RhdGljIGJvb2wgZ2V0RWxlbWVudEltcGwoTlBP
YmplY3QqIG9iamVjdCwgV2ViRWxlbWVudCogd2ViRWxlbWVudCkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdl
YkFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3sKKyAgICBpZiAoIW9iamVjdCB8fCAob2JqZWN0
LT5fY2xhc3MgIT0gbnBTY3JpcHRPYmplY3RDbGFzcykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmpl
Y3QqPihvYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhPYmplY3QodjhOUE9i
amVjdC0+djhPYmplY3QpOworICAgIEFycmF5QnVmZmVyKiBuYXRpdmUgPSBWOEFycmF5QnVmZmVy
OjpIYXNJbnN0YW5jZSh2OE9iamVjdCkgPyBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2OE9iamVj
dCkgOiAwOworICAgIGlmICghbmF0aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAq
YXJyYXlCdWZmZXIgPSBXZWJBcnJheUJ1ZmZlcihuYXRpdmUpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBzdGF0aWMgYm9vbCBnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKE5QT2JqZWN0KiBvYmplY3Qs
IFdlYkFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KQogewogICAgIGlmICghb2JqZWN0
IHx8IChvYmplY3QtPl9jbGFzcyAhPSBucFNjcmlwdE9iamVjdENsYXNzKSkKQEAgLTI4Myw2ICsz
MDAsMTYgQEAgYm9vbCBXZWJCaW5kaW5nczo6Z2V0UmFuZ2UoTlBPYmplY3QqIHJhbmdlLCBXZWJS
YW5nZSogd2ViUmFuZ2UpCiAjZW5kaWYKIH0KIAorYm9vbCBXZWJCaW5kaW5nczo6Z2V0QXJyYXlC
dWZmZXIoTlBPYmplY3QqIGFycmF5QnVmZmVyLCBXZWJBcnJheUJ1ZmZlciogd2ViQXJyYXlCdWZm
ZXIpCit7CisjaWYgVVNFKFY4KQorICAgIHJldHVybiBnZXRBcnJheUJ1ZmZlckltcGwoYXJyYXlC
dWZmZXIsIHdlYkFycmF5QnVmZmVyKTsKKyNlbHNlCisgICAgLy8gTm90IHN1cHBvcnRlZCBvbiBv
dGhlciBwb3J0cyAoSlNDLCBldGMpLgorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQorCiBi
b29sIFdlYkJpbmRpbmdzOjpnZXRBcnJheUJ1ZmZlclZpZXcoTlBPYmplY3QqIGFycmF5QnVmZmVy
VmlldywgV2ViQXJyYXlCdWZmZXJWaWV3KiB3ZWJBcnJheUJ1ZmZlclZpZXcpCiB7CiAjaWYgVVNF
KFY4KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117640</attachid>
            <date>2011-12-02 09:38:01 -0800</date>
            <delta_ts>2011-12-02 13:09:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73593-20111202103800.patch</filename>
            <type>text/plain</type>
            <size>12056</size>
            <attacher name="Dave Michael">dmichael</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA4Yjg3ZDhkMWY5MjdiMGI5ZDMyYmYzNzc2N2Q2OTBiNjg3M2NlOTIuLjVkOWFjNzdhMzk5NmQz
NmM4MjlhMjljYjJjY2IyZjE2NDk4OTI4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTEtMTItMDIgIERhdmUgTWljaGFlbCAgPGRtaWNoYWVsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViQXJyYXlCdWZmZXIgdG8gY2hyb21pdW0gQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXJyYXlCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkFycmF5QnVmZmVyOjp+V2ViQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBcnJheUJ1ZmZlcjo6V2ViQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
cnJheUJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXlCdWZmZXI6
OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAgICogc3Jj
L1dlYkFycmF5QnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6cmVzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6YXNzaWduKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXJyYXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZl
cjo6Ynl0ZUxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVmZmVyOjp0b1Y4VmFs
dWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6V2ViQXJyYXlCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXJyYXlCdWZmZXI6Om9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5
QnVmZmVyPik6CisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Z2V0QXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmluZGluZ3M6Omdl
dEFycmF5QnVmZmVyKToKKwogMjAxMS0xMi0wMiAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Ny
b2xsaW5nIHN0YXRlZnVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZjk5NTEyYzY1
ZTZlNTUzMjUwNjQ0Nzg4MTQwOWJjZmE0ZDRjM2JkNy4uYjFiMjY1M2Y2MGVlZWIwMjMyNDdmYjEx
NTFhNmZmMmYxZjJmODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTE1LDYg
KzExNSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVy
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkFycmF5QnVmZmVyLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQXR0cmlidXRlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXVkaW9C
dXMuaCcsCkBAIC00NjcsNiArNDY4LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25Db250
cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkFycmF5QnVmZmVyLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
QXVkaW9CdXMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFycmF5QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJh
eUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5YWY4YzY3MTU4NGFjYTU3NTczM2ZlZDdjZjJlYTcyMjRl
ZjE5OGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBcnJheUJ1ZmZlci5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFycmF5QnVmZmVyX2gK
KyNkZWZpbmUgV2ViQXJyYXlCdWZmZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCisjaWYgV0VCS0lUX1VTSU5HX1Y4CituYW1lc3BhY2Ug
djggeworY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOworfQor
I2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeyBjbGFzcyBBcnJheUJ1ZmZlcjsgfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQXJyYXlCdWZmZXIgeworcHVibGljOgorICAgIH5XZWJB
cnJheUJ1ZmZlcigpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViQXJyYXlCdWZmZXIoKSB7IH0KKyAg
ICBXZWJBcnJheUJ1ZmZlcihjb25zdCBXZWJBcnJheUJ1ZmZlciYgYikgeyBhc3NpZ24oYik7IH0K
KyAgICBXZWJBcnJheUJ1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IFdlYkFycmF5QnVmZmVyJiBiKQor
ICAgIHsKKyAgICAgICAgYXNzaWduKGIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQXJyYXlCdWZmZXIgY3JlYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBX
ZWJBcnJheUJ1ZmZlciYpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGUuaXNOdWxsKCk7IH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQqIGRhdGEoKTsKKyAgICBX
RUJLSVRfRVhQT1JUIGNvbnN0IHZvaWQqIGRhdGEoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBieXRl
TGVuZ3RoKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfVVNJTkdfVjgKKyAgICBXRUJLSVRfRVhQT1JU
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VmFsdWUoKTsKKyNlbmRpZgorCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgV2ViQXJyYXlCdWZmZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdURjo6QXJyYXlCdWZmZXI+Jik7CisgICAgV2ViQXJyYXlCdWZmZXImIG9wZXJhdG9yPShjb25z
dCBQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+Jik7CisgICAgb3BlcmF0b3IgV1RGOjpQYXNz
UmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+KCkgY29uc3Q7CisjZW5kaWYKKworcHJvdGVjdGVkOgor
ICAgIFdlYlByaXZhdGVQdHI8V1RGOjpBcnJheUJ1ZmZlcj4gbV9wcml2YXRlOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJBcnJheUJ1ZmZlcl9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaAppbmRleCBjMzk0NDFkYTA4YTFh
MDY4ZGQyN2Q4NzlmNzdhNzE2NTM5ZGQxZTQ3Li4zNGEzMjA1NTdkMTNiZTg5NjQ1MTQ4OTZiOGNi
NDk4NDA3YmM0OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJCaW5kaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJpbmRp
bmdzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFQ+IGNsYXNzIExvY2FsOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQXJyYXlCdWZmZXI7CiBjbGFzcyBXZWJB
cnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CkBA
IC0xNDMsNiArMTQ0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBJZiBzbywgcmV0dXJuIHRoYXQgcmFu
Z2UgYXMgYSBXZWJSYW5nZSBvYmplY3QuCiAgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgYm9vbCBn
ZXRSYW5nZShOUE9iamVjdCogcmFuZ2UsIFdlYlJhbmdlKik7CiAKKyAgICAvLyBSZXR1cm4gdHJ1
ZSAoc3VjY2VzcykgaWYgdGhlIGdpdmVuIG5wb2JqIGlzIGFuIEFycmF5QnVmZmVyIG9iamVjdC4K
KyAgICAvLyBJZiBzbywgcmV0dXJuIGl0IGFzIGEgV2ViQXJyYXlCdWZmZXIgb2JqZWN0LgorICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXIoTlBPYmplY3QqIGFycmF5
QnVmZmVyLCBXZWJBcnJheUJ1ZmZlciopOworCiAgICAgLy8gUmV0dXJuIHRydWUgKHN1Y2Nlc3Mp
IGlmIHRoZSBnaXZlbiBucG9iaiBpcyBhbiBBcnJheUJ1ZmZlclZpZXcgb2JqZWN0LgogICAgIC8v
IElmIHNvLCByZXR1cm4gaXQgYXMgYSBXZWJBcnJheUJ1ZmZlclZpZXcgb2JqZWN0LgogICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJWaWV3KE5QT2JqZWN0KiBhcnJh
eUJ1ZmZlclZpZXcsIFdlYkFycmF5QnVmZmVyVmlldyopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjMzE4YTA3MzIyNzRhMjMz
NDZhMGMyZmNlNTUyNzYzZmUyYTY4YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXIuaCIKKworI2luY2x1ZGUgIkFy
cmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViQXJyYXlCdWZmZXIgV2ViQXJyYXlCdWZmZXI6OmNyZWF0ZSh1bnNpZ25lZCBu
dW1FbGVtZW50cywgdW5zaWduZWQgZWxlbWVudEJ5dGVTaXplKQoreworICAgIFJlZlB0cjxBcnJh
eUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShudW1FbGVtZW50cywgZWxlbWVu
dEJ5dGVTaXplKTsKKyAgICByZXR1cm4gV2ViQXJyYXlCdWZmZXIoYnVmZmVyKTsKK30KKwordm9p
ZCBXZWJBcnJheUJ1ZmZlcjo6cmVzZXQoKQoreworICAgIG1fcHJpdmF0ZS5yZXNldCgpOworfQor
Cit2b2lkIFdlYkFycmF5QnVmZmVyOjphc3NpZ24oY29uc3QgV2ViQXJyYXlCdWZmZXImIG90aGVy
KQoreworICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKK30KKwordm9pZCogV2ViQXJy
YXlCdWZmZXI6OmRhdGEoKQoreworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBt
X3ByaXZhdGUtPmRhdGEoKTsKKyAgICByZXR1cm4gMDsKK30KKworY29uc3Qgdm9pZCogV2ViQXJy
YXlCdWZmZXI6OmRhdGEoKSBjb25zdAoreworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBtX3ByaXZhdGUtPmRhdGEoKTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgV2Vi
QXJyYXlCdWZmZXI6OmJ5dGVMZW5ndGgoKSBjb25zdAoreworICAgIGlmICghaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBtX3ByaXZhdGUtPmJ5dGVMZW5ndGgoKTsKKyAgICByZXR1cm4gMDsKK30K
KworI2lmIFdFQktJVF9VU0lOR19WOAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkFycmF5QnVm
ZmVyOjp0b1Y4VmFsdWUoKQoreworICAgIHJldHVybiBWOEFycmF5QnVmZmVyOjp3cmFwKG1fcHJp
dmF0ZS5nZXQoKSk7Cit9CisjZW5kaWYKKworV2ViQXJyYXlCdWZmZXI6OldlYkFycmF5QnVmZmVy
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5QnVmZmVyPiYgYmxvYikKKyAgICA6IG1f
cHJpdmF0ZShibG9iKQoreworfQorCitXZWJBcnJheUJ1ZmZlciYgV2ViQXJyYXlCdWZmZXI6Om9w
ZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4mIGJsb2IpCit7
CisgICAgbV9wcml2YXRlID0gYmxvYjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkFycmF5
QnVmZmVyOjpvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4oKSBjb25z
dAoreworICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCmluZGV4IGI3
YmQ0NjZiZGQ5MGVhZjcxMDZjNGI3MTM2ZmJiM2MwMzJjMTI1MjcuLmEzNTM2MDk2ZDI0Y2Y2NWFh
MzAwZTc0MzZmMDc4MGE5NDY0Y2FkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkJpbmRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJCaW5kaW5ncy5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJOUFY4T2JqZWN0LmgiICAvLyBmb3IgUHJpdmF0ZUlkZW50aWZpZXIKICNpbmNs
dWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJWOEFy
cmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAi
VjhET01XcmFwcGVyLmgiCkBAIC00OSw2ICs1MCw3IEBACiAjZWxpZiBVU0UoSlNDKQogI2luY2x1
ZGUgImJyaWRnZS9jL2NfdXRpbGl0eS5oIgogI2VuZGlmCisjaW5jbHVkZSAiV2ViQXJyYXlCdWZm
ZXIuaCIKICNpbmNsdWRlICJXZWJBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKQEAgLTIzNCw2ICsyMzYsMjEgQEAgc3RhdGlj
IGJvb2wgZ2V0RWxlbWVudEltcGwoTlBPYmplY3QqIG9iamVjdCwgV2ViRWxlbWVudCogd2ViRWxl
bWVudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJJ
bXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYkFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3sKKyAg
ICBpZiAoIW9iamVjdCB8fCAob2JqZWN0LT5fY2xhc3MgIT0gbnBTY3JpcHRPYmplY3RDbGFzcykp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihvYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gdjhPYmplY3QodjhOUE9iamVjdC0+djhPYmplY3QpOworICAgIEFycmF5QnVmZmVy
KiBuYXRpdmUgPSBWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2OE9iamVjdCkgPyBWOEFycmF5
QnVmZmVyOjp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOworICAgIGlmICghbmF0aXZlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAqYXJyYXlCdWZmZXIgPSBXZWJBcnJheUJ1ZmZlcihuYXRp
dmUpOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBnZXRBcnJheUJ1ZmZlclZp
ZXdJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYkFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJW
aWV3KQogewogICAgIGlmICghb2JqZWN0IHx8IChvYmplY3QtPl9jbGFzcyAhPSBucFNjcmlwdE9i
amVjdENsYXNzKSkKQEAgLTI4Myw2ICszMDAsMTYgQEAgYm9vbCBXZWJCaW5kaW5nczo6Z2V0UmFu
Z2UoTlBPYmplY3QqIHJhbmdlLCBXZWJSYW5nZSogd2ViUmFuZ2UpCiAjZW5kaWYKIH0KIAorYm9v
bCBXZWJCaW5kaW5nczo6Z2V0QXJyYXlCdWZmZXIoTlBPYmplY3QqIGFycmF5QnVmZmVyLCBXZWJB
cnJheUJ1ZmZlciogd2ViQXJyYXlCdWZmZXIpCit7CisjaWYgVVNFKFY4KQorICAgIHJldHVybiBn
ZXRBcnJheUJ1ZmZlckltcGwoYXJyYXlCdWZmZXIsIHdlYkFycmF5QnVmZmVyKTsKKyNlbHNlCisg
ICAgLy8gTm90IHN1cHBvcnRlZCBvbiBvdGhlciBwb3J0cyAoSlNDLCBldGMpLgorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorfQorCiBib29sIFdlYkJpbmRpbmdzOjpnZXRBcnJheUJ1ZmZlclZp
ZXcoTlBPYmplY3QqIGFycmF5QnVmZmVyVmlldywgV2ViQXJyYXlCdWZmZXJWaWV3KiB3ZWJBcnJh
eUJ1ZmZlclZpZXcpCiB7CiAjaWYgVVNFKFY4KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117674</attachid>
            <date>2011-12-02 13:09:24 -0800</date>
            <delta_ts>2011-12-02 19:14:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73593-20111202140923.patch</filename>
            <type>text/plain</type>
            <size>11921</size>
            <attacher name="Dave Michael">dmichael</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxODA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDA4Yjg3ZDhkMWY5MjdiMGI5ZDMyYmYzNzc2N2Q2OTBiNjg3M2NlOTIuLjVkOWFjNzdhMzk5NmQz
NmM4MjlhMjljYjJjY2IyZjE2NDk4OTI4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTEtMTItMDIgIERhdmUgTWljaGFlbCAgPGRtaWNoYWVsQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgV2ViQXJyYXlCdWZmZXIgdG8gY2hyb21pdW0gQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzU5MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5
cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQXJyYXlCdWZmZXIuaDogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkFycmF5QnVmZmVyOjp+V2ViQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJBcnJheUJ1ZmZlcjo6V2ViQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJB
cnJheUJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViQXJyYXlCdWZmZXI6
OmlzTnVsbCk6CisgICAgICAgICogcHVibGljL1dlYkJpbmRpbmdzLmg6CisgICAgICAgICogc3Jj
L1dlYkFycmF5QnVmZmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6cmVzZXQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6YXNzaWduKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXJyYXlCdWZmZXI6OmRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZl
cjo6Ynl0ZUxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVmZmVyOjp0b1Y4VmFs
dWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6V2ViQXJyYXlCdWZmZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViQXJyYXlCdWZmZXI6Om9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXVEY6OkFycmF5
QnVmZmVyPik6CisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Z2V0QXJyYXlCdWZmZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQmluZGluZ3M6Omdl
dEFycmF5QnVmZmVyKToKKwogMjAxMS0xMi0wMiAgU2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NJbnB1dEhhbmRsZXIgc2Ny
b2xsaW5nIHN0YXRlZnVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZjk5NTEyYzY1
ZTZlNTUzMjUwNjQ0Nzg4MTQwOWJjZmE0ZDRjM2JkNy4uYjFiMjY1M2Y2MGVlZWIwMjMyNDdmYjEx
NTFhNmZmMmYxZjJmODU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJL
aXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMTE1LDYg
KzExNSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBbmltYXRpb25Db250cm9sbGVy
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5o
JywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkFycmF5QnVmZmVyLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViQXJyYXlCdWZmZXJWaWV3LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViQXR0cmlidXRlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQXVkaW9C
dXMuaCcsCkBAIC00NjcsNiArNDY4LDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3QuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFuaW1hdGlvbkNv
bnRyb2xsZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25Db250
cm9sbGVySW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkFycmF5QnVmZmVyLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBcnJheUJ1ZmZlclZpZXcuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkF0dHJpYnV0ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
QXVkaW9CdXMuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFycmF5QnVmZmVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcnJh
eUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiMGJkNzQ0ZGE1OTAzOWIyNGNkMGI3MzhhZWQ5OTViMDZm
MjhiNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJBcnJheUJ1ZmZlci5oCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkFycmF5QnVmZmVyX2gK
KyNkZWZpbmUgV2ViQXJyYXlCdWZmZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCisjaWYgV0VCS0lUX1VTSU5HX1Y4CituYW1lc3BhY2Ug
djggeworY2xhc3MgVmFsdWU7Cit0ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3MgSGFuZGxlOworfQor
I2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeyBjbGFzcyBBcnJheUJ1ZmZlcjsgfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQXJyYXlCdWZmZXIgeworcHVibGljOgorICAgIH5XZWJB
cnJheUJ1ZmZlcigpIHsgcmVzZXQoKTsgfQorCisgICAgV2ViQXJyYXlCdWZmZXIoKSB7IH0KKyAg
ICBXZWJBcnJheUJ1ZmZlcihjb25zdCBXZWJBcnJheUJ1ZmZlciYgYikgeyBhc3NpZ24oYik7IH0K
KyAgICBXZWJBcnJheUJ1ZmZlciYgb3BlcmF0b3I9KGNvbnN0IFdlYkFycmF5QnVmZmVyJiBiKQor
ICAgIHsKKyAgICAgICAgYXNzaWduKGIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQor
CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQXJyYXlCdWZmZXIgY3JlYXRlKHVuc2lnbmVk
IG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpOworCisgICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHJlc2V0KCk7CisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBX
ZWJBcnJheUJ1ZmZlciYpOworCisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3By
aXZhdGUuaXNOdWxsKCk7IH0KKyAgICBXRUJLSVRfRVhQT1JUIHZvaWQqIGRhdGEoKSBjb25zdDsK
KyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfVVNJTkdfVjgK
KyAgICBXRUJLSVRfRVhQT1JUIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4VmFsdWUoKTsKKyNl
bmRpZgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQXJyYXlCdWZmZXIoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+Jik7CisgICAgV2ViQXJyYXlCdWZm
ZXImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+Jik7CisgICAg
b3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdURjo6QXJyYXlCdWZmZXI+KCkgY29uc3Q7CisjZW5k
aWYKKworcHJvdGVjdGVkOgorICAgIFdlYlByaXZhdGVQdHI8V1RGOjpBcnJheUJ1ZmZlcj4gbV9w
cml2YXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJBcnJh
eUJ1ZmZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJC
aW5kaW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQmluZGluZ3MuaApp
bmRleCBjMzk0NDFkYTA4YTFhMDY4ZGQyN2Q4NzlmNzdhNzE2NTM5ZGQxZTQ3Li4zNGEzMjA1NTdk
MTNiZTg5NjQ1MTQ4OTZiOGNiNDk4NDA3YmM0OGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJCaW5kaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkJpbmRpbmdzLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFQ+IGNsYXNzIExvY2FsOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViQXJyYXlC
dWZmZXI7CiBjbGFzcyBXZWJBcnJheUJ1ZmZlclZpZXc7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNs
YXNzIFdlYkVsZW1lbnQ7CkBAIC0xNDMsNiArMTQ0LDEwIEBAIHB1YmxpYzoKICAgICAvLyBJZiBz
bywgcmV0dXJuIHRoYXQgcmFuZ2UgYXMgYSBXZWJSYW5nZSBvYmplY3QuCiAgICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgYm9vbCBnZXRSYW5nZShOUE9iamVjdCogcmFuZ2UsIFdlYlJhbmdlKik7CiAK
KyAgICAvLyBSZXR1cm4gdHJ1ZSAoc3VjY2VzcykgaWYgdGhlIGdpdmVuIG5wb2JqIGlzIGFuIEFy
cmF5QnVmZmVyIG9iamVjdC4KKyAgICAvLyBJZiBzbywgcmV0dXJuIGl0IGFzIGEgV2ViQXJyYXlC
dWZmZXIgb2JqZWN0LgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZm
ZXIoTlBPYmplY3QqIGFycmF5QnVmZmVyLCBXZWJBcnJheUJ1ZmZlciopOworCiAgICAgLy8gUmV0
dXJuIHRydWUgKHN1Y2Nlc3MpIGlmIHRoZSBnaXZlbiBucG9iaiBpcyBhbiBBcnJheUJ1ZmZlclZp
ZXcgb2JqZWN0LgogICAgIC8vIElmIHNvLCByZXR1cm4gaXQgYXMgYSBXZWJBcnJheUJ1ZmZlclZp
ZXcgb2JqZWN0LgogICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJW
aWV3KE5QT2JqZWN0KiBhcnJheUJ1ZmZlclZpZXcsIFdlYkFycmF5QnVmZmVyVmlldyopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljg4OGMwNDhlNGFlMTYzOWYzNzgyMzU0OWIwNmQ5ODE2OGU4ZWJlNDQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKQEAgLTAs
MCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJBcnJheUJ1ZmZlci5o
IgorCisjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJBcnJheUJ1ZmZlciBXZWJBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHVuc2lnbmVkIG51bUVsZW1lbnRzLCB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUpCit7
CisgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG51
bUVsZW1lbnRzLCBlbGVtZW50Qnl0ZVNpemUpOworICAgIHJldHVybiBXZWJBcnJheUJ1ZmZlcihi
dWZmZXIpOworfQorCit2b2lkIFdlYkFycmF5QnVmZmVyOjpyZXNldCgpCit7CisgICAgbV9wcml2
YXRlLnJlc2V0KCk7Cit9CisKK3ZvaWQgV2ViQXJyYXlCdWZmZXI6OmFzc2lnbihjb25zdCBXZWJB
cnJheUJ1ZmZlciYgb3RoZXIpCit7CisgICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwor
fQorCit2b2lkKiBXZWJBcnJheUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0Cit7CisgICAgaWYgKCFpc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8dm9pZCo+KG1fcHJpdmF0ZS0+ZGF0YSgp
KTsKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgV2ViQXJyYXlCdWZmZXI6OmJ5dGVMZW5n
dGgoKSBjb25zdAoreworICAgIGlmICghaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBtX3ByaXZh
dGUtPmJ5dGVMZW5ndGgoKTsKKyAgICByZXR1cm4gMDsKK30KKworI2lmIFdFQktJVF9VU0lOR19W
OAordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkFycmF5QnVmZmVyOjp0b1Y4VmFsdWUoKQorewor
ICAgIHJldHVybiBWOEFycmF5QnVmZmVyOjp3cmFwKG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisjZW5k
aWYKKworV2ViQXJyYXlCdWZmZXI6OldlYkFycmF5QnVmZmVyKGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXVEY6OkFycmF5QnVmZmVyPiYgYmxvYikKKyAgICA6IG1fcHJpdmF0ZShibG9iKQoreworfQor
CitXZWJBcnJheUJ1ZmZlciYgV2ViQXJyYXlCdWZmZXI6Om9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4mIGJsb2IpCit7CisgICAgbV9wcml2YXRlID0gYmxv
YjsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkFycmF5QnVmZmVyOjpvcGVyYXRvciBXVEY6
OlBhc3NSZWZQdHI8V1RGOjpBcnJheUJ1ZmZlcj4oKSBjb25zdAoreworICAgIHJldHVybiBtX3By
aXZhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCmluZGV4IGI3YmQ0NjZiZGQ5MGVhZjcxMDZjNGI3
MTM2ZmJiM2MwMzJjMTI1MjcuLmEzNTM2MDk2ZDI0Y2Y2NWFhMzAwZTc0MzZmMDc4MGE5NDY0Y2Fk
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKQEAgLTM5
LDYgKzM5LDcgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0
LmgiICAvLyBmb3IgUHJpdmF0ZUlkZW50aWZpZXIKICNpbmNsdWRlICJSYW5nZS5oIgorI2luY2x1
ZGUgIlY4QXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCkBAIC00
OSw2ICs1MCw3IEBACiAjZWxpZiBVU0UoSlNDKQogI2luY2x1ZGUgImJyaWRnZS9jL2NfdXRpbGl0
eS5oIgogI2VuZGlmCisjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJB
cnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2Vi
UmFuZ2UuaCIKQEAgLTIzNCw2ICsyMzYsMjEgQEAgc3RhdGljIGJvb2wgZ2V0RWxlbWVudEltcGwo
TlBPYmplY3QqIG9iamVjdCwgV2ViRWxlbWVudCogd2ViRWxlbWVudCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorc3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJJbXBsKE5QT2JqZWN0KiBvYmplY3Qs
IFdlYkFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3sKKyAgICBpZiAoIW9iamVjdCB8fCAob2Jq
ZWN0LT5fY2xhc3MgIT0gbnBTY3JpcHRPYmplY3RDbGFzcykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBP
YmplY3QqPihvYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdjhPYmplY3QodjhO
UE9iamVjdC0+djhPYmplY3QpOworICAgIEFycmF5QnVmZmVyKiBuYXRpdmUgPSBWOEFycmF5QnVm
ZmVyOjpIYXNJbnN0YW5jZSh2OE9iamVjdCkgPyBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2OE9i
amVjdCkgOiAwOworICAgIGlmICghbmF0aXZlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAqYXJyYXlCdWZmZXIgPSBXZWJBcnJheUJ1ZmZlcihuYXRpdmUpOworICAgIHJldHVybiB0cnVl
OworfQorCiBzdGF0aWMgYm9vbCBnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKE5QT2JqZWN0KiBvYmpl
Y3QsIFdlYkFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KQogewogICAgIGlmICghb2Jq
ZWN0IHx8IChvYmplY3QtPl9jbGFzcyAhPSBucFNjcmlwdE9iamVjdENsYXNzKSkKQEAgLTI4Myw2
ICszMDAsMTYgQEAgYm9vbCBXZWJCaW5kaW5nczo6Z2V0UmFuZ2UoTlBPYmplY3QqIHJhbmdlLCBX
ZWJSYW5nZSogd2ViUmFuZ2UpCiAjZW5kaWYKIH0KIAorYm9vbCBXZWJCaW5kaW5nczo6Z2V0QXJy
YXlCdWZmZXIoTlBPYmplY3QqIGFycmF5QnVmZmVyLCBXZWJBcnJheUJ1ZmZlciogd2ViQXJyYXlC
dWZmZXIpCit7CisjaWYgVVNFKFY4KQorICAgIHJldHVybiBnZXRBcnJheUJ1ZmZlckltcGwoYXJy
YXlCdWZmZXIsIHdlYkFycmF5QnVmZmVyKTsKKyNlbHNlCisgICAgLy8gTm90IHN1cHBvcnRlZCBv
biBvdGhlciBwb3J0cyAoSlNDLCBldGMpLgorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorfQor
CiBib29sIFdlYkJpbmRpbmdzOjpnZXRBcnJheUJ1ZmZlclZpZXcoTlBPYmplY3QqIGFycmF5QnVm
ZmVyVmlldywgV2ViQXJyYXlCdWZmZXJWaWV3KiB3ZWJBcnJheUJ1ZmZlclZpZXcpCiB7CiAjaWYg
VVNFKFY4KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>