<?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>32114</bug_id>
          
          <creation_ts>2009-12-03 04:04:01 -0800</creation_ts>
          <short_desc>Multitouch DOM event</short_desc>
          <delta_ts>2009-12-27 19:25:08 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>32485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonni Rainisto">jonni.rainisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>benm</cc>
    
    <cc>bolsinga</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>hausmann</cc>
    
    <cc>hyatt</cc>
    
    <cc>jonni.rainisto</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>mrowe</cc>
    
    <cc>pknight</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xhiloh</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168349</commentid>
    <comment_count>0</comment_count>
      <attachid>44226</attachid>
    <who name="Jonni Rainisto">jonni.rainisto</who>
    <bug_when>2009-12-03 04:04:01 -0800</bug_when>
    <thetext>Created attachment 44226
Platform touch event

Platform independent touch events with refence implementation to Qt4.6 backend. Documentation to IDL file can be found here http://www.starlight-webkit.org/documentation/multitouch

Working pre-compiled binaries for testing the multitouch dom events with supported Windows 7 hardware can be found here: http://www.opensource.nokia.com/Starlight

Layout test, manipulate and gesture engine patches will be added soon to this bug or followup bug report.

Patches have been divided in smaller chunks, so they can be reviewed better. Patches need to be applied in right order, 1 + 12 + 13.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168350</commentid>
    <comment_count>1</comment_count>
      <attachid>44227</attachid>
    <who name="Jonni Rainisto">jonni.rainisto</who>
    <bug_when>2009-12-03 04:05:18 -0800</bug_when>
    <thetext>Created attachment 44227
touch12-touch-dom-event</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168351</commentid>
    <comment_count>2</comment_count>
      <attachid>44228</attachid>
    <who name="Jonni Rainisto">jonni.rainisto</who>
    <bug_when>2009-12-03 04:06:37 -0800</bug_when>
    <thetext>Created attachment 44228
touch13-qtimplementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168352</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 04:08:32 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44226 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168353</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 04:08:51 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44228 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168354</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 04:09:10 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44227 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168364</commentid>
    <comment_count>6</comment_count>
      <attachid>44226</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-12-03 04:49:12 -0800</bug_when>
    <thetext>Comment on attachment 44226
Platform touch event


&gt; +    bool areStates(PlatformTouchState state) const

I found this method a bit strange. areStates? I guess it is meant for knowing whether all points are in the same state?

What about something more descriptive like allTouchPointsAreInState() or allHasState()?

&gt; +    bool hasState(PlatformTouchState state) const

someHasState()?

Maybe combine the two methods and use an enum to separate them?

&gt; +    PlatformTouchMoved,
&gt; +    PlatformTouchStationary

Stationary means that it didn&apos;t change ? or ?


&gt; +    float pressure() const;

is this in percentage?

&gt; +    IntRect rect() const;

is this the boundingRect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168365</commentid>
    <comment_count>7</comment_count>
      <attachid>44228</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-12-03 04:53:22 -0800</bug_when>
    <thetext>Comment on attachment 44228
touch13-qtimplementation


&gt; +#if PLATFORM(QT)
&gt; +    // Qt implementation of touch point
&gt; +    QTouchEvent::TouchPoint m_touchPoint;
&gt; +#endif

That is a kind of useless comment :-)

Btw, you miss an implementation for QGraphicsWebView it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168375</commentid>
    <comment_count>8</comment_count>
      <attachid>44234</attachid>
    <who name="Jonni Rainisto">jonni.rainisto</who>
    <bug_when>2009-12-03 05:50:20 -0800</bug_when>
    <thetext>Created attachment 44234
touch12-touch-dom-event

fix to original patch which was missing some files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168377</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-03 05:52:26 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44234 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168400</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-03 07:25:38 -0800</bug_when>
    <thetext>From what I can see, there are three versions of WebKit out there on devices today that support handling touch events with Javascript: The version of WebKit that comes with the iPhone, the version that comes with Android (2.0/eclair in particular) and the version that Palm ships in WebOS.

As far as I can see they are basically compatible with each other, but neither implementation is upstream here on webkit.org.

However there is web content out there today that relies on these interfaces, and given the popularity of these platforms I&apos;m inclined to say that these interfaces have become a de-facto standard.

I believe touch interfaces for inclusion in webkit.org should be compatible (identical?) to this &quot;standard&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168401</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-03 07:27:11 -0800</bug_when>
    <thetext>A slightly more Qt implementation specific comment: The touch event interface in Qt (QTouchEvent) is based on the concept that one event provides information of all the touch points.

It appears that the aforementioned existing JS interface for touch interaction use the same model, therefore making the mapping from QTouchEvent to the JS interface a really simple translation of data structures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170203</commentid>
    <comment_count>12</comment_count>
      <attachid>44570</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-09 14:55:18 -0800</bug_when>
    <thetext>Created attachment 44570
Added interfaces for touch event support in JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170205</commentid>
    <comment_count>13</comment_count>
      <attachid>44571</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-09 14:55:57 -0800</bug_when>
    <thetext>Created attachment 44571
https://bugs.webkit.org/show_bug.cgi?id=32114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170209</commentid>
    <comment_count>14</comment_count>
      <attachid>44572</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-09 14:57:41 -0800</bug_when>
    <thetext>Created attachment 44572
https://bugs.webkit.org/show_bug.cgi?id=32114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170210</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-09 14:59:10 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44570 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170660</commentid>
    <comment_count>16</comment_count>
      <attachid>44570</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2009-12-11 02:25:16 -0800</bug_when>
    <thetext>Comment on attachment 44570
Added interfaces for touch event support in JavaScript.

Looks good, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170701</commentid>
    <comment_count>17</comment_count>
      <attachid>44676</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-11 04:58:10 -0800</bug_when>
    <thetext>Created attachment 44676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170703</commentid>
    <comment_count>18</comment_count>
      <attachid>44572</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-12-11 04:58:51 -0800</bug_when>
    <thetext>Comment on attachment 44572
https://bugs.webkit.org/show_bug.cgi?id=32114

Obsoleted by new patch that has a merge conflict with the mac/Skipped file fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170706</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-11 05:01:04 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44676 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170722</commentid>
    <comment_count>20</comment_count>
      <attachid>44570</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-11 06:08:05 -0800</bug_when>
    <thetext>Comment on attachment 44570
Added interfaces for touch event support in JavaScript.

Clearing flags on attachment: 44570

Committed r51981: &lt;http://trac.webkit.org/changeset/51981&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170725</commentid>
    <comment_count>21</comment_count>
      <attachid>44676</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-11 06:15:53 -0800</bug_when>
    <thetext>Comment on attachment 44676
Patch

Clearing flags on attachment: 44676

Committed r51982: &lt;http://trac.webkit.org/changeset/51982&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170726</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-11 06:16:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44226</attachid>
            <date>2009-12-03 04:04:01 -0800</date>
            <delta_ts>2009-12-09 14:54:18 -0800</delta_ts>
            <desc>Platform touch event</desc>
            <filename>touch1-platformtouchevent</filename>
            <type>text/plain</type>
            <size>4221</size>
            <attacher name="Jonni Rainisto">jonni.rainisto</attacher>
            
              <data encoding="base64">ZGlmZiAtciAyYjI4NzNmMDQ0MWUgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQu
aAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtVG91Y2hFdmVudC5oCU1vbiBOb3YgMjMgMTE6MDE6MTEgMjAw
OSArMDIwMApAQCAtMCwwICsxLDc4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFBs
YXRmb3JtVG91Y2hFdmVudF9oCisjZGVmaW5lIFBsYXRmb3JtVG91Y2hFdmVudF9oCisKKyNpbmNs
dWRlICJQbGF0Zm9ybVRvdWNoUG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFBsYXRmb3JtVG91Y2hFdmVudCB7CitwdWJsaWM6CisKKyAgICBQbGF0Zm9ybVRvdWNoRXZl
bnQoKSB7fQorCisgICAgdmlydHVhbCB+UGxhdGZvcm1Ub3VjaEV2ZW50KCk7CisKKyAgICBjb25z
dCBWZWN0b3I8UGxhdGZvcm1Ub3VjaFBvaW50PiYgdG91Y2hQb2ludHMoKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fdG91Y2hQb2ludHM7CisgICAgfQorCisgICAgYm9vbCBzaGlmdEtl
eSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hpZnRLZXk7IH0KKyAgICBib29sIGN0cmxLZXkoKSBjb25z
dCB7IHJldHVybiBtX2N0cmxLZXk7IH0KKyAgICBib29sIGFsdEtleSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWx0S2V5OyB9CisgICAgYm9vbCBtZXRhS2V5KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhS2V5
OyB9CisgICAgZG91YmxlIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9
CisKKyAgICBib29sIGFyZVN0YXRlcyhQbGF0Zm9ybVRvdWNoU3RhdGUgc3RhdGUpIGNvbnN0Cisg
ICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdG91Y2hQb2ludHMuc2l6ZSgpOyBp
KyspCisgICAgICAgICAgICBpZiAobV90b3VjaFBvaW50c1tpXS5zdGF0ZSgpICE9IHN0YXRlKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBib29sIGhhc1N0YXRlKFBsYXRmb3JtVG91Y2hTdGF0ZSBzdGF0ZSkgY29uc3QK
KyAgICB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV90b3VjaFBvaW50cy5zaXplKCk7
IGkrKykKKyAgICAgICAgICAgIGlmIChtX3RvdWNoUG9pbnRzW2ldLnN0YXRlKCkgPT0gc3RhdGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworcHJpdmF0ZToKKworICAgIFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+IG1fdG91
Y2hQb2ludHM7CisgICAgYm9vbCBtX3NoaWZ0S2V5OworICAgIGJvb2wgbV9jdHJsS2V5OworICAg
IGJvb2wgbV9hbHRLZXk7CisgICAgYm9vbCBtX21ldGFLZXk7CisgICAgZG91YmxlIG1fdGltZXN0
YW1wOworfTsKKworfQorCisjZW5kaWYgLy8gUGxhdGZvcm1Ub3VjaEV2ZW50X2gKZGlmZiAtciAy
YjI4NzNmMDQ0MWUgV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAotLS0gL2Rl
di9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oCU1vbiBOb3YgMjMgMTE6MDE6MTEgMjAwOSArMDIwMApA
QCAtMCwwICsxLDYxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFBsYXRmb3JtVG91
Y2hQb2ludF9oCisjZGVmaW5lIFBsYXRmb3JtVG91Y2hQb2ludF9oCisKKyNpbmNsdWRlICJJbnRQ
b2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVt
IFBsYXRmb3JtVG91Y2hTdGF0ZSB7IAorICAgIFBsYXRmb3JtVG91Y2hSZWxlYXNlZCwKKyAgICBQ
bGF0Zm9ybVRvdWNoUHJlc3NlZCwKKyAgICBQbGF0Zm9ybVRvdWNoTW92ZWQsCisgICAgUGxhdGZv
cm1Ub3VjaFN0YXRpb25hcnkKK307CisKK2NsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKKworY2xh
c3MgUGxhdGZvcm1Ub3VjaFBvaW50IHsKK3B1YmxpYzoKKworICAgIFBsYXRmb3JtVG91Y2hQb2lu
dCgpIHt9CisKKyAgICBpbnQgaWQoKSBjb25zdDsKKyAgICBQbGF0Zm9ybVRvdWNoU3RhdGUgc3Rh
dGUoKSBjb25zdDsKKyAgICBjb25zdCBJbnRQb2ludCBzY3JlZW5Qb3MoKSBjb25zdDsKKyAgICBj
b25zdCBJbnRQb2ludCBwb3MoKSBjb25zdDsKKyAgICBmbG9hdCBwcmVzc3VyZSgpIGNvbnN0Owor
ICAgIEludFJlY3QgcmVjdCgpIGNvbnN0OworICAgIAorICAgIHZvaWQgc2V0U3RhdGUoY29uc3Qg
UGxhdGZvcm1Ub3VjaFN0YXRlKTsKKworcHJpdmF0ZToKKworICAgIGZyaWVuZCBjbGFzcyBQbGF0
Zm9ybVRvdWNoRXZlbnQ7Cit9OworCit9IAorCisjZW5kaWYgLy8gUGxhdGZvcm1Ub3VjaFBvaW50
X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44227</attachid>
            <date>2009-12-03 04:05:18 -0800</date>
            <delta_ts>2009-12-03 05:50:20 -0800</delta_ts>
            <desc>touch12-touch-dom-event</desc>
            <filename>touch12-touch-dom-event</filename>
            <type>text/plain</type>
            <size>15650</size>
            <attacher name="Jonni Rainisto">jonni.rainisto</attacher>
            
              <data encoding="base64">ZGlmZiAtciA1ODQ1N2RiMjg3YTggV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisr
KyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCVR1ZSBEZWMgMDEgMTg6MDI6MjQgMjAwOSAr
MDIwMApAQCAtMiw2ICsyLDcgQEAKIDwhLS0KIAogQ29weXJpZ2h0IChDKSAyMDA3IEtldmluIE9s
bGl2aWVyLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0NvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKIAogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQwOSw2ICs0MTAsNyBAQAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTVGV4dC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRFdmVudC5j
cHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRNZXRyaWNzLmNwcAorICAg
ICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVG91Y2hFdmVudC5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RyZWVXYWxrZXIuY3BwCiAgICAgICAgIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNVSUV2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTUxMCw2ICs1MTIsNyBAQAogICAgICAgICBkb20vVGFn
Tm9kZUxpc3QuY3BwCiAgICAgICAgIGRvbS9UZXh0LmNwcAogICAgICAgICBkb20vVGV4dEV2ZW50
LmNwcAorICAgICAgICBkb20vVG91Y2hFdmVudC5jcHAKICAgICAgICAgZG9tL1RyYW5zZm9ybVNv
dXJjZUxpYnhzbHQuY3BwCiAgICAgICAgIGRvbS9UcmF2ZXJzYWwuY3BwCiAgICAgICAgIGRvbS9U
cmVlV2Fsa2VyLmNwcApkaWZmIC1yIDU4NDU3ZGIyODdhOCBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5j
cHAJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudEN1c3RvbS5jcHAJVHVlIERlYyAwMSAxODowMjoyNCAyMDA5ICswMjAwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc2LDYgKzc3LDExIEBACiAjaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShUT1VDSF9HRVNUVVJFUykKKyNpbmNsdWRlICJKU1RvdWNoRXZlbnQu
aCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA5LDYgKzExNSwxMCBAQAogICAgICAgICBl
bHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU1ZHWm9vbUV2ZW50
LCBldmVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCisgICAgICAgIGVs
c2UgaWYgKGV2ZW50LT5pc1RvdWNoRXZlbnQoKSkKKyAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVB
VEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVG91Y2hFdmVudCwgZXZl
bnQpOworI2VuZGlmCiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQo
KSkKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25FdmVudCwgZXZlbnQpOwogICAgICAgICBlbHNlCmRp
ZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAotLS0gYS9XZWJDb3JlL2Rv
bS9FdmVudC5jcHAJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcAlUdWUgRGVjIDAxIDE4OjAyOjI0IDIwMDkgKzAyMDAKQEAgLTMsNiArMyw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgVG9iaWFzIEFudG9uIChhbnRvbkBzdHVkLmZiaS5m
aC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2Ft
LndlaW5pZ0BnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xODEsNyArMTgyLDE0IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2Vu
ZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCitib29sIEV2ZW50Ojppc1Rv
dWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29s
IEV2ZW50OjpzdG9yZXNSZXN1bHRBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC1yIDU4NDU3ZGIyODdhOCBXZWJDb3JlL2RvbS9FdmVudC5oCi0tLSBhL1dlYkNvcmUv
ZG9tL0V2ZW50LmgJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50LmgJVHVlIERlYyAwMSAxODowMjoyNCAyMDA5ICswMjAwCkBAIC0zLDYgKzMsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDAxIFRvYmlhcyBBbnRvbiAoYW50b25Ac3R1ZC5mYmkuZmgt
ZGFybXN0YWR0LmRlKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTI1LDcgKzEyNiwxMCBAQAogI2lmIEVOQUJMRShXT1JL
RVJTKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFcnJvckV2ZW50KCkgY29uc3Q7CiAjZW5kaWYK
LSAgICAgICAgCisjaWYgRU5BQkxFKFRPVUNIX0dFU1RVUkVTKQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNUb3VjaEV2ZW50KCkgY29uc3Q7CisjZW5kaWYKKwogICAgICAgICBib29sIHByb3BhZ2F0
aW9uU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGFnYXRpb25TdG9wcGVkOyB9CiAKICAg
ICAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UHJl
dmVudGVkOyB9CmRpZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAot
LS0gYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICsw
MjAwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAlUdWUgRGVjIDAxIDE4OjAyOjI0IDIw
MDkgKzAyMDAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBK
b24gU2hpZXIgKGpzaGllckBpYXN0YXRlLmVkdSkKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQzLDYgKzE0NCwxMCBAQAogICAgIFwKICAgICBtYWNybyh3ZWJraXRUcmFuc2l0
aW9uRW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHRvdWNoZG93bikgXAorICAgIG1hY3JvKHRvdWNo
dXApIFwKKyAgICBtYWNybyh0b3VjaG1vdmUpIFwKKyAgICBcCiAgICAgbWFjcm8ob3JpZW50YXRp
b25jaGFuZ2UpIFwKICAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICmRp
ZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvZG9tL05vZGUuaAotLS0gYS9XZWJDb3JlL2RvbS9O
b2RlLmgJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUvZG9tL05v
ZGUuaAlUdWUgRGVjIDAxIDE4OjAyOjI0IDIwMDkgKzAyMDAKQEAgLTQsNiArNCw3IEBACiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1v
YmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNv
bS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU2LDYgKzU3LDkgQEAKIGNs
YXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNs
YXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCitjbGFz
cyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CisjZW5kaWYKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFz
cyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIFJlbmRlckFyZW5hOwpAQCAtNTQxLDcg
KzU0NSw5IEBACiAgICAgICAgIGJvb2wgaXNTaW11bGF0ZWQsIE5vZGUqIHJlbGF0ZWRUYXJnZXQs
IFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAgICAgdm9pZCBkaXNwYXRjaFNp
bXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENs
aWNrKFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91c2VFdmVu
dHMgPSBmYWxzZSwgYm9vbCBzaG93UHJlc3NlZExvb2sgPSB0cnVlKTsKLQorI2lmIEVOQUJMRShU
T1VDSF9HRVNUVVJFUykKKyAgICBib29sIGRpc3BhdGNoVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNo
RXZlbnQmKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIApkaWZmIC1yIDU4NDU3ZGIy
ODdhOCBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCi0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JVHVlIERlYyAwMSAxODowMjoy
NCAyMDA5ICswMjAwCkBAIC0xOTIsNiArMTkyLDkgQEAKIG9uc3RvcmFnZQogb25zdXNwZW5kCiBv
bnN1Ym1pdAorb250b3VjaGRvd24KK29udG91Y2h1cAorb250b3VjaG1vdmUKIG9udGltZXVwZGF0
ZQogb251bmxvYWQKIG9udm9sdW1lY2hhbmdlCmRpZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAlU
dWUgRGVjIDAxIDExOjQzOjU1IDIwMDkgKzAyMDAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAlUdWUgRGVjIDAxIDE4OjAyOjI0IDIwMDkgKzAyMDAKQEAgLTMsNiArMyw3IEBACiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxOCw2ICsyMTksMTIgQEAKICAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9u
RW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ud2Via2l0dHJhbnNpdGlvbmVuZEF0dHIpIHsK
ICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0VHJh
bnNpdGlvbkVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIp
KTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNoZG93bkF0dHIpIHsKKyAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hkb3duRXZl
bnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworICAgIH0gZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9udG91Y2h1cEF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2h1cEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBvbnRvdWNobW92ZUF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uaW5wdXRB
dHRyKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmlu
cHV0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uaW52YWxpZEF0dHIpIHsKZGlmZiAtciA1ODQ1
N2RiMjg3YTggV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwKLS0tIGEvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaWRsCVR1ZSBEZWMgMDEgMTg6MDI6MjQgMjAwOSArMDIwMApAQCAtMSw1
ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NjQsNiArNTY1LDkgQEAKICAgICAgICAgYXR0cmlidXRlIFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnRDb25zdHJ1Y3RvciBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Owog
ICAgICAgICBhdHRyaWJ1dGUgU1ZHRkVUdXJidWxlbmNlRWxlbWVudENvbnN0cnVjdG9yIFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQ7CiAjZW5kaWYKKworI2lmIEVOQUJMRV9UT1VDSF9HRVNUVVJFUwor
ICAgICAgICBhdHRyaWJ1dGUgVG91Y2hFdmVudENvbnN0cnVjdG9yIFRvdWNoRXZlbnQ7CiAjZW5k
aWYKIAogI2VuZGlmIC8vIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkKZGlmZiAtciA1ODQ1
N2RiMjg3YTggV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKLS0tIGEvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCVR1ZSBEZWMgMDEgMTg6MDI6MjQgMjAwOSArMDIw
MApAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc0LDYgKzc1LDExIEBACiAjaW5jbHVkZSAi
U1ZHVXNlRWxlbWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCisj
aW5jbHVkZSAiUGxhdGZvcm1Ub3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgor
I2VuZGlmIC8vIFRPVUNIX0dFU1RVUkVTCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTE4ODgsNiArMTg5NCwyMiBAQAogICAgIHJldHVybiBl
LmlzQWNjZXB0ZWQoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9HRVNUVVJFUykKKy8qIQorICog
XGJyaWVmIEhhbmRsZSBhIHRvdWNoIGV2ZW50CisgKgorICogSGFuZGxlcyBhIHRvdWNoIGV2ZW50
IGJ5IGNhbGxpbmcgYXBwcm9wcmlhdGUgaGFuZGxlciBmdW5jdGlvbnMuCisgKiBccmV0dXJuIHdo
ZXRoZXIgdGhlIGRlZmF1bHQgbWFuaXB1bGF0ZSBoYW5kbGVyIHNob3VsZCBiZSBjYWxsZWQgKGZv
ciBleGFtcGxlLCBzY3JvbGx6b29tKSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgbWFuaXB1bGF0ZSB0
b2xkIG5vLCBvciB3aGV0aGVyIGhvdmVybW9kZSBpcyBvbiwgb3Igd2hldGhlciBhIHNjcm9sbGJh
ciB3YXMgaGl0LgorICogXHBhcmFtIGV2ZW50IHRoZSB0b3VjaCBldmVudC4KKyAqIFxzZWUgaGFu
ZGxlVG91Y2hFdmVudAorICovCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2goY29uc3Qg
UGxhdGZvcm1Ub3VjaEV2ZW50JiBldmVudCkKK3sKKyAgICBoYW5kbGVUb3VjaEV2ZW50KGV2ZW50
KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiBib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKQEAgLTI1MzksNCArMjU2MSwxMTYgQEAKICAgICB9CiB9
CiAKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCisvKiEKKyAqIFxicmllZiBEaXNwYXRjaCBy
YXcgdG91Y2ggZXZlbnRzCisgKgorICogRGlzcGF0Y2hlcyByYXcgdG91Y2ggZXZlbnRzIHRvIERP
TSBlbGVtZW50cywKKyAqIG9uZSBwZXIgdG91Y2hwb2ludCBpbiB0aGUgdG91Y2ggZXZlbnQuCisg
KiBccGFyYW0gZXZlbnQgdGhlIHRvdWNoIGV2ZW50CisgKi8KK3ZvaWQgRXZlbnRIYW5kbGVyOjpo
YW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAg
Y29uc3QgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4mIHBzID0gZXZlbnQudG91Y2hQb2ludHMo
KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
aWYgKHBzW2ldLnN0YXRlKCkgPT0gUGxhdGZvcm1Ub3VjaFN0YXRpb25hcnkpIHsKKyAgICAgICAg
ICAgIC8vIERvbid0IGRpc3BhdGNoIGFuIGV2ZW50IGZvciBhIHN0YXRpb25hcnkgdG91Y2ggcG9p
bnQKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEludFBvaW50IHAg
PSBwc1tpXS5wb3MoKTsKKyAgICAgICAgSW50UG9pbnQgZnJhbWVQb2ludCA9CisgICAgICAgICAg
ICBtX2ZyYW1lLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMocCk7CisKKyAgICAgICAgSW50UG9p
bnQgY29udGVudHNQb3M7CisgICAgICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLT52aWV3KCkpCisgICAgICAgICAgICBjb250ZW50c1BvcyA9IHZpZXctPndpbmRv
d1RvQ29udGVudHMocCk7CisKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0
UmVzdWx0QXRQb2ludCgKKyAgICAgICAgICAgIGZyYW1lUG9pbnQsIC8qYWxsb3dTaGFkb3dDb250
ZW50Ki8gZmFsc2UpOworCisgICAgICAgIE5vZGUqIHRvdWNoRXZlbnRUYXJnZXQgPSByZXN1bHQu
aW5uZXJOb2RlKCk7CisKKyAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBub2RlIGlzIGEgdGV4dCBu
b2RlLCBkaXNwYXRjaCBvbiB0aGUgcGFyZW50IG5vZGUsCisgICAgICAgIC8vIGp1c3QgbGlrZSBp
biBtb3VzZSBldmVudHMKKyAgICAgICAgaWYgKHRvdWNoRXZlbnRUYXJnZXQtPmlzVGV4dE5vZGUo
KSkKKyAgICAgICAgICAgIHRvdWNoRXZlbnRUYXJnZXQgPSB0b3VjaEV2ZW50VGFyZ2V0LT5wYXJl
bnROb2RlKCk7CisKKyAgICAgICAgQXRvbWljU3RyaW5nKiBldmVudE5hbWU7CisKKyAgICAgICAg
c3dpdGNoIChwc1tpXS5zdGF0ZSgpKSB7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Ub3VjaFByZXNz
ZWQ6CisgICAgICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRvdWNoZG93bkV2ZW50
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Ub3VjaFJlbGVhc2Vk
OgorICAgICAgICAgICAgZXZlbnROYW1lID0gJmV2ZW50TmFtZXMoKS50b3VjaHVwRXZlbnQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQbGF0Zm9ybVRvdWNoTW92ZWQ6CisgICAg
ICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBldmVudE5hbWUgPSAm
ZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKworICAgICAgICAvLyBQYWdlIFgvWSBwb3NpdGlvbnMgYW5kIHRoZSBwYWdlIHdpZHRoL2hl
aWdodCB3aWxsIGJlIGFkanVzdGVkCisgICAgICAgIC8vIGlmIHRoZSBmcmFtZSBpcyB6b29tZWQg
aW4sIHNpbWlsYXIgdG8gTm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50CisgICAgICAgIGludCBhZGp1
c3RlZENsaWVudFggPSBmcmFtZVBvaW50LngoKTsKKyAgICAgICAgaW50IGFkanVzdGVkQ2xpZW50
WSA9IGZyYW1lUG9pbnQueSgpOworICAgICAgICBpbnQgYWRqdXN0ZWRXaWR0aCA9IHBzW2ldLnJl
Y3QoKS53aWR0aCgpOworICAgICAgICBpbnQgYWRqdXN0ZWRIZWlnaHQgPSBwc1tpXS5yZWN0KCku
aGVpZ2h0KCk7CisKKyAgICAgICAgaW50IHBhZ2VYID0gY29udGVudHNQb3MueCgpOworICAgICAg
ICBpbnQgcGFnZVkgPSBjb250ZW50c1Bvcy55KCk7CisgICAgICAgIGludCBhZGp1c3RlZFBhZ2VY
ID0gcGFnZVg7CisgICAgICAgIGludCBhZGp1c3RlZFBhZ2VZID0gcGFnZVk7CisKKyAgICAgICAg
ZmxvYXQgcGFnZVpvb20gPSBtX2ZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgICAgICBpZiAo
cGFnZVpvb20gIT0gMS4wZikgeworICAgICAgICAgICAgYWRqdXN0ZWRDbGllbnRYID0gbHJvdW5k
ZihhZGp1c3RlZENsaWVudFggLyBwYWdlWm9vbSk7CisgICAgICAgICAgICBhZGp1c3RlZENsaWVu
dFkgPSBscm91bmRmKGFkanVzdGVkQ2xpZW50WSAvIHBhZ2Vab29tKTsKKworICAgICAgICAgICAg
aWYgKG1fZnJhbWUtPnZpZXcoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAg
ICAgIGFkanVzdGVkQ2xpZW50WSAtPSAoaW50KShtX2ZyYW1lLT52aWV3KCktPmhvcml6b250YWxT
Y3JvbGxiYXIoKS0+dmFsdWUoKSAvIHBhZ2Vab29tKTsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1l
LT52aWV3KCktPnZlcnRpY2FsU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRD
bGllbnRZIC09IChpbnQpKG1fZnJhbWUtPnZpZXcoKS0+dmVydGljYWxTY3JvbGxiYXIoKS0+dmFs
dWUoKSAvIHBhZ2Vab29tKTsKKworICAgICAgICAgICAgYWRqdXN0ZWRQYWdlWCA9IGxyb3VuZGYo
cGFnZVggLyBwYWdlWm9vbSk7CisgICAgICAgICAgICBhZGp1c3RlZFBhZ2VZID0gbHJvdW5kZihw
YWdlWSAvIHBhZ2Vab29tKTsKKworICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IGxyb3VuZGYo
cHNbaV0ucmVjdCgpLndpZHRoKCkgLyBwYWdlWm9vbSk7CisgICAgICAgICAgICBhZGp1c3RlZEhl
aWdodCA9IGxyb3VuZGYocHNbaV0ucmVjdCgpLmhlaWdodCgpIC8gcGFnZVpvb20pOyAgICAgICAg
ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKS0+
aG9yaXpvbnRhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgICAgIGFkanVzdGVkQ2xpZW50WCAt
PSBtX2ZyYW1lLT52aWV3KCktPmhvcml6b250YWxTY3JvbGxiYXIoKS0+dmFsdWUoKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgKG1fZnJhbWUtPnZpZXcoKS0+dmVydGljYWxTY3JvbGxi
YXIoKSkKKyAgICAgICAgICAgICAgICBhZGp1c3RlZENsaWVudFkgLT0gbV9mcmFtZS0+dmlldygp
LT52ZXJ0aWNhbFNjcm9sbGJhcigpLT52YWx1ZSgpOworICAgICAgICB9CisKKyAgICAgICAgUmVm
UHRyPFRvdWNoRXZlbnQ+IGRvbVRvdWNoRXZlbnQgPSBUb3VjaEV2ZW50OjpjcmVhdGUoCisgICAg
ICAgICAgICAqZXZlbnROYW1lLAorICAgICAgICAgICAgdHJ1ZSwgIC8vIGNhbkJ1YmJsZQorICAg
ICAgICAgICAgZmFsc2UsIC8vIGNhbmNlbGFibGUKKyAgICAgICAgICAgIHRvdWNoRXZlbnRUYXJn
ZXQtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksCisgICAgICAgICAgICAwLAorICAgICAgICAg
ICAgcHNbaV0uaWQoKSwKKyAgICAgICAgICAgIHBzW2ldLnNjcmVlblBvcygpLngoKSwgcHNbaV0u
c2NyZWVuUG9zKCkueSgpLAorICAgICAgICAgICAgYWRqdXN0ZWRDbGllbnRYLCBhZGp1c3RlZENs
aWVudFksCisgICAgICAgICAgICBhZGp1c3RlZFBhZ2VYLCBhZGp1c3RlZFBhZ2VZLAorICAgICAg
ICAgICAgZmFsc2UsIC8vIGN0cmwKKyAgICAgICAgICAgIGZhbHNlLCAvLyBhbHQKKyAgICAgICAg
ICAgIGZhbHNlLCAvLyBzaGlmdAorICAgICAgICAgICAgZmFsc2UsIC8vIG1ldGEKKyAgICAgICAg
ICAgIHBzW2ldLnByZXNzdXJlKCksCisgICAgICAgICAgICBhZGp1c3RlZFdpZHRoLAorICAgICAg
ICAgICAgYWRqdXN0ZWRIZWlnaHQsCisgICAgICAgICAgICAwKTsKKworICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICAgICAgdG91Y2hFdmVudFRhcmdldC0+ZGlzcGF0Y2hFdmVudChk
b21Ub3VjaEV2ZW50LCBlYyk7CisgICAgfQogfQorI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9HRVNU
VVJFUykKKworfQpkaWZmIC1yIDU4NDU3ZGIyODdhOCBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCVR1ZSBEZWMgMDEgMTE6NDM6NTUg
MjAwOSArMDIwMAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJVHVlIERlYyAwMSAx
ODowMjoyNCAyMDA5ICswMjAwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDcgKzYyLDExIEBACiBj
bGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiBjbGFzcyBUZXh0RXZlbnQ7CiBjbGFzcyBXaWRnZXQ7
Ci0gICAgCisKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCitjbGFzcyBQbGF0Zm9ybVRvdWNo
RXZlbnQ7CisjZW5kaWYKKwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiBleHRlcm4gY29uc3Qg
aW50IExpbmtEcmFnSHlzdGVyZXNpczsKIGV4dGVybiBjb25zdCBpbnQgSW1hZ2VEcmFnSHlzdGVy
ZXNpczsKQEAgLTEzOSw2ICsxNDQsMTAgQEAKICAgICBib29sIGhhbmRsZU1vdXNlUmVsZWFzZUV2
ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGJvb2wgaGFuZGxlV2hlZWxFdmVu
dChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAorI2lmIEVOQUJMRShUT1VDSF9HRVNUVVJFUykKKyAg
ICBib29sIGhhbmRsZVRvdWNoKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50
KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogI2VuZGlmCkBAIC0zOTgsNiArNDA3LDExIEBA
CiAgICAgYm9vbCBtX3NlbmRpbmdFdmVudFRvU3VidmlldzsKICAgICBpbnQgbV9hY3RpdmF0aW9u
RXZlbnROdW1iZXI7CiAjZW5kaWYKKworI2lmIEVOQUJMRShUT1VDSF9HRVNUVVJFUykKKyAgICB2
b2lkIGhhbmRsZVRvdWNoRXZlbnQoY29uc3QgUGxhdGZvcm1Ub3VjaEV2ZW50Jik7CisjZW5kaWYK
KwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44228</attachid>
            <date>2009-12-03 04:06:37 -0800</date>
            <delta_ts>2009-12-09 14:54:37 -0800</delta_ts>
            <desc>touch13-qtimplementation</desc>
            <filename>touch13-qtimplementation</filename>
            <type>text/plain</type>
            <size>14846</size>
            <attacher name="Jonni Rainisto">jonni.rainisto</attacher>
            
              <data encoding="base64">ZGlmZiAtciA4YWEwNGVjYjMzYTggV2ViQ29yZS9XZWJDb3JlLnBybwotLS0gYS9XZWJDb3JlL1dl
YkNvcmUucHJvCVR1ZSBEZWMgMDEgMTg6MDI6MjUgMjAwOSArMDIwMAorKysgYi9XZWJDb3JlL1dl
YkNvcmUucHJvCVR1ZSBEZWMgMDEgMTg6MjM6NDIgMjAwOSArMDIwMApAQCAtMTQxLDYgKzE0MSw5
IEBACiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hIVE1MTVA9Lik6IERFRklORVMgKz0gRU5B
QkxFX1hIVE1MTVA9MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBR1JJRD0uKTogREVG
SU5FUyArPSBFTkFCTEVfREFUQUdSSUQ9MQogCisjIFR1cm4gb24gVE9VQ0hfR0VTVFVSRVMgc3Vw
cG9ydCBpZiBRVF9OT19UT1VDSEVWRU5UIGlzIG5vdCBkZWZpbmVkCishY29udGFpbnMoREVGSU5F
UywgUVRfTk9fVE9VQ0hFVkVOVCk6IERFRklORVMgKz0gRU5BQkxFX1RPVUNIX0dFU1RVUkVTPTEK
KwogIyBTVkcgc3VwcG9ydAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MCkgewogICAg
ICFjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPS4pOiBERUZJTkVTICs9IEVOQUJMRV9TVkc9
MQpAQCAtMzM2MCw2ICszMzYzLDIxIEBACiAgICAgfQogfQogCitjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfVE9VQ0hfR0VTVFVSRVM9MSkgeworICAgIEhFQURFUlMgKz0gXAorICAgICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaCBcCisgICAgICAgIHBsYXRmb3JtL1BsYXRmb3JtVG91
Y2hFdmVudC5oIFwKKyAgICAgICAgZG9tL1RvdWNoRXZlbnQuaCBcCisKKyAgICBTT1VSQ0VTICs9
IFwKKyAgICAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwIFwKKyAgICAg
ICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwIFwKKyAgICAgICAgZG9tL1Rv
dWNoRXZlbnQuY3BwIFwKKworICAgIElETF9CSU5ESU5HUyArPSBcCisgICAgICAgIGRvbS9Ub3Vj
aEV2ZW50LmlkbCBcCit9CisKIENPTkZJRyhRVERJUl9idWlsZCk6aXNFcXVhbChRVF9NQUpPUl9W
RVJTSU9OLCA0KTpncmVhdGVyVGhhbihRVF9NSU5PUl9WRVJTSU9OLCA0KSB7CiAgICAgIyBzdGFy
dCB3aXRoIDQuNQogICAgICMgUmVtb3ZlIHRoZSBmb2xsb3dpbmcgMiBsaW5lcyBpZiB5b3Ugd2Fu
dCBkZWJ1ZyBpbmZvcm1hdGlvbiBpbiBXZWJDb3JlCmRpZmYgLXIgOGFhMDRlY2IzM2E4IFdlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50LmgKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoRXZlbnQuaAlUdWUgRGVjIDAxIDE4OjAyOjI1IDIwMDkgKzAyMDAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaAlUdWUgRGVjIDAxIDE4OjIzOjQy
IDIwMDkgKzAyMDAKQEAgLTI0LDYgKzI0LDkgQEAKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAorI2lmIFBMQVRGT1JNKFFUKQorY2xhc3Mg
UVRvdWNoRXZlbnQ7CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMiw2ICsz
NSwxMCBAQAogCiAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50KCkge30KIAorI2lmIFBMQVRGT1JNKFFU
KQorICAgIFBsYXRmb3JtVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCYpOworI2VuZGlmCisK
ICAgICB2aXJ0dWFsIH5QbGF0Zm9ybVRvdWNoRXZlbnQoKTsKIAogICAgIGNvbnN0IFZlY3RvcjxQ
bGF0Zm9ybVRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cygpIGNvbnN0CmRpZmYgLXIgOGFhMDRlY2Iz
M2E4IFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKLS0tIGEvV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAlUdWUgRGVjIDAxIDE4OjAyOjI1IDIwMDkgKzAy
MDAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoUG9pbnQuaAlUdWUgRGVjIDAx
IDE4OjIzOjQyIDIwMDkgKzAyMDAKQEAgLTI1LDYgKzI1LDkgQEAKICNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBQTEFURk9STShRVCkKKyNp
bmNsdWRlIDxxZXZlbnQuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUz
LDYgKzU2LDExIEBACiAKIHByaXZhdGU6CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICAvLyBRdCBp
bXBsZW1lbnRhdGlvbiBvZiB0b3VjaCBwb2ludAorICAgIFFUb3VjaEV2ZW50OjpUb3VjaFBvaW50
IG1fdG91Y2hQb2ludDsKKyNlbmRpZgorCiAgICAgZnJpZW5kIGNsYXNzIFBsYXRmb3JtVG91Y2hF
dmVudDsKIH07CiAKZGlmZiAtciA4YWEwNGVjYjMzYTggV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0
Zm9ybVRvdWNoRXZlbnRRdC5jcHAKLS0tIC9kZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5
NzAgKzAwMDAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoRXZlbnRRdC5j
cHAJVHVlIERlYyAwMSAxODoyMzo0MiAyMDA5ICswMjAwCkBAIC0wLDAgKzEsMTIzIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1U
b3VjaEV2ZW50LmgiCisKKyNpbmNsdWRlIDxRdC9xZXZlbnQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvKiEKKyAqIFxjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQKKyAqIFxicmllZiBRdCBw
bGF0Zm9ybSB0b3VjaCBldmVudCBjbGFzcy4KKyAqCisgKiBBbiBldmVudCBjbGFzcyBmb3IgdG91
Y2ggZXZlbnRzLiBDb250YWlucyAxIG9yIG1vcmUgdG91Y2ggcG9pbnRzLCBlYWNoCisgKiB3aXRo
IG9uZSBzdGF0ZSBvZiB0eXBlIFxhIFBsYXRmb3JtVG91Y2hTdGF0ZS4KKyAqIFxzZWUgUGxhdGZv
cm1Ub3VjaFBvaW50CisgKi8KKworLyohCisgKiBcYnJpZWYgQ29uc3RydWN0IGZyb20gYSBcYSBR
VG91Y2hFdmVudC4KKyAqLworUGxhdGZvcm1Ub3VjaEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQo
Y29uc3QgUVRvdWNoRXZlbnQmIGV2KQoreworICAgIGZvcmVhY2ggKGNvbnN0IFFUb3VjaEV2ZW50
OjpUb3VjaFBvaW50JiBxcCwgZXYudG91Y2hQb2ludHMoKSkgeworICAgICAgICBQbGF0Zm9ybVRv
dWNoUG9pbnQgcDsKKyAgICAgICAgcC5tX3RvdWNoUG9pbnQgPSBxcDsKKyAgICAgICAgbV90b3Vj
aFBvaW50cy5hcHBlbmQocCk7CisgICAgfQorCisgICAgbV9zaGlmdEtleSA9ICAoZXYubW9kaWZp
ZXJzKCkgJiBRdDo6U2hpZnRNb2RpZmllcik7CisgICAgbV9jdHJsS2V5ID0gKGV2Lm1vZGlmaWVy
cygpICYgUXQ6OkNvbnRyb2xNb2RpZmllcik7CisgICAgbV9hbHRLZXkgPSAoZXYubW9kaWZpZXJz
KCkgJiBRdDo6QWx0TW9kaWZpZXIpOworICAgIG1fbWV0YUtleSA9IChldi5tb2RpZmllcnMoKSAm
IFF0OjpNZXRhTW9kaWZpZXIpOworICAgIG1fdGltZXN0YW1wID0gV1RGOjpjdXJyZW50VGltZSgp
OworfQorCisvKiEKKyAqIFxicmllZiBEZXN0cnVjdCB0aGUgZXZlbnQuCisgKi8KK1BsYXRmb3Jt
VG91Y2hFdmVudDo6flBsYXRmb3JtVG91Y2hFdmVudCgpCit7CisgICAgbV90b3VjaFBvaW50cy5j
bGVhcigpOworfQorCisvKiEKKyAqIFxmbiBQbGF0Zm9ybVRvdWNoRXZlbnQ6OnRvdWNoUG9pbnRz
KCkKKyAqIFxicmllZiBPYnRhaW4gdGhlIHNldCBvZiB0b3VjaCBwb2ludHMgaW4gdGhpcyBldmVu
dC4KKyAqCisgKiBcc2VlIGFyZVN0YXRlcworICogXHNlZSBoYXNTdGF0ZQorICovCisKKy8qIQor
ICogXGZuIFBsYXRmb3JtVG91Y2hFdmVudDo6c2hpZnRLZXkoKQorICogXGJyaWVmIEdldCB0aGUg
c2hpZnQga2V5IHN0YXR1cy4KKyAqCisgKiBccmV0dXJuIGZsYWcgdGVsbGluZyB3aGV0aGVyIHRo
ZSBzaGlmdCBrZXkgaXMgcHJlc3NlZC4KKyAqLworCisvKiEKKyAqIFxmbiBQbGF0Zm9ybVRvdWNo
RXZlbnQ6OmN0cmxLZXkoKQorICogXGJyaWVmIEdldCB0aGUgY29udHJvbCBrZXkgc3RhdHVzLgor
ICoKKyAqIFxyZXR1cm4gZmxhZyB0ZWxsaW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wga2V5IGlzIHBy
ZXNzZWQuCisgKi8KKworLyohCisgKiBcZm4gUGxhdGZvcm1Ub3VjaEV2ZW50OjphbHRLZXkoKQor
ICogXGJyaWVmIEdldCB0aGUgYWx0IGtleSBzdGF0dXMuCisgKgorICogXHJldHVybiBmbGFnIHRl
bGxpbmcgd2hldGhlciB0aGUgYWx0IGtleSBpcyBwcmVzc2VkLgorICovCisKKy8qIQorICogXGZu
IFBsYXRmb3JtVG91Y2hFdmVudDo6bWV0YUtleSgpCisgKiBcYnJpZWYgR2V0IHRoZSBtZXRhIGtl
eSBzdGF0dXMuCisgKgorICogXHJldHVybiBmbGFnIHRlbGxpbmcgd2hldGhlciB0aGUgbWV0YSBr
ZXkgaXMgcHJlc3NlZC4KKyAqLworCisvKiEKKyAqIFxmbiBQbGF0Zm9ybVRvdWNoRXZlbnQ6OnRp
bWVzdGFtcCgpCisgKiBcYnJpZWYgR2V0IHRoZSBldmVudCdzIHRpbWVzdGFtcC4KKyAqCisgKiBc
cmV0dXJuIHRoZSBldmVudCdzIHRpbWVzdGFtcC4KKyAqLworCisvKiEKKyAqIFxmbiBQbGF0Zm9y
bVRvdWNoRXZlbnQ6OmFyZVN0YXRlcyhQbGF0Zm9ybVRvdWNoU3RhdGUgc3RhdGUpCisgKiBcYnJp
ZWYgQ2hlY2sgd2hldGhlciBhbGwgdG91Y2ggcG9pbnRzIGhhdmUgYSBzcGVjaWZpYyBzdGF0ZS4K
KyAqCisgKiBDaGVjayB3aGV0aGVyIGFsbCB0b3VjaCBwb2ludHMgaW4gdGhpcyBldmVudCBoYXZl
IGV4YWN0bHkgdGhlIHN0YXRlIGdpdmVuLgorICogXHBhcmFtIHN0YXRlIFRoZSBzdGF0ZSB0byB0
ZXN0IGZvci4KKyAqIFxyZXR1cm4gdHJ1ZSBpZiBhbGwgdG91Y2ggcG9pbnRzIGFyZSBpbiB0aGUg
Z2l2ZW4gc3RhdGUuCisgKi8KKworLyohCisgKiBcZm4gUGxhdGZvcm1Ub3VjaEV2ZW50OjpoYXNT
dGF0ZShQbGF0Zm9ybVRvdWNoU3RhdGUgc3RhdGUpCisgKiBcYnJpZWYgQ2hlY2sgd2hldGhlciBh
bnkgdG91Y2ggcG9pbnQgaGFzIGEgc3BlY2lmaWMgc3RhdGUuCisgKgorICogQ2hlY2sgd2hldGhl
ciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdG91Y2ggcG9pbnQgaW4gdGhpcyBldmVudCB0aGF0IGhh
cyB0aGUgc3RhdGUgZ2l2ZW4uCisgKiBccGFyYW0gc3RhdGUgVGhlIHN0YXRlIHRvIHRlc3QgZm9y
LgorICogXHJldHVybiB0cnVlIGlmIGFueSB0b3VjaCBwb2ludCBpcyBpbiB0aGUgZ2l2ZW4gc3Rh
dGUuCisgKi8KKworfQpkaWZmIC1yIDhhYTA0ZWNiMzNhOCBXZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtVG91Y2hQb2ludFF0LmNwcAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEgMDA6MDA6MDAg
MTk3MCArMDAwMAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hQb2ludFF0
LmNwcAlUdWUgRGVjIDAxIDE4OjIzOjQyIDIwMDkgKzAyMDAKQEAgLTAsMCArMSwxMzggQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVRvdWNoUG9pbnQuaCIKKworI2luY2x1ZGUgPFF0L3FldmVudC5oPgorI2luY2x1ZGUgPFF0L3Fy
ZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyohCisgKiBcY2xhc3MgUGxhdGZvcm1U
b3VjaFBvaW50CisgKiBcYnJpZWYgQ29udGFpbnMgb25lIHRvdWNoIHBvaW50LgorICoKKyAqIFBs
YXRmb3JtVG91Y2hQb2ludCBjb250YWlucyB0aGUgZGF0YSBvZiBvbmUgdG91Y2ggcG9pbnQuIFBs
YXRmb3JtVG91Y2hQb2ludAorICogaGFzIHNlcGFyYXRlIGltcGxlbWVudGF0aW9ucyBmb3IgZGlm
ZmVyZW50IGJhY2tlbmRzLiBQbGF0Zm9ybVRvdWNoRXZlbnQKKyAqIGNvbnRhaW5zIG9uZSBvcmUg
bW9yZSBcYSBQbGF0Zm9ybVRvdWNoUG9pbnRzLgorICogXHNlZSBQbGF0Zm9ybVRvdWNoRXZlbnQK
KyAqLworCisvKiEKKyAqIFxlbnVtIFBsYXRmb3JtVG91Y2hTdGF0ZQorICogXGJyaWVmIFRvdWNo
IHBvaW50IHN0YXRlcworICoKKyAqIEEgdG91Y2ggcG9pbnQgY2FuIGhhdmUgZm91ciBkaWZmZXJl
bnQgc3RhdGVzLCBkZXBlbmRpbmcgb24gdGhlIHRvdWNoIHBvaW50IHN0YXRlIGluIHRoZSBwcmV2
aW91cyB0b3VjaCBldmVudC4KKyAqIElmIGEgdG91Y2ggcG9pbnQgaGFzIG5vdCBiZWVuIHNlZW4g
YmVmb3JlLCBpdCBpcyBpbiBwcmVzc2VkIHN0YXRlLiBJZiBhIHRvdWNoIHBvaW50IGRpc2FwcGVh
cnMsIGl0IHdpbGwgYmUKKyAqIGluIG9uZSB0b3VjaCBldmVudCB3aXRoIHJlbGVhc2VkIHN0YXRl
LiBPdGhlcndpc2UgYSB0b3VjaCBwb2ludCB3aWxsIGJlIGluIGVpdGhlciBtb3ZlZCBvciBzdGF0
aW9uYXJ5IHN0YXRlLAorICogZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXRzIHBvc2l0aW9uIGhhcyBj
aGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cyB0b3VjaCBldmVudCBzdGF0ZS4KKyAqCisg
KiBcdmFsdWUgUGxhdGZvcm1Ub3VjaFJlbGVhc2VkIFRoZSB0b3VjaCBwb2ludCBpcyByZWxlYXNl
ZCBpbiB0aGlzIHRvdWNoIGV2ZW50LgorICogXHZhbHVlIFBsYXRmb3JtVG91Y2hQcmVzc2VkIFRo
ZSB0b3VjaCBwb2ludCBpcyBwcmVzc2VkIGluIHRoaXMgdG91Y2ggZXZlbnQuCisgKiBcdmFsdWUg
UGxhdGZvcm1Ub3VjaE1vdmVkIFRoZSB0b3VjaCBwb2ludCBpcyBtb3ZlZCBpbiB0aGlzIHRvdWNo
IGV2ZW50LgorICogXHZhbHVlIFBsYXRmb3JtVG91Y2hTdGF0aW9uYXJ5IFRoZSB0b3VjaCBwb2lu
dCBpcyBub3QgbW92ZWQgaW4gdGhpcyB0b3VjaCBldmVudC4KKyAqLworCisvKiEKKyAqIFxicmll
ZiBHZXQgdGhlIGlkIG9mIHRoaXMgdG91Y2ggcG9pbnQKKyAqCisgKiBccmV0dXJuIHRoZSBpZCBu
dW1iZXIgb2YgdGhpcyB0b3VjaCBwb2ludAorICovCitpbnQgUGxhdGZvcm1Ub3VjaFBvaW50Ojpp
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG91Y2hQb2ludC5pZCgpOworfQorCisvKiEKKyAq
IFxicmllZiBHZXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyB0b3VjaCBwb2ludAorICoKKyAq
IFxyZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpcyB0b3VjaCBwb2ludAorICovCitQbGF0
Zm9ybVRvdWNoU3RhdGUgUGxhdGZvcm1Ub3VjaFBvaW50OjpzdGF0ZSgpIGNvbnN0Cit7CisgICAg
UXQ6OlRvdWNoUG9pbnRTdGF0ZSBzdCA9IG1fdG91Y2hQb2ludC5zdGF0ZSgpOworCisgICAgaWYg
KChzdCAmIFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpID09IFF0OjpUb3VjaFBvaW50UmVsZWFzZWQp
CisgICAgICAgIHJldHVybiBQbGF0Zm9ybVRvdWNoUmVsZWFzZWQ7CisgIAorICAgIGlmICgoc3Qg
JiBRdDo6VG91Y2hQb2ludFByZXNzZWQpID09IFF0OjpUb3VjaFBvaW50UHJlc3NlZCkKKyAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtVG91Y2hQcmVzc2VkOworCisgICAgaWYgKChzdCAmIFF0OjpUb3Vj
aFBvaW50TW92ZWQpID09IFF0OjpUb3VjaFBvaW50TW92ZWQpCisgICAgICAgIHJldHVybiBQbGF0
Zm9ybVRvdWNoTW92ZWQ7CisKKyAgICByZXR1cm4gUGxhdGZvcm1Ub3VjaFN0YXRpb25hcnk7Cit9
CisKKy8qIQorICogXGJyaWVmIEdldCB0aGUgdG91Y2ggcG9pbnQgc2NyZWVuIHBvc2l0aW9uCisg
KgorICogXHJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhpcyB0b3VjaCBwb2ludCwgcmVsYXRpdmUg
dG8gdGhlIG9yaWdpbiBvZiB0aGUgc2NyZWVuIGNvb3JkaW5hdGUgc3lzdGVtCisgKi8KK2NvbnN0
IEludFBvaW50IFBsYXRmb3JtVG91Y2hQb2ludDo6c2NyZWVuUG9zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV90b3VjaFBvaW50LnNjcmVlblBvcygpLnRvUG9pbnQoKTsKK30KKworLyohCisgKiBc
YnJpZWYgR2V0IHRoZSB0b3VjaCBwb2ludCBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgdmlld3Bv
cnQKKyAqCisgKiBccmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGlzIHRvdWNoIHBvaW50LCByZWxh
dGl2ZSB0byB0aGUgY2xpZW50IHZpZXdwb3J0LgorICovCitjb25zdCBJbnRQb2ludCBQbGF0Zm9y
bVRvdWNoUG9pbnQ6OnBvcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdG91Y2hQb2ludC5wb3Mo
KS50b1BvaW50KCk7Cit9CisKKy8qIQorICogXGJyaWVmIEdldCB0aGUgdG91Y2ggcG9pbnQgcHJl
c3N1cmUKKyAqCisgKiBccmV0dXJuIHRoZSBwcmVzc3VyZSBvZiB0aGlzIHRvdWNoIHBvaW50IGFz
IGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBmcm9tIHRoZSByYW5nZSAwLjAgdG8gMS4wLgorICov
CitmbG9hdCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OnByZXNzdXJlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV90b3VjaFBvaW50LnByZXNzdXJlKCk7Cit9CisKKy8qIQorICogXGJyaWVmIEdldCB0aGUg
dG91Y2hwb2ludCByZWN0YW5nbGUKKyAqCisgKiBccmV0dXJuIHRoZSByZWN0IGZvciB0aGlzIHRv
dWNoIHBvaW50LCByZWxhdGl2ZSB0byB0aGUgY2xpZW50IHZpZXdwb3J0LiBUaGUgcmVjdCBpcyBj
ZW50ZXJlZCBhcm91bmQgdGhlIHBvaW50IHJldHVybmVkIGJ5IHBvcygpLgorICogXG5vdGUgVGhp
cyBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IHJlY3QgaWYgdGhlIGRldmljZSBkb2VzIG5vdCBy
ZXBvcnQgdG91Y2ggcG9pbnQgc2l6ZXMuCisgKi8KK0ludFJlY3QgUGxhdGZvcm1Ub3VjaFBvaW50
OjpyZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90b3VjaFBvaW50LnJlY3QoKS50b1JlY3Qo
KTsKK30KKwordm9pZCBQbGF0Zm9ybVRvdWNoUG9pbnQ6OnNldFN0YXRlKGNvbnN0IFBsYXRmb3Jt
VG91Y2hTdGF0ZSBwKQoreworICAgIGlmIChwID09IFBsYXRmb3JtVG91Y2hQcmVzc2VkKSB7Cisg
ICAgICAgIG1fdG91Y2hQb2ludC5zZXRTdGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOworICAg
IH0gZWxzZSBpZiAocCA9PSBQbGF0Zm9ybVRvdWNoUmVsZWFzZWQpIHsKKyAgICAgICAgbV90b3Vj
aFBvaW50LnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpOworICAgIH0gZWxzZSBpZiAo
cCA9PSBQbGF0Zm9ybVRvdWNoTW92ZWQpIHsKKyAgICAgICAgbV90b3VjaFBvaW50LnNldFN0YXRl
KFF0OjpUb3VjaFBvaW50TW92ZWQpOworICAgIH0gZWxzZSBpZiAocCA9PSBQbGF0Zm9ybVRvdWNo
U3RhdGlvbmFyeSkKKyAgICAgICAgbV90b3VjaFBvaW50LnNldFN0YXRlKFF0OjpUb3VjaFBvaW50
U3RhdGlvbmFyeSk7CisKK30KKworfQpkaWZmIC1yIDhhYTA0ZWNiMzNhOCBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAlUdWUgRGVjIDAx
IDE4OjAyOjI1IDIwMDkgKzAyMDAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJVHVl
IERlYyAwMSAxODoyMzo0MiAyMDA5ICswMjAwCkBAIC0xMTc1LDYgKzExNzUsNTUgQEAKICAgICBt
b3VzZU1vdmVFdmVudCgmZmFrZUV2ZW50KTsKIH0KIAorI2lmbmRlZiBRVF9OT19UT1VDSEVWRU5U
CisvKiEKKyAqIFxicmllZiBIYW5kbGUgYSBRdCB0b3VjaCBldmVudC4KKyAqCisgKiBIYW5kbGUg
YSBRdCB0b3VjaCBldmVudCBieSBjb252ZXJ0aW5nIGl0IHRvIGEgUGxhdGZvcm1Ub3VjaEV2ZW50
IGFuZCBwYXNzaW5nIHRoYXQgdG8gYXBwcm9wcmlhdGUgaGFuZGxlcnMuCisgKiBccGFyYW0gZXYg
UXQgVG91Y2ggZXZlbnQuCisgKiBcc2VlIFBsYXRmb3JtVG91Y2hFdmVudAorICovCit2b2lkIFFX
ZWJQYWdlUHJpdmF0ZTo6dG91Y2hFdmVudChRVG91Y2hFdmVudCAqZXYpCit7CisgICAgLy8gU2Fu
aXR5IGNoZWNrCisgICAgaWYgKGV2LT50b3VjaFBvaW50cygpLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6
Y29yZShtYWluRnJhbWUpOworICAgIGlmICghZnJhbWUtPnZpZXcoKSkKKyAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgCisgICAgUGxhdGZvcm1Ub3VjaEV2ZW50IHBldigqZXYpOworCisgICAg
c3RhdGljIFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+IHByZXZpb3VzVG91Y2hQb2ludHM7CisK
KyAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBubyB0b3VjaCBwb2ludHMgYWN0dWFsbHkgbW92
ZWQKKyAgICAvLyBJZiBhbnkgdG91Y2ggYXJlIHByZXNzZWQgb3IgcmVsZWFzZWQsIHRoZXJlIHdh
cyBhIGNoYW5nZS4KKyAgICAvLyBJZiBhbGwgdG91Y2ggcG9pbnRzIGFyZSBpbiBzdGF0ZSBzdGF0
aW9uYXJ5IG9yIG1vdmVkLCBnbyB0aHJvdWdoIHRoZSB0b3VjaCBwb2ludHMgYW5kIGNvbXBhcmUg
dG8gdGhlIHByZXZpb3VzIHBvaW50cy4KKyAgICAvLyBBIG5ldyB0b3VjaCBwb2ludCBhbHdheXMg
aGFzIGFuIGlkIGxhcmdlciB0aGFuIGFueSBwcmV2aW91cyBvbmVzLCBzbyB0aGUgdmVjdG9yIG9m
IHRvdWNoIHBvaW50cyBzaG91bGQgYWx3YXlzIGJlIHNvcnRlZCBieSBpZC4KKyAgICAvLyBJZiB0
aGF0IHR1cm5zIG91dCB0byBiZSBmYWxzZSBhbmQgdGhlICJub3QgbW92ZWQiIGNoZWNrIGdpdmVz
IGEgZmFsc2UgcG9zaXRpdmUsIHRoZSByZXN1bHQgaXMganVzdCBhbiBleHRyYSBldmVudCBkaXNw
YXRjaCwgc28gaXQncyBub3QgZGFuZ2Vyb3VzLgorICAgIGJvb2wgYXJlU2FtZSA9IGZhbHNlOwor
ICAgIGlmICghcGV2Lmhhc1N0YXRlKFBsYXRmb3JtVG91Y2hQcmVzc2VkKSAmJiAhcGV2Lmhhc1N0
YXRlKFBsYXRmb3JtVG91Y2hSZWxlYXNlZCkgJiYgcHJldmlvdXNUb3VjaFBvaW50cy5zaXplKCkg
PT0gcGV2LnRvdWNoUG9pbnRzKCkuc2l6ZSgpKSB7CisgICAgICBhcmVTYW1lID0gdHJ1ZTsKKyAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcHJldmlvdXNUb3VjaFBvaW50cy5zaXplKCk7ICsraSkg
eworICAgICAgICBpZiAocHJldmlvdXNUb3VjaFBvaW50c1tpXS5wb3MoKSAhPSBwZXYudG91Y2hQ
b2ludHMoKVtpXS5wb3MoKSkgeworICAgICAgICAgIGFyZVNhbWUgPSBmYWxzZTsKKyAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIHByZXZpb3VzVG91Y2hQ
b2ludHMgPSBwZXYudG91Y2hQb2ludHMoKTsKKyAgICAKKyAgICBpZiAoYXJlU2FtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaChwZXYp
OworCisgICAgZXYtPnNldEFjY2VwdGVkKHRydWUpOworfQorI2VuZGlmIC8vIFFUX05PX1RPVUNI
RVZFTlQKKwogLyohCiAgICAgXHByb3BlcnR5IFFXZWJQYWdlOjpwYWxldHRlCiAgICAgXGJyaWVm
IHRoZSBwYWdlJ3MgcGFsZXR0ZQpAQCAtMjU2Nyw2ICsyNjE2LDEzIEBACiAgICAgY2FzZSBRRXZl
bnQ6OkxlYXZlOgogICAgICAgICBkLT5sZWF2ZUV2ZW50KGV2KTsKICAgICAgICAgYnJlYWs7Cisj
aWZuZGVmIFFUX05PX1RPVUNIRVZFTlQKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hCZWdpbjoKKyAg
ICBjYXNlIFFFdmVudDo6VG91Y2hFbmQ6CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoVXBkYXRlOgor
ICAgICAgICBkLT50b3VjaEV2ZW50KHN0YXRpY19jYXN0PFFUb3VjaEV2ZW50Kj4oZXYpKTsKKyAg
ICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gUU9iamVj
dDo6ZXZlbnQoZXYpOwogICAgIH0KZGlmZiAtciA4YWEwNGVjYjMzYTggV2ViS2l0L3F0L0FwaS9x
d2VicGFnZV9wLmgKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgJVHVlIERlYyAwMSAx
ODowMjoyNSAyMDA5ICswMjAwCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCVR1ZSBE
ZWMgMDEgMTg6MjM6NDIgMjAwOSArMDIwMApAQCAtMzYsNiArMzYsMTAgQEAKIAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIAorI2lmbmRlZiBRVF9OT19UT1VDSEVWRU5UCisjaW5jbHVkZSAiUGxh
dGZvcm1Ub3VjaEV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIENocm9tZUNsaWVudFF0OwogICAgIGNsYXNzIENvbnRleHRNZW51Q2xpZW50UXQ7CkBAIC01
Myw2ICs1Nyw5IEBACiBjbGFzcyBRVW5kb1N0YWNrOwogY2xhc3MgUU1lbnU7CiBjbGFzcyBRQml0
QXJyYXk7CisjaWZuZGVmIFFUX05PX1RPVUNIRVZFTlQKK2NsYXNzIFFUb3VjaEV2ZW50OworI2Vu
ZGlmCiBRVF9FTkRfTkFNRVNQQUNFCiAKIGNsYXNzIFFXZWJJbnNwZWN0b3I7CkBAIC0xMTcsNiAr
MTI0LDkgQEAKICAgICB2b2lkIHNldEluc3BlY3RvcihRV2ViSW5zcGVjdG9yKik7CiAgICAgUVdl
Ykluc3BlY3RvciogZ2V0T3JDcmVhdGVJbnNwZWN0b3IoKTsKICAgICBXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CisjaWZuZGVmIFFUX05PX1RPVUNI
RVZFTlQKKyAgICB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQgKik7CisjZW5kaWYKIAogI2lm
bmRlZiBRVF9OT19TSE9SVENVVAogICAgIHN0YXRpYyBRV2ViUGFnZTo6V2ViQWN0aW9uIGVkaXRv
ckFjdGlvbkZvcktleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpOwpkaWZmIC1yIDhhYTA0ZWNiMzNh
OCBXZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3LmNwcAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJ2aWV3
LmNwcAlUdWUgRGVjIDAxIDE4OjAyOjI1IDIwMDkgKzAyMDAKKysrIGIvV2ViS2l0L3F0L0FwaS9x
d2Vidmlldy5jcHAJVHVlIERlYyAwMSAxODoyMzo0MiAyMDA5ICswMjAwCkBAIC0xNTMsNiArMTUz
LDEwIEBACiAgICAgc2V0QXR0cmlidXRlKFF0OjpXQV9JbnB1dE1ldGhvZEVuYWJsZWQpOwogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChRVF9OT19UT1VDSEVWRU5UKQorICAgIHNldEF0dHJpYnV0ZShR
dDo6V0FfQWNjZXB0VG91Y2hFdmVudHMpOworI2VuZGlmCisKICAgICBzZXRBY2NlcHREcm9wcyh0
cnVlKTsKIAogICAgIHNldE1vdXNlVHJhY2tpbmcodHJ1ZSk7CkBAIC02NTAsOCArNjU0LDE1IEBA
CiAgICAgICAgICAgICAgICAgZC0+cGFnZS0+ZC0+Y2xpZW50LT5yZXNldEN1cnNvcigpOwogI2Vu
ZGlmCiAjZW5kaWYKLSAgICAgICAgfSBlbHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpMZWF2
ZSkKKyAgICAgICAgfSBlbHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpMZWF2ZSkgewogICAg
ICAgICAgICAgZC0+cGFnZS0+ZXZlbnQoZSk7CisjaWZuZGVmIFFUX05PX1RPVUNIRVZFTlQKKyAg
ICAgICAgfSBlbHNlIGlmIChlLT50eXBlKCkgPT0gUUV2ZW50OjpUb3VjaEJlZ2luIAorICAgICAg
ICAgICAgICAgICAgIHx8IGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoRW5kIAorICAgICAgICAg
ICAgICAgICAgIHx8IGUtPnR5cGUoKSA9PSBRRXZlbnQ6OlRvdWNoVXBkYXRlKSB7CisgICAgICAg
ICAgICBkLT5wYWdlLT5ldmVudChlKTsKKyNlbmRpZgorICAgICAgICB9CiAgICAgfQogCiAgICAg
cmV0dXJuIFFXaWRnZXQ6OmV2ZW50KGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44234</attachid>
            <date>2009-12-03 05:50:20 -0800</date>
            <delta_ts>2009-12-09 14:55:01 -0800</delta_ts>
            <desc>touch12-touch-dom-event</desc>
            <filename>touch12-touch-dom-event</filename>
            <type>text/plain</type>
            <size>33216</size>
            <attacher name="Jonni Rainisto">jonni.rainisto</attacher>
            
              <data encoding="base64">ZGlmZiAtciA1ODQ1N2RiMjg3YTggV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKLS0tIGEvV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisr
KyBiL1dlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCVRodSBEZWMgMDMgMTU6MjQ6MzcgMjAwOSAr
MDIwMApAQCAtMiw2ICsyLDcgQEAKIDwhLS0KIAogQ29weXJpZ2h0IChDKSAyMDA3IEtldmluIE9s
bGl2aWVyLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0NvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKIAogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQwOSw2ICs0MTAsNyBAQAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTVGV4dC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRFdmVudC5j
cHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRNZXRyaWNzLmNwcAorICAg
ICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVG91Y2hFdmVudC5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RyZWVXYWxrZXIuY3BwCiAgICAgICAgIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNVSUV2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTUxMCw2ICs1MTIsNyBAQAogICAgICAgICBkb20vVGFn
Tm9kZUxpc3QuY3BwCiAgICAgICAgIGRvbS9UZXh0LmNwcAogICAgICAgICBkb20vVGV4dEV2ZW50
LmNwcAorICAgICAgICBkb20vVG91Y2hFdmVudC5jcHAKICAgICAgICAgZG9tL1RyYW5zZm9ybVNv
dXJjZUxpYnhzbHQuY3BwCiAgICAgICAgIGRvbS9UcmF2ZXJzYWwuY3BwCiAgICAgICAgIGRvbS9U
cmVlV2Fsa2VyLmNwcApkaWZmIC1yIDU4NDU3ZGIyODdhOCBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwCi0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5j
cHAJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudEN1c3RvbS5jcHAJVGh1IERlYyAwMyAxNToyNDozNyAyMDA5ICswMjAwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc2LDYgKzc3LDExIEBACiAjaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmgiCiAjZW5k
aWYKIAorI2lmIEVOQUJMRShUT1VDSF9HRVNUVVJFUykKKyNpbmNsdWRlICJKU1RvdWNoRXZlbnQu
aCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTA5LDYgKzExNSwxMCBAQAogICAgICAgICBl
bHNlIGlmIChldmVudC0+aXNTVkdab29tRXZlbnQoKSkKICAgICAgICAgICAgIHdyYXBwZXIgPSBD
UkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgU1ZHWm9vbUV2ZW50
LCBldmVudCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCisgICAgICAgIGVs
c2UgaWYgKGV2ZW50LT5pc1RvdWNoRXZlbnQoKSkKKyAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVB
VEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgVG91Y2hFdmVudCwgZXZl
bnQpOworI2VuZGlmCiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LT5pc0NvbXBvc2l0aW9uRXZlbnQo
KSkKICAgICAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMs
IGdsb2JhbE9iamVjdCwgQ29tcG9zaXRpb25FdmVudCwgZXZlbnQpOwogICAgICAgICBlbHNlCmRp
ZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAotLS0gYS9XZWJDb3JlL2Rv
bS9FdmVudC5jcHAJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50LmNwcAlUaHUgRGVjIDAzIDE1OjI0OjM3IDIwMDkgKzAyMDAKQEAgLTMsNiArMyw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEgVG9iaWFzIEFudG9uIChhbnRvbkBzdHVkLmZiaS5m
aC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2Ft
LndlaW5pZ0BnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDUsIDIwMDYsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCkBAIC0xODEsNyArMTgyLDE0IEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogI2Vu
ZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCitib29sIEV2ZW50Ojppc1Rv
dWNoRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29s
IEV2ZW50OjpzdG9yZXNSZXN1bHRBc1N0cmluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC1yIDU4NDU3ZGIyODdhOCBXZWJDb3JlL2RvbS9FdmVudC5oCi0tLSBhL1dlYkNvcmUv
ZG9tL0V2ZW50LmgJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUv
ZG9tL0V2ZW50LmgJVGh1IERlYyAwMyAxNToyNDozNyAyMDA5ICswMjAwCkBAIC0zLDYgKzMsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDAxIFRvYmlhcyBBbnRvbiAoYW50b25Ac3R1ZC5mYmkuZmgt
ZGFybXN0YWR0LmRlKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53
ZWluaWdAZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
ICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTI1LDcgKzEyNiwxMCBAQAogI2lmIEVOQUJMRShXT1JL
RVJTKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFcnJvckV2ZW50KCkgY29uc3Q7CiAjZW5kaWYK
LSAgICAgICAgCisjaWYgRU5BQkxFKFRPVUNIX0dFU1RVUkVTKQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNUb3VjaEV2ZW50KCkgY29uc3Q7CisjZW5kaWYKKwogICAgICAgICBib29sIHByb3BhZ2F0
aW9uU3RvcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGFnYXRpb25TdG9wcGVkOyB9CiAKICAg
ICAgICAgYm9vbCBkZWZhdWx0UHJldmVudGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWZhdWx0UHJl
dmVudGVkOyB9CmRpZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAot
LS0gYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICsw
MjAwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAlUaHUgRGVjIDAzIDE1OjI0OjM3IDIw
MDkgKzAyMDAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBK
b24gU2hpZXIgKGpzaGllckBpYXN0YXRlLmVkdSkKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTQzLDYgKzE0NCwxMCBAQAogICAgIFwKICAgICBtYWNybyh3ZWJraXRUcmFuc2l0
aW9uRW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHRvdWNoZG93bikgXAorICAgIG1hY3JvKHRvdWNo
dXApIFwKKyAgICBtYWNybyh0b3VjaG1vdmUpIFwKKyAgICBcCiAgICAgbWFjcm8ob3JpZW50YXRp
b25jaGFuZ2UpIFwKICAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICmRp
ZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvZG9tL05vZGUuaAotLS0gYS9XZWJDb3JlL2RvbS9O
b2RlLmgJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUvZG9tL05v
ZGUuaAlUaHUgRGVjIDAzIDE1OjI0OjM3IDIwMDkgKzAyMDAKQEAgLTQsNiArNCw3IEBACiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1v
YmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNv
bS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTU2LDYgKzU3LDkgQEAKIGNs
YXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNs
YXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMpCitjbGFz
cyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CisjZW5kaWYKIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFz
cyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjsKIGNsYXNzIFJlbmRlckFyZW5hOwpAQCAtNTQxLDcg
KzU0NSw5IEBACiAgICAgICAgIGJvb2wgaXNTaW11bGF0ZWQsIE5vZGUqIHJlbGF0ZWRUYXJnZXQs
IFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAgICAgdm9pZCBkaXNwYXRjaFNp
bXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQ
dHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAgICAgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENs
aWNrKFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91c2VFdmVu
dHMgPSBmYWxzZSwgYm9vbCBzaG93UHJlc3NlZExvb2sgPSB0cnVlKTsKLQorI2lmIEVOQUJMRShU
T1VDSF9HRVNUVVJFUykKKyAgICBib29sIGRpc3BhdGNoVG91Y2hFdmVudChQbGF0Zm9ybVRvdWNo
RXZlbnQmKTsKKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEZvY3VzRXZlbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hCbHVyRXZlbnQoKTsKIApkaWZmIC1yIDU4NDU3ZGIy
ODdhOCBXZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAotLS0gL2Rldi9udWxsCVRodSBKYW4gMDEg
MDA6MDA6MDAgMTk3MCArMDAwMAorKysgYi9XZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmNwcAlUaHUg
RGVjIDAzIDE1OjI0OjM3IDIwMDkgKzAyMDAKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisK
KyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyohCisg
KiBcYnJpZWYgRGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAqLworVG91Y2hFdmVudDo6VG91Y2hFdmVu
dCgpCisgICAgOiBtX2lkKDAuMGYpCisgICAgLCBtX3NjcmVlblgoMC4wZikKKyAgICAsIG1fc2Ny
ZWVuWSgwLjBmKQorICAgICwgbV9jbGllbnRYKDAuMGYpCisgICAgLCBtX2NsaWVudFkoMC4wZikK
KyAgICAsIG1fcGFnZVgoMC4wZikKKyAgICAsIG1fcGFnZVkoMC4wZikKKyAgICAsIG1fcHJlc3N1
cmUoMC4wZikKKyAgICAsIG1fcmVjdFdpZHRoKDApCisgICAgLCBtX3JlY3RIZWlnaHQoMCkKKyAg
ICAsIG1fcmVsYXRlZFRhcmdldCgwKQoreworfQorCisvKiEKKyAqIFxicmllZiBDb25zdHJ1Y3Rv
ciB3aXRoIGRhdGEuCisgKgorICogXHBhcmFtIHR5cGUgVHlwZSBvZiB0aGUgZXZlbnQuCisgKiBc
cGFyYW0gY2FuQnViYmxlIEZsYWcgdGhhdCB0ZWxscyB3aGV0aGVyIHRoZSBldmVudCBjYW4gYnVi
YmxlIHVwIHRvIHBhcmVudCBlbGVtZW50cy4KKyAqIFxwYXJhbSBjYW5jZWxhYmxlIEZsYWcgdGhh
dCB0ZWxscyB3aGV0aGVyIHRoZSBldmVudCBjYW4gYmUgY2FuY2VsbGVkLgorICogXHBhcmFtIHZp
ZXcgVGhlIHZpZXcgaW4gdXNlLgorICogXHBhcmFtIGRldGFpbCBBbW91bnQgb2YgZGV0YWlsLgor
ICogXHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgdG91Y2ggcG9pbnQuCisgKiBccGFyYW0gc2NyZWVu
WCBYLWNvb3JkaW5hdGUgb2YgdGhlIGV2ZW50IGluIHNjcmVlbiBjb29yZGluYXRlcy4KKyAqIFxw
YXJhbSBzY3JlZW5ZIFktY29vcmRpbmF0ZSBvZiB0aGUgZXZlbnQgaW4gc2NyZWVuIGNvb3JkaW5h
dGVzLgorICogXHBhcmFtIGNsaWVudFggWC1jb29yZGluYXRlIG9mIHRoZSBldmVudCBpbiBjbGll
bnQgY29vcmRpbmF0ZXMuCisgKiBccGFyYW0gY2xpZW50WSBZLWNvb3JkaW5hdGUgb2YgdGhlIGV2
ZW50IGluIGNsaWVudCBjb29yZGluYXRlcy4KKyAqIFxwYXJhbSBwYWdlWCBYLWNvb3JkaW5hdGUg
b2YgdGhlIGV2ZW50IGluIHBhZ2UgY29vcmRpbmF0ZXMuCisgKiBccGFyYW0gcGFnZVkgWS1jb29y
ZGluYXRlIG9mIHRoZSBldmVudCBpbiBwYWdlIGNvb3JkaW5hdGVzLgorICogXHBhcmFtIGN0cmxL
ZXkgRmxhZyB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIGNvbnRyb2wga2V5IGlzIHByZXNzZWQuCisg
KiBccGFyYW0gYWx0S2V5IEZsYWcgdGhhdCB0ZWxscyB3aGV0aGVyIHRoZSBhbHQga2V5IGlzIHBy
ZXNzZWQuCisgKiBccGFyYW0gc2hpZnRLZXkgRmxhZyB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIHNo
aWZ0IGtleSBpcyBwcmVzc2VkLgorICogXHBhcmFtIG1ldGFLZXkgRmxhZyB0aGF0IHRlbGxzIHdo
ZXRoZXIgdGhlIG1ldGEga2V5IGlzIHByZXNzZWQuCisgKiBccGFyYW0gcHJlc3N1cmUgUHJlc3N1
cmUgYXBwbGllZCB0byB0aGUgdG91Y2ggcG9pbnQuCisgKiBccGFyYW0gcmVjdFdpZHRoIFdpZHRo
IG9mIHRoZSB0b3VjaCBwb2ludCByZWN0YW5nbGUuCisgKiBccGFyYW0gcmVjdEhlaWdodCBIZWln
aHQgb2YgdGhlIHRvdWNoIHBvaW50IHJlY3RhbmdsZS4KKyAqIFxwYXJhbSByZWxhdGVkVGFyZ2V0
IFRoZSByZWxhdGVkIHRhcmdldCBlbGVtZW50LgorICovCitUb3VjaEV2ZW50OjpUb3VjaEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Y2FuQnViYmxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlLAorICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKKyAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlkLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgCisgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzY3JlZW5ZLCAKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaWVu
dFgsIAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpZW50WSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHBhZ2VYLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZVksCisg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBhbHRLZXksCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2hpZnRLZXksCisg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWV0YUtleSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgcHJlc3N1cmUsCisgICAgICAgICAgICAgICAgICAgICAgIGludCByZWN0V2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgIGludCByZWN0SGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0KQorICAgIDogVUlF
dmVudFdpdGhLZXlTdGF0ZSh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFp
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwg
bWV0YUtleSkKKyAgICAsIG1faWQoaWQpCisgICAgLCBtX3NjcmVlblgoc2NyZWVuWCkKKyAgICAs
IG1fc2NyZWVuWShzY3JlZW5ZKQorICAgICwgbV9jbGllbnRYKGNsaWVudFgpCisgICAgLCBtX2Ns
aWVudFkoY2xpZW50WSkKKyAgICAsIG1fcGFnZVgocGFnZVgpCisgICAgLCBtX3BhZ2VZKHBhZ2VZ
KQorICAgICwgbV9wcmVzc3VyZShwcmVzc3VyZSkKKyAgICAsIG1fcmVjdFdpZHRoKHJlY3RXaWR0
aCkKKyAgICAsIG1fcmVjdEhlaWdodChyZWN0SGVpZ2h0KQorICAgICwgbV9yZWxhdGVkVGFyZ2V0
KHJlbGF0ZWRUYXJnZXQpCit7Cit9CisKKy8qIQorICogXGJyaWVmIEluaXRpYWxpemUgYW4gb2Jq
ZWN0IHdpdGggZGF0YS4KKyAqCisgKiBccGFyYW0gdHlwZSBUeXBlIG9mIHRoZSBldmVudC4KKyAq
IFxwYXJhbSBjYW5CdWJibGUgRmxhZyB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIGV2ZW50IGNhbiBi
dWJibGUgdXAgdG8gcGFyZW50IGVsZW1lbnRzLgorICogXHBhcmFtIGNhbmNlbGFibGUgRmxhZyB0
aGF0IHRlbGxzIHdoZXRoZXIgdGhlIGV2ZW50IGNhbiBiZSBjYW5jZWxsZWQuCisgKiBccGFyYW0g
dmlldyBUaGUgdmlldyBpbiB1c2UuCisgKiBccGFyYW0gZGV0YWlsIEFtb3VudCBvZiBkZXRhaWwu
CisgKiBccGFyYW0gaWQgVGhlIElEIG9mIHRoZSB0b3VjaCBwb2ludC4KKyAqIFxwYXJhbSBzY3Jl
ZW5YIFgtY29vcmRpbmF0ZSBvZiB0aGUgZXZlbnQgaW4gc2NyZWVuIGNvb3JkaW5hdGVzLgorICog
XHBhcmFtIHNjcmVlblkgWS1jb29yZGluYXRlIG9mIHRoZSBldmVudCBpbiBzY3JlZW4gY29vcmRp
bmF0ZXMuCisgKiBccGFyYW0gY2xpZW50WCBYLWNvb3JkaW5hdGUgb2YgdGhlIGV2ZW50IGluIGNs
aWVudCBjb29yZGluYXRlcy4KKyAqIFxwYXJhbSBjbGllbnRZIFktY29vcmRpbmF0ZSBvZiB0aGUg
ZXZlbnQgaW4gY2xpZW50IGNvb3JkaW5hdGVzLgorICogXHBhcmFtIHBhZ2VYIFgtY29vcmRpbmF0
ZSBvZiB0aGUgZXZlbnQgaW4gcGFnZSBjb29yZGluYXRlcy4KKyAqIFxwYXJhbSBwYWdlWSBZLWNv
b3JkaW5hdGUgb2YgdGhlIGV2ZW50IGluIHBhZ2UgY29vcmRpbmF0ZXMuCisgKiBccGFyYW0gY3Ry
bEtleSBGbGFnIHRoYXQgdGVsbHMgd2hldGhlciB0aGUgY29udHJvbCBrZXkgaXMgcHJlc3NlZC4K
KyAqIFxwYXJhbSBhbHRLZXkgRmxhZyB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIGFsdCBrZXkgaXMg
cHJlc3NlZC4KKyAqIFxwYXJhbSBzaGlmdEtleSBGbGFnIHRoYXQgdGVsbHMgd2hldGhlciB0aGUg
c2hpZnQga2V5IGlzIHByZXNzZWQuCisgKiBccGFyYW0gbWV0YUtleSBGbGFnIHRoYXQgdGVsbHMg
d2hldGhlciB0aGUgbWV0YSBrZXkgaXMgcHJlc3NlZC4KKyAqIFxwYXJhbSBwcmVzc3VyZSBQcmVz
c3VyZSBhcHBsaWVkIHRvIHRoZSB0b3VjaCBwb2ludC4KKyAqIFxwYXJhbSByZWN0V2lkdGggV2lk
dGggb2YgdGhlIHRvdWNoIHBvaW50IHJlY3RhbmdsZS4KKyAqIFxwYXJhbSByZWN0SGVpZ2h0IEhl
aWdodCBvZiB0aGUgdG91Y2ggcG9pbnQgcmVjdGFuZ2xlLgorICogXHBhcmFtIHJlbGF0ZWRUYXJn
ZXQgVGhlIHJlbGF0ZWQgdGFyZ2V0IGVsZW1lbnQuCisgKi8KK3ZvaWQgVG91Y2hFdmVudDo6aW5p
dFRvdWNoRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGUsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGNhbmNlbGFibGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGRldGFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5ZLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGNsaWVudFgsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgY2xpZW50WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHBhZ2VYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZVksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBhbHRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc2hpZnRLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgbWV0YUtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcHJlc3N1
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWN0V2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWN0SGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0
KQoreworICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGluaXRV
SUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsKTsKKworICAg
IG1fY3RybEtleSA9IGN0cmxLZXk7CisgICAgbV9hbHRLZXkgPSBhbHRLZXk7CisgICAgbV9zaGlm
dEtleSA9IHNoaWZ0S2V5OworICAgIG1fbWV0YUtleSA9IG1ldGFLZXk7CisKKyAgICBtX2lkID0g
aWQ7CisgICAgbV9zY3JlZW5YID0gc2NyZWVuWDsKKyAgICBtX3NjcmVlblkgPSBzY3JlZW5ZOwor
ICAgIG1fY2xpZW50WCA9IGNsaWVudFg7CisgICAgbV9jbGllbnRZID0gY2xpZW50WTsKKyAgICBt
X3BhZ2VYID0gcGFnZVg7CisgICAgbV9wYWdlWSA9IHBhZ2VZOworICAgIG1fcHJlc3N1cmUgPSBw
cmVzc3VyZTsKKyAgICBtX3JlY3RXaWR0aCA9IHJlY3RXaWR0aDsKKyAgICBtX3JlY3RIZWlnaHQg
PSByZWN0SGVpZ2h0OworICAgIG1fcmVsYXRlZFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7Cit9CisK
Ky8qIQorICogXGJyaWVmIENoZWNrIHdoZXRoZXIgdGhpcyBvYmplY3QgaXMgYSB0b3VjaCBldmVu
dCBvYmplY3QuCisgKgorICogXHJldHVybiB0cnVlIGZvciBvYmplY3RzIG9mIHRoaXMgY2xhc3Mu
CisgKi8KK2Jvb2wgVG91Y2hFdmVudDo6aXNUb3VjaEV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworLyohCisgKiBcY2xhc3MgVG91Y2hFdmVudAorICogXGJyaWVmIERPTSBl
dmVudCBjbGFzcyBmb3IgYSB0b3VjaCBzY3JlZW4gZXZlbnQuCisgKgorICogRE9NIGV2ZW50IGNs
YXNzIGZvciBhIHRvdWNoIGV2ZW50IHRoYXQgb3JpZ2luYXRlcyBmcm9tIGEgdG91Y2ggc2NyZWVu
LiBFdmVyeSBpbmRpdmlkdWFsIGZpbmdlciBnZXN0dXJlCisgKiBnZW5lcmF0ZXMgYSBzZXBhcmF0
ZSB0b3VjaCBldmVudCwgd2hlcmVhcyB0aGVpciBjb21iaW5hdGlvbiBnZW5lcmF0ZXMgYSBcYSBN
YW5pcHVsYXRlRXZlbnQuCisgKiBcc2VlIE1hbmlwdWxhdGVFdmVudAorICovCisKKy8qIQorICog
XGZuIFRvdWNoRXZlbnQ6OmNyZWF0ZSgpCisgKiBcYnJpZWYgTmFtZWQgY29uc3RydWN0b3IuCisg
KgorICogQ29uc3RydWN0IGFuIGVtcHR5IFRvdWNoRXZlbnQgb2JqZWN0IGFzIGEgXGEgUGFzc1Jl
ZlB0cjxUb3VjaEV2ZW50Pi4KKyAqIFxyZXR1cm4gYSBcYSBQYXNzUmVmUHRyIHRvIGEgbmV3bHkg
Y3JlYXRlZCBlbXB0eSBcYSBUb3VjaEV2ZW50IG9iamVjdC4KKyAqLworCisvKiEKKyAqIFxmbiBU
b3VjaEV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJs
ZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgaW50IGRl
dGFpbCwgaW50IGlkLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSwgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBt
ZXRhS2V5LCBmbG9hdCBwcmVzc3VyZSwgaW50IHJlY3RXaWR0aCwgaW50IHJlY3RIZWlnaHQsIFBh
c3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpCisgKiBcYnJpZWYgTmFtZWQgY29u
c3RydWN0b3Igd2l0aCBkYXRhLgorICoKKyAqIENvbnN0cnVjdCBhIFRvdWNoRXZlbnQgb2JqZWN0
IGFzIGEgXGEgUGFzc1JlZlB0cjxUb3VjaEV2ZW50Pi4KKyAqIFxyZXR1cm4gYSBQYXNzUmVmUHRy
IHRvIGEgbmV3bHkgY3JlYXRlZCBUb3VjaEV2ZW50IG9iamVjdC4KKyAqIFxwYXJhbSB0eXBlIFR5
cGUgb2YgdGhlIGV2ZW50CisgKiBccGFyYW0gY2FuQnViYmxlIEZsYWcgdGhhdCB0ZWxscyB3aGV0
aGVyIHRoZSBldmVudCBjYW4gYnViYmxlIHVwIHRvIHBhcmVudCBlbGVtZW50cy4KKyAqIFxwYXJh
bSBjYW5jZWxhYmxlIEZsYWcgdGhhdCB0ZWxscyB3aGV0aGVyIHRoZSBldmVudCBjYW4gYmUgY2Fu
Y2VsbGVkLgorICogXHBhcmFtIHZpZXcgVGhlIHZpZXcgaW4gdXNlLgorICogXHBhcmFtIGRldGFp
bCBBbW91bnQgb2YgZGV0YWlsLgorICogXHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgdG91Y2ggcG9p
bnQuCisgKiBccGFyYW0gc2NyZWVuWCBYLWNvb3JkaW5hdGUgb2YgdGhlIGV2ZW50IGluIHNjcmVl
biBjb29yZGluYXRlcy4KKyAqIFxwYXJhbSBzY3JlZW5ZIFktY29vcmRpbmF0ZSBvZiB0aGUgZXZl
bnQgaW4gc2NyZWVuIGNvb3JkaW5hdGVzLgorICogXHBhcmFtIGNsaWVudFggWC1jb29yZGluYXRl
IG9mIHRoZSBldmVudCBpbiBjbGllbnQgY29vcmRpbmF0ZXMuCisgKiBccGFyYW0gY2xpZW50WSBZ
LWNvb3JkaW5hdGUgb2YgdGhlIGV2ZW50IGluIGNsaWVudCBjb29yZGluYXRlcy4KKyAqIFxwYXJh
bSBwYWdlWCBYLWNvb3JkaW5hdGUgb2YgdGhlIGV2ZW50IGluIHBhZ2UgY29vcmRpbmF0ZXMuCisg
KiBccGFyYW0gcGFnZVkgWS1jb29yZGluYXRlIG9mIHRoZSBldmVudCBpbiBwYWdlIGNvb3JkaW5h
dGVzLgorICogXHBhcmFtIGN0cmxLZXkgRmxhZyB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIGNvbnRy
b2wga2V5IGlzIHByZXNzZWQuCisgKiBccGFyYW0gYWx0S2V5IEZsYWcgdGhhdCB0ZWxscyB3aGV0
aGVyIHRoZSBhbHQga2V5IGlzIHByZXNzZWQuCisgKiBccGFyYW0gc2hpZnRLZXkgRmxhZyB0aGF0
IHRlbGxzIHdoZXRoZXIgdGhlIHNoaWZ0IGtleSBpcyBwcmVzc2VkLgorICogXHBhcmFtIG1ldGFL
ZXkgRmxhZyB0aGF0IHRlbGxzIHdoZXRoZXIgdGhlIG1ldGEga2V5IGlzIHByZXNzZWQuCisgKiBc
cGFyYW0gcHJlc3N1cmUgUHJlc3N1cmUgYXBwbGllZCB0byB0aGUgdG91Y2ggcG9pbnQuCisgKiBc
cGFyYW0gcmVjdFdpZHRoIFdpZHRoIG9mIHRoZSB0b3VjaCBwb2ludCByZWN0YW5nbGUuCisgKiBc
cGFyYW0gcmVjdEhlaWdodCBIZWlnaHQgb2YgdGhlIHRvdWNoIHBvaW50IHJlY3RhbmdsZS4KKyAq
IFxwYXJhbSByZWxhdGVkVGFyZ2V0IFRoZSByZWxhdGVkIHRhcmdldCBlbGVtZW50LgorICovCisK
Ky8qIQorICogXGZuIFRvdWNoRXZlbnQ6OmlkKCkgY29uc3QKKyAqIFxicmllZiBHZXQgdGhlIElE
IG9mIHRoZSB0b3VjaCBwb2ludC4KKyAqCisgKiBFdmVyeSB0b3VjaCBwb2ludCBoYXMgYW4gSUQg
dGhhdCBpcyB0aGUgc2FtZSB1bnRpbCB0aGF0IHBhcnRpY3VsYXIgZmluZ2VyIGlzIGxpZnRlZCBm
cm9tIHRoZSB0b3VjaCBzY3JlZW4uCisgKiBccmV0dXJuIHRoZSBJRCBmb3IgdGhlIHRvdWNoIHBv
aW50IGZvciB0aGlzIGV2ZW50LgorICovCisKKy8qIQorICogXGZuIFRvdWNoRXZlbnQ6OnNjcmVl
blgoKSBjb25zdAorICogXGJyaWVmIEdldCB0aGUgWC1jb29yZGluYXRlIGluIHNjcmVlbiBjb29y
ZGluYXRlIHNwYWNlLgorICovCisKKy8qIQorICogXGZuIFRvdWNoRXZlbnQ6OnNjcmVlblkoKSBj
b25zdAorICogXGJyaWVmIEdldCB0aGUgWS1jb29yZGluYXRlIGluIHNjcmVlbiBjb29yZGluYXRl
IHNwYWNlLgorICovCisKKy8qIQorICogXGZuIFRvdWNoRXZlbnQ6OmNsaWVudFgoKSBjb25zdAor
ICogXGJyaWVmIEdldCB0aGUgWC1jb29yZGluYXRlIGluIGNsaWVudCBjb29yZGluYXRlIHNwYWNl
LgorICovCisKKy8qIQorICogXGZuIFRvdWNoRXZlbnQ6OmNsaWVudFkoKSBjb25zdAorICogXGJy
aWVmIEdldCB0aGUgWS1jb29yZGluYXRlIGluIGNsaWVudCBjb29yZGluYXRlIHNwYWNlLgorICov
CisKKy8qIQorICogXGZuIFRvdWNoRXZlbnQ6OnBhZ2VYKCkgY29uc3QKKyAqIFxicmllZiBHZXQg
dGhlIFgtY29vcmRpbmF0ZSBpbiBwYWdlIGNvb3JkaW5hdGUgc3BhY2UuCisgKi8KKworLyohCisg
KiBcZm4gVG91Y2hFdmVudDo6cGFnZVkoKSBjb25zdAorICogXGJyaWVmIEdldCB0aGUgWS1jb29y
ZGluYXRlIGluIHBhZ2UgY29vcmRpbmF0ZSBzcGFjZS4KKyAqLworCisvKiEKKyAqIFxmbiBUb3Vj
aEV2ZW50OjpwcmVzc3VyZSgpIGNvbnN0CisgKiBcYnJpZWYgR2V0IHRoZSBwcmVzc3VyZSBvZiB0
aGUgdG91Y2ggcG9pbnQuCisgKi8KKworLyohCisgKiBcZm4gVG91Y2hFdmVudDo6cmVjdFdpZHRo
KCkgY29uc3QKKyAqIFxicmllZiBHZXQgdGhlIHdpZHRoIG9mIHRoZSB0b3VjaCBwb2ludCByZWN0
YW5nbGUgZm9yIHRoaXMgdG91Y2ggZXZlbnQuCisgKi8KKworLyohCisgKiBcZm4gVG91Y2hFdmVu
dDo6cmVjdEhlaWdodCgpIGNvbnN0CisgKiBcYnJpZWYgR2V0IHRoZSBoZWlnaHQgb2YgdGhlIHRv
dWNoIHBvaW50IHJlY3RhbmdsZSBmb3IgdGhpcyB0b3VjaCBldmVudC4KKyAqLworCisvKiEKKyAq
IFxmbiBUb3VjaEV2ZW50OjpyZWxhdGVkVGFyZ2V0KCkKKyAqIFxicmllZiBHZXQgdGhlIHJlbGF0
ZWQgdGFyZ2V0IGVsZW1lbnQuCisgKi8KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC1y
IDU4NDU3ZGIyODdhOCBXZWJDb3JlL2RvbS9Ub3VjaEV2ZW50LmgKLS0tIC9kZXYvbnVsbAlUaHUg
SmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5o
CVRodSBEZWMgMDMgMTU6MjQ6MzcgMjAwOSArMDIwMApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBUb3VjaEV2ZW50X2gKKyNkZWZpbmUgVG91Y2hFdmVudF9o
CisKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgorI2luY2x1ZGUgIlVJRXZlbnRXaXRoS2V5U3Rh
dGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUb3VjaEV2ZW50IDogcHVibGlj
IFVJRXZlbnRXaXRoS2V5U3RhdGUgeworcHVibGljOgorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
VG91Y2hFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VG91Y2hFdmVudCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VG91Y2hFdmVudD4g
Y3JlYXRlKAorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxl
LCBib29sIGNhbmNlbGFibGUsIAorICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmll
dywgaW50IGRldGFpbCwgaW50IGlkLAorICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBjbGllbnRYLCBpbnQgY2xpZW50WSwKKyAgICAgICAgaW50IHBhZ2VYLCBpbnQgcGFnZVks
CisgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSwKKyAgICAgICAgZmxvYXQgcHJlc3N1cmUsIGludCByZWN0V2lkdGgsIGludCByZWN0
SGVpZ2h0LAorICAgICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUb3VjaEV2ZW50KAorICAgICAgICAg
ICAgdHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCAKKyAgICAgICAgICAgIHZpZXcsIGRldGFp
bCwgaWQsCisgICAgICAgICAgICBzY3JlZW5YLCBzY3JlZW5ZLCBjbGllbnRYLCBjbGllbnRZLAor
ICAgICAgICAgICAgcGFnZVgsIHBhZ2VZLAorICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBz
aGlmdEtleSwgbWV0YUtleSwKKyAgICAgICAgICAgIHByZXNzdXJlLCByZWN0V2lkdGgsIHJlY3RI
ZWlnaHQsIHJlbGF0ZWRUYXJnZXQpKTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRUb3VjaEV2ZW50
KAorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIAorICAgICAgICBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywgaW50
IGRldGFpbCwgaW50IGlkLAorICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBj
bGllbnRYLCBpbnQgY2xpZW50WSwKKyAgICAgICAgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAg
ICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtl
eSwKKyAgICAgICAgZmxvYXQgcHJlc3N1cmUsIGludCByZWN0V2lkdGgsIGludCByZWN0SGVpZ2h0
LAorICAgICAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0KTsgCisKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNUb3VjaEV2ZW50KCkgY29uc3Q7CisKKyAgICBpbnQgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CisgICAgaW50IHNjcmVlblgoKSBjb25zdCB7IHJldHVybiBtX3Nj
cmVlblg7IH0KKyAgICBpbnQgc2NyZWVuWSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuWTsgfQor
ICAgIGludCBjbGllbnRYKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRYOyB9CisgICAgaW50IGNs
aWVudFkoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFk7IH0KKyAgICBpbnQgcGFnZVgoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VYOyB9CisgICAgaW50IHBhZ2VZKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlWTsgfQorICAgIGZsb2F0IHByZXNzdXJlKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc3VyZTsg
fQorICAgIGludCByZWN0V2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3JlY3RXaWR0aDsgfQorICAg
IGludCByZWN0SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGVpZ2h0OyB9CisgICAgRXZl
bnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQoKSB7IHJldHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCk7
IH0KKworcHJpdmF0ZToKKworICAgIFRvdWNoRXZlbnQoKTsKKworICAgIFRvdWNoRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCAK
KyAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBpbnQgZGV0YWls
LCBpbnQgaWQsCisgICAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBj
bGllbnRYLCBpbnQgY2xpZW50WSwKKyAgICAgICAgICAgICAgIGludCBwYWdlWCwgaW50IHBhZ2VZ
LAorICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtl
eSwgYm9vbCBtZXRhS2V5LAorICAgICAgICAgICAgICAgZmxvYXQgcHJlc3N1cmUsIGludCByZWN0
V2lkdGgsIGludCByZWN0SGVpZ2h0LAorICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxFdmVudFRh
cmdldD4gcmVsYXRlZFRhcmdldCk7IAorCisgICAgaW50IG1faWQ7CisgICAgaW50IG1fc2NyZWVu
WDsKKyAgICBpbnQgbV9zY3JlZW5ZOworICAgIGludCBtX2NsaWVudFg7CisgICAgaW50IG1fY2xp
ZW50WTsKKyAgICBpbnQgbV9wYWdlWDsKKyAgICBpbnQgbV9wYWdlWTsKKyAgICBmbG9hdCBtX3By
ZXNzdXJlOworICAgIGludCBtX3JlY3RXaWR0aDsKKyAgICBpbnQgbV9yZWN0SGVpZ2h0OworICAg
IFJlZlB0cjxFdmVudFRhcmdldD4gbV9yZWxhdGVkVGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVG91Y2hFdmVudF9oCmRpZmYgLXIgNTg0NTdkYjI4N2E4
IFdlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCi0tLSAvZGV2L251bGwJVGh1IEphbiAwMSAwMDow
MDowMCAxOTcwICswMDAwCisrKyBiL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRsCVRodSBEZWMg
MDMgMTU6MjQ6MzcgMjAwOSArMDIwMApAQCAtMCwwICsxLDYxIEBACisvKgorICAgIENvcHlyaWdo
dCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCittb2R1bGUgZXZlbnRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlv
bmFsPVRPVUNIX0dFU1RVUkVTLAorICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBU
b3VjaEV2ZW50IDogVUlFdmVudCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAg
ICAgICAgICAgaWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAg
c2NyZWVuWDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgICAgICAgICAgICBzY3Jl
ZW5ZOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgICAgICAgIGNsaWVudFg7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICAgICAgICAgY2xpZW50WTsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBjdHJsS2V5OworICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIHNoaWZ0S2V5OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiAgICAgICAgIGFsdEtleTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBtZXRhS2V5OworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgZmxvYXQgICAgICAgICAgIHByZXNzdXJlOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgbG9uZyAgICAgICAgICAgIHJlY3RXaWR0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgICAgICAgICAgICByZWN0SGVpZ2h0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRXZlbnRUYXJnZXQgICAgIHJlbGF0ZWRUYXJnZXQ7CisKKyAgICAgICAgW09sZFN0eWxlT2Jq
Q10gdm9pZCBpbml0VG91Y2hFdmVudChpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFi
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRE9NV2lu
ZG93IHZpZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4g
bG9uZyBkZXRhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBsb25nIHNjcmVlblgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gbG9uZyBzY3JlZW5ZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGxvbmcgY2xpZW50WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBsb25nIGNsaWVudFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gbG9uZyBwYWdlWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBsb25nIHBhZ2VZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY3RybEtleSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGFsdEtleSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHNoaWZ0S2V5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gbWV0YUtl
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBmbG9hdCBw
cmVzc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBs
b25nIHJlY3RXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBsb25nIHJlY3RIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRXZlbnRUYXJnZXQgcmVsYXRlZFRhcmdldCk7CisgICAgfTsKK30KZGlmZiAt
ciA1ODQ1N2RiMjg3YTggV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCVR1ZSBEZWMgMDEgMTE6NDM6NTUgMjAw
OSArMDIwMAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCVRodSBEZWMg
MDMgMTU6MjQ6MzcgMjAwOSArMDIwMApAQCAtMTkyLDYgKzE5Miw5IEBACiBvbnN0b3JhZ2UKIG9u
c3VzcGVuZAogb25zdWJtaXQKK29udG91Y2hkb3duCitvbnRvdWNodXAKK29udG91Y2htb3ZlCiBv
bnRpbWV1cGRhdGUKIG9udW5sb2FkCiBvbnZvbHVtZWNoYW5nZQpkaWZmIC1yIDU4NDU3ZGIyODdh
OCBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCi0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAJVHVlIERlYyAwMSAxMTo0Mzo1NSAyMDA5ICswMjAwCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJVGh1IERlYyAwMyAxNToyNDozNyAyMDA5ICswMjAwCkBAIC0zLDYg
KzMsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3Jj
aCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmls
ZS5jb20vKQorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMTgsNiArMjE5LDEy
IEBACiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtp
dEFuaW1hdGlvbkVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbndlYmtpdHRyYW5zaXRpb25l
bmRBdHRyKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb250b3VjaGRvd25B
dHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRv
dWNoZG93bkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
KyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNodXBBdHRyKSB7CisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNodXBFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisgICAgfSBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gb250b3VjaG1vdmVBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBvbmlucHV0QXR0cikgewogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5pbnB1dEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmludmFsaWRBdHRyKSB7CmRp
ZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCi0tLSBhL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCVR1ZSBEZWMgMDEgMTE6NDM6NTUgMjAwOSArMDIwMAorKysg
Yi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAlUaHUgRGVjIDAzIDE1OjI0OjM3IDIwMDkgKzAy
MDAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTY0LDYgKzU2NSw5IEBACiAgICAgICAgIGF0
dHJpYnV0ZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50Q29uc3RydWN0b3IgU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnRDb25zdHJ1
Y3RvciBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OwogI2VuZGlmCisKKyNpZiBFTkFCTEVfVE9VQ0hf
R0VTVFVSRVMKKyAgICAgICAgYXR0cmlidXRlIFRvdWNoRXZlbnRDb25zdHJ1Y3RvciBUb3VjaEV2
ZW50OwogI2VuZGlmCiAKICNlbmRpZiAvLyBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCmRp
ZmYgLXIgNTg0NTdkYjI4N2E4IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCi0tLSBhL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCVR1ZSBEZWMgMDEgMTE6NDM6NTUgMjAwOSArMDIw
MAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAlUaHUgRGVjIDAzIDE1OjI0OjM3
IDIwMDkgKzAyMDAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQorICogQ29w
eXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCw2ICs3NSwxMSBAQAog
I2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0dF
U1RVUkVTKQorI2luY2x1ZGUgIlBsYXRmb3JtVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNo
RXZlbnQuaCIKKyNlbmRpZiAvLyBUT1VDSF9HRVNUVVJFUworCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0xODg4LDYgKzE4OTQsMjIgQEAKICAg
ICByZXR1cm4gZS5pc0FjY2VwdGVkKCk7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVSRVMp
CisvKiEKKyAqIFxicmllZiBIYW5kbGUgYSB0b3VjaCBldmVudAorICoKKyAqIEhhbmRsZXMgYSB0
b3VjaCBldmVudCBieSBjYWxsaW5nIGFwcHJvcHJpYXRlIGhhbmRsZXIgZnVuY3Rpb25zLgorICog
XHJldHVybiB3aGV0aGVyIHRoZSBkZWZhdWx0IG1hbmlwdWxhdGUgaGFuZGxlciBzaG91bGQgYmUg
Y2FsbGVkIChmb3IgZXhhbXBsZSwgc2Nyb2xsem9vbSksIGRlcGVuZGluZyBvbiB3aGV0aGVyIG1h
bmlwdWxhdGUgdG9sZCBubywgb3Igd2hldGhlciBob3Zlcm1vZGUgaXMgb24sIG9yIHdoZXRoZXIg
YSBzY3JvbGxiYXIgd2FzIGhpdC4KKyAqIFxwYXJhbSBldmVudCB0aGUgdG91Y2ggZXZlbnQuCisg
KiBcc2VlIGhhbmRsZVRvdWNoRXZlbnQKKyAqLworYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVRv
dWNoKGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgaGFuZGxlVG91Y2hF
dmVudChldmVudCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQogYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CkBAIC0yNTM5LDQgKzI1NjEsMTE2IEBA
CiAgICAgfQogfQogCisjaWYgRU5BQkxFKFRPVUNIX0dFU1RVUkVTKQorLyohCisgKiBcYnJpZWYg
RGlzcGF0Y2ggcmF3IHRvdWNoIGV2ZW50cworICoKKyAqIERpc3BhdGNoZXMgcmF3IHRvdWNoIGV2
ZW50cyB0byBET00gZWxlbWVudHMsCisgKiBvbmUgcGVyIHRvdWNocG9pbnQgaW4gdGhlIHRvdWNo
IGV2ZW50LgorICogXHBhcmFtIGV2ZW50IHRoZSB0b3VjaCBldmVudAorICovCit2b2lkIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50
KQoreworICAgIGNvbnN0IFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+JiBwcyA9IGV2ZW50LnRv
dWNoUG9pbnRzKCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHBzLnNpemUoKTsgaSsrKSB7
CisgICAgICAgIGlmIChwc1tpXS5zdGF0ZSgpID09IFBsYXRmb3JtVG91Y2hTdGF0aW9uYXJ5KSB7
CisgICAgICAgICAgICAvLyBEb24ndCBkaXNwYXRjaCBhbiBldmVudCBmb3IgYSBzdGF0aW9uYXJ5
IHRvdWNoIHBvaW50CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBJ
bnRQb2ludCBwID0gcHNbaV0ucG9zKCk7CisgICAgICAgIEludFBvaW50IGZyYW1lUG9pbnQgPQor
ICAgICAgICAgICAgbV9mcmFtZS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKHApOworCisgICAg
ICAgIEludFBvaW50IGNvbnRlbnRzUG9zOworICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dmlldygpKQorICAgICAgICAgICAgY29udGVudHNQb3MgPSB2
aWV3LT53aW5kb3dUb0NvbnRlbnRzKHApOworCisgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0
ID0gaGl0VGVzdFJlc3VsdEF0UG9pbnQoCisgICAgICAgICAgICBmcmFtZVBvaW50LCAvKmFsbG93
U2hhZG93Q29udGVudCovIGZhbHNlKTsKKworICAgICAgICBOb2RlKiB0b3VjaEV2ZW50VGFyZ2V0
ID0gcmVzdWx0LmlubmVyTm9kZSgpOworCisgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgbm9kZSBp
cyBhIHRleHQgbm9kZSwgZGlzcGF0Y2ggb24gdGhlIHBhcmVudCBub2RlLAorICAgICAgICAvLyBq
dXN0IGxpa2UgaW4gbW91c2UgZXZlbnRzCisgICAgICAgIGlmICh0b3VjaEV2ZW50VGFyZ2V0LT5p
c1RleHROb2RlKCkpCisgICAgICAgICAgICB0b3VjaEV2ZW50VGFyZ2V0ID0gdG91Y2hFdmVudFRh
cmdldC0+cGFyZW50Tm9kZSgpOworCisgICAgICAgIEF0b21pY1N0cmluZyogZXZlbnROYW1lOwor
CisgICAgICAgIHN3aXRjaCAocHNbaV0uc3RhdGUoKSkgeworICAgICAgICBjYXNlIFBsYXRmb3Jt
VG91Y2hQcmVzc2VkOgorICAgICAgICAgICAgZXZlbnROYW1lID0gJmV2ZW50TmFtZXMoKS50b3Vj
aGRvd25FdmVudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBsYXRmb3JtVG91
Y2hSZWxlYXNlZDoKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9ICZldmVudE5hbWVzKCkudG91Y2h1
cEV2ZW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUGxhdGZvcm1Ub3VjaE1v
dmVkOgorICAgICAgICAgICAgZXZlbnROYW1lID0gJmV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVu
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZXZl
bnROYW1lID0gJmV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisKKyAgICAgICAgLy8gUGFnZSBYL1kgcG9zaXRpb25zIGFuZCB0aGUgcGFn
ZSB3aWR0aC9oZWlnaHQgd2lsbCBiZSBhZGp1c3RlZAorICAgICAgICAvLyBpZiB0aGUgZnJhbWUg
aXMgem9vbWVkIGluLCBzaW1pbGFyIHRvIE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudAorICAgICAg
ICBpbnQgYWRqdXN0ZWRDbGllbnRYID0gZnJhbWVQb2ludC54KCk7CisgICAgICAgIGludCBhZGp1
c3RlZENsaWVudFkgPSBmcmFtZVBvaW50LnkoKTsKKyAgICAgICAgaW50IGFkanVzdGVkV2lkdGgg
PSBwc1tpXS5yZWN0KCkud2lkdGgoKTsKKyAgICAgICAgaW50IGFkanVzdGVkSGVpZ2h0ID0gcHNb
aV0ucmVjdCgpLmhlaWdodCgpOworCisgICAgICAgIGludCBwYWdlWCA9IGNvbnRlbnRzUG9zLngo
KTsKKyAgICAgICAgaW50IHBhZ2VZID0gY29udGVudHNQb3MueSgpOworICAgICAgICBpbnQgYWRq
dXN0ZWRQYWdlWCA9IHBhZ2VYOworICAgICAgICBpbnQgYWRqdXN0ZWRQYWdlWSA9IHBhZ2VZOwor
CisgICAgICAgIGZsb2F0IHBhZ2Vab29tID0gbV9mcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKKyAg
ICAgICAgaWYgKHBhZ2Vab29tICE9IDEuMGYpIHsKKyAgICAgICAgICAgIGFkanVzdGVkQ2xpZW50
WCA9IGxyb3VuZGYoYWRqdXN0ZWRDbGllbnRYIC8gcGFnZVpvb20pOworICAgICAgICAgICAgYWRq
dXN0ZWRDbGllbnRZID0gbHJvdW5kZihhZGp1c3RlZENsaWVudFkgLyBwYWdlWm9vbSk7CisKKyAg
ICAgICAgICAgIGlmIChtX2ZyYW1lLT52aWV3KCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAg
ICAgICAgICAgICAgICBhZGp1c3RlZENsaWVudFkgLT0gKGludCkobV9mcmFtZS0+dmlldygpLT5o
b3Jpem9udGFsU2Nyb2xsYmFyKCktPnZhbHVlKCkgLyBwYWdlWm9vbSk7CisgICAgICAgICAgICBp
ZiAobV9mcmFtZS0+dmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgICAg
IGFkanVzdGVkQ2xpZW50WSAtPSAoaW50KShtX2ZyYW1lLT52aWV3KCktPnZlcnRpY2FsU2Nyb2xs
YmFyKCktPnZhbHVlKCkgLyBwYWdlWm9vbSk7CisKKyAgICAgICAgICAgIGFkanVzdGVkUGFnZVgg
PSBscm91bmRmKHBhZ2VYIC8gcGFnZVpvb20pOworICAgICAgICAgICAgYWRqdXN0ZWRQYWdlWSA9
IGxyb3VuZGYocGFnZVkgLyBwYWdlWm9vbSk7CisKKyAgICAgICAgICAgIGFkanVzdGVkV2lkdGgg
PSBscm91bmRmKHBzW2ldLnJlY3QoKS53aWR0aCgpIC8gcGFnZVpvb20pOworICAgICAgICAgICAg
YWRqdXN0ZWRIZWlnaHQgPSBscm91bmRmKHBzW2ldLnJlY3QoKS5oZWlnaHQoKSAvIHBhZ2Vab29t
KTsgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2ZyYW1l
LT52aWV3KCktPmhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgICAgICBhZGp1c3Rl
ZENsaWVudFggLT0gbV9mcmFtZS0+dmlldygpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCktPnZhbHVl
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtX2ZyYW1lLT52aWV3KCktPnZlcnRp
Y2FsU2Nyb2xsYmFyKCkpCisgICAgICAgICAgICAgICAgYWRqdXN0ZWRDbGllbnRZIC09IG1fZnJh
bWUtPnZpZXcoKS0+dmVydGljYWxTY3JvbGxiYXIoKS0+dmFsdWUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIFJlZlB0cjxUb3VjaEV2ZW50PiBkb21Ub3VjaEV2ZW50ID0gVG91Y2hFdmVudDo6Y3Jl
YXRlKAorICAgICAgICAgICAgKmV2ZW50TmFtZSwKKyAgICAgICAgICAgIHRydWUsICAvLyBjYW5C
dWJibGUKKyAgICAgICAgICAgIGZhbHNlLCAvLyBjYW5jZWxhYmxlCisgICAgICAgICAgICB0b3Vj
aEV2ZW50VGFyZ2V0LT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLAorICAgICAgICAgICAgMCwK
KyAgICAgICAgICAgIHBzW2ldLmlkKCksCisgICAgICAgICAgICBwc1tpXS5zY3JlZW5Qb3MoKS54
KCksIHBzW2ldLnNjcmVlblBvcygpLnkoKSwKKyAgICAgICAgICAgIGFkanVzdGVkQ2xpZW50WCwg
YWRqdXN0ZWRDbGllbnRZLAorICAgICAgICAgICAgYWRqdXN0ZWRQYWdlWCwgYWRqdXN0ZWRQYWdl
WSwKKyAgICAgICAgICAgIGZhbHNlLCAvLyBjdHJsCisgICAgICAgICAgICBmYWxzZSwgLy8gYWx0
CisgICAgICAgICAgICBmYWxzZSwgLy8gc2hpZnQKKyAgICAgICAgICAgIGZhbHNlLCAvLyBtZXRh
CisgICAgICAgICAgICBwc1tpXS5wcmVzc3VyZSgpLAorICAgICAgICAgICAgYWRqdXN0ZWRXaWR0
aCwKKyAgICAgICAgICAgIGFkanVzdGVkSGVpZ2h0LAorICAgICAgICAgICAgMCk7CisKKyAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIHRvdWNoRXZlbnRUYXJnZXQtPmRpc3Bh
dGNoRXZlbnQoZG9tVG91Y2hFdmVudCwgZWMpOworICAgIH0KIH0KKyNlbmRpZiAvLyBFTkFCTEUo
VE9VQ0hfR0VTVFVSRVMpCisKK30KZGlmZiAtciA1ODQ1N2RiMjg3YTggV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCi0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAlUdWUgRGVjIDAx
IDExOjQzOjU1IDIwMDkgKzAyMDAKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCVRo
dSBEZWMgMDMgMTU6MjQ6MzcgMjAwOSArMDIwMApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw3ICs2
MiwxMSBAQAogY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogY2xhc3MgVGV4dEV2ZW50OwogY2xh
c3MgV2lkZ2V0OwotICAgIAorCisjaWYgRU5BQkxFKFRPVUNIX0dFU1RVUkVTKQorY2xhc3MgUGxh
dGZvcm1Ub3VjaEV2ZW50OworI2VuZGlmCisKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogZXh0
ZXJuIGNvbnN0IGludCBMaW5rRHJhZ0h5c3RlcmVzaXM7CiBleHRlcm4gY29uc3QgaW50IEltYWdl
RHJhZ0h5c3RlcmVzaXM7CkBAIC0xMzksNiArMTQ0LDEwIEBACiAgICAgYm9vbCBoYW5kbGVNb3Vz
ZVJlbGVhc2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICBib29sIGhhbmRs
ZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfR0VT
VFVSRVMpCisgICAgYm9vbCBoYW5kbGVUb3VjaChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmKTsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4
dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICNlbmRpZgpAQCAtMzk4LDYg
KzQwNywxMSBAQAogICAgIGJvb2wgbV9zZW5kaW5nRXZlbnRUb1N1YnZpZXc7CiAgICAgaW50IG1f
YWN0aXZhdGlvbkV2ZW50TnVtYmVyOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoVE9VQ0hfR0VTVFVS
RVMpCisgICAgdm9pZCBoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYp
OworI2VuZGlmCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44570</attachid>
            <date>2009-12-09 14:55:18 -0800</date>
            <delta_ts>2009-12-11 06:08:04 -0800</delta_ts>
            <desc>Added interfaces for touch event support in JavaScript.</desc>
            <filename>bug-32114-20091209235512.patch</filename>
            <type>text/plain</type>
            <size>43607</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTM2MzFkYy4uYWIwYzAyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4OSBAQAorMjAwOS0xMi0wOSAgU2ltb24gSGF1c21h
bm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBu
b21vdm9rLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBpbnRlcmZhY2VzIGZvciB0b3VjaCBldmVudCBzdXBwb3J0IGluIEphdmFTY3Jp
cHQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMy
MTE0CisKKyAgICAgICAgVGhlIFRvdWNoLCBUb3VjaEV2ZW50IGFuZCBUb3VjaExpc3QgaW50ZXJm
YWNlcyBjb21lIHN0cmFpZ2h0IGZyb20KKyAgICAgICAgQW5kcm9pZCdzIGNvcHkgb2YgV2ViS2l0
IChlY2xhaXJlIGJyYW5jaCkuCisKKyAgICAgICAgVGhlIFBsYXRmb3JtVG91Y2hFdmVudCBhbmQg
UGxhdGZvcm1Ub3VjaFBvaW50IGNvZGUgd2FzIHdyaXR0ZW4gYnkKKyAgICAgICAgdXMuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGFkZGVkLCB3ZSBhcmUganVzdCBhZGRpbmcgaW50ZXJmYWNlcwor
ICAgICAgICB3aXRoIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
SlMpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5o
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Oik6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmlk
bDoKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6Omlz
VG91Y2hFdmVudCk6CisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiBkb20vVG91Y2guY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnRlbnRzWCk6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c1kpOgorICAgICAgICAo
V2ViQ29yZTo6VG91Y2g6OlRvdWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoOjp1cGRhdGVM
b2NhdGlvbik6CisgICAgICAgICogZG9tL1RvdWNoLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6VG91Y2g6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6ZnJhbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VG91Y2g6OnRhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6
aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6Y2xpZW50WCk6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaDo6Y2xpZW50WSk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6c2Ny
ZWVuWCk6CisgICAgICAgIChXZWJDb3JlOjpUb3VjaDo6c2NyZWVuWSk6CisgICAgICAgIChXZWJD
b3JlOjpUb3VjaDo6cGFnZVgpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2g6OnBhZ2VZKToKKyAg
ICAgICAgKiBkb20vVG91Y2guaWRsOiBBZGRlZC4KKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6VG91Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudCk6CisgICAgICAgICog
ZG9tL1RvdWNoRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUb3VjaEV2ZW50Ojpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6dG91Y2hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpUb3VjaEV2ZW50Ojp0YXJnZXRUb3VjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlRvdWNoRXZlbnQ6OmNoYW5nZWRUb3VjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZl
bnQ6OlRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6aXNUb3VjaEV2
ZW50KToKKyAgICAgICAgKiBkb20vVG91Y2hFdmVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIGRv
bS9Ub3VjaExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoTGlzdDo6aXRl
bSk6CisgICAgICAgICogZG9tL1RvdWNoTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlRvdWNoTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoTGlzdDo6bGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoTGlzdDo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlRvdWNoTGlzdDo6VG91Y2hMaXN0KToKKyAgICAgICAgKiBkb20vVG91Y2hMaXN0LmlkbDog
QWRkZWQuCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAg
ICogcGFnZS9ET01XaW5kb3cuaWRsOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hF
dmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudDo6UGxh
dGZvcm1Ub3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudDo6
dG91Y2hQb2ludHMpOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtVG91Y2hQb2ludC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hQb2ludDo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Ub3VjaFBvaW50OjpzdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNo
UG9pbnQ6OnNjcmVlblBvcyk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVRvdWNoUG9pbnQ6
OnBvcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtVG91Y2hFdmVudDo6UGxhdGZvcm1Ub3Vj
aEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNoUG9pbnRRdC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRv
dWNoUG9pbnQpOgorCiAyMDA5LTEyLTA1ICBBZGFtIExhbmdsZXkgIDxhZ2xAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTU5MWRjMC4uM2IwODc3OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJv
CkBAIC0xODIsNiArMTgyLDkgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NJTkdMRV9USFJF
QURFRD0xKSB7CiAKIERFRklORVMgKz0gV1RGX0NIQU5HRVM9MQogCisjIEVuYWJsZSB0b3VjaCBl
dmVudCBzdXBwb3J0IHdpdGggUXQgNC42CishbGVzc1RoYW4oUVRfTUlOT1JfVkVSU0lPTiwgNik6
IERFRklORVMgKz0gRU5BQkxFX1RPVUNIX0VWRU5UUz0xCisKICMgVXNlZCB0byBjb21wdXRlIGRl
ZmF1bHRzIGZvciB0aGUgYnVpbGQtd2Via2l0IHNjcmlwdAogQ09ORklHKGNvbXB1dGVfZGVmYXVs
dHMpIHsKICAgICBtZXNzYWdlKCQkREVGSU5FUykKQEAgLTM2OCw2ICszNzEsOSBAQCBJRExfQklO
RElOR1MgKz0gXAogICAgIGRvbS9SYW5nZS5pZGwgXAogICAgIGRvbS9UZXh0LmlkbCBcCiAgICAg
ZG9tL1RleHRFdmVudC5pZGwgXAorICAgIGRvbS9Ub3VjaC5pZGwgXAorICAgIGRvbS9Ub3VjaEV2
ZW50LmlkbCBcCisgICAgZG9tL1RvdWNoTGlzdC5pZGwgXAogICAgIGRvbS9UcmVlV2Fsa2VyLmlk
bCBcCiAgICAgZG9tL1VJRXZlbnQuaWRsIFwKICAgICBkb20vV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aWRsIFwKQEAgLTkxNyw2ICs5MjMsOSBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vVGFnTm9kZUxp
c3QuY3BwIFwKICAgICBkb20vVGV4dC5jcHAgXAogICAgIGRvbS9UZXh0RXZlbnQuY3BwIFwKKyAg
ICBkb20vVG91Y2guY3BwIFwKKyAgICBkb20vVG91Y2hFdmVudC5jcHAgXAorICAgIGRvbS9Ub3Vj
aExpc3QuY3BwIFwKICAgICBkb20vVHJhdmVyc2FsLmNwcCBcCiAgICAgZG9tL1RyZWVXYWxrZXIu
Y3BwIFwKICAgICBkb20vVUlFdmVudC5jcHAgXApAQCAtMTYwMiw2ICsxNjExLDkgQEAgSEVBREVS
UyArPSBcCiAgICAgZG9tL1RhZ05vZGVMaXN0LmggXAogICAgIGRvbS9UZXh0RXZlbnQuaCBcCiAg
ICAgZG9tL1RleHQuaCBcCisgICAgZG9tL1RvdWNoLmggXAorICAgIGRvbS9Ub3VjaEV2ZW50Lmgg
XAorICAgIGRvbS9Ub3VjaExpc3QuaCBcCiAgICAgZG9tL1RyYW5zZm9ybVNvdXJjZS5oIFwKICAg
ICBkb20vVHJhdmVyc2FsLmggXAogICAgIGRvbS9UcmVlV2Fsa2VyLmggXApAQCAtMTk0NSw2ICsx
OTU3LDggQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRs
ZS5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5oIFwKKyAgICBwbGF0Zm9ybS9Q
bGF0Zm9ybVRvdWNoRXZlbnQuaCBcCisgICAgcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50Lmgg
XAogICAgIHBsYXRmb3JtL3F0L0NsaXBib2FyZFF0LmggXAogICAgIHBsYXRmb3JtL3F0L1FXZWJQ
YWdlQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1FXZWJQb3B1cC5oIFwKQEAgLTI0MDMsNiAr
MjQxNyw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtS2V5Ym9hcmRF
dmVudFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQuY3BwIFwK
ICAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCBcCisgICAgcGxhdGZvcm0vcXQv
UGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVRvdWNo
UG9pbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BvcHVwTWVudVF0LmNwcCBcCiAgICAgcGxh
dGZvcm0vcXQvUVdlYlBvcHVwLmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5j
cHAgXApAQCAtMjU1MSw2ICsyNTY3LDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9FVkVO
VFNPVVJDRT0xKSB7CiAgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX0VW
RU5UU09VUkNFPTEKIH0KIAorY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1RPVUNIX0VWRU5UUz0x
KSB7CisgICAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1RPVUNIX0VWRU5U
Uz0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TUUxJVEU9MSkgewogICAgICFzeXN0
ZW0tc3FsaXRlOmV4aXN0cyggJCR7U1FMSVRFM1NSQ0RJUn0vc3FsaXRlMy5jICkgewogICAgICAg
ICAgICAgIyBCdWlsZCBzcWxpdGUzIGludG8gV2ViQ29yZSBmcm9tIHNvdXJjZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudEN1c3RvbS5jcHAKaW5kZXggODVhN2E5NS4uMDRjZWVjNSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCkBAIC03OCw2ICs3OCwxMSBAQAogI2luY2x1ZGUg
IlNWR1pvb21FdmVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2lu
Y2x1ZGUgIkpTVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNlbmRpZgor
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTMsNiAr
MTE4LDEwIEBAIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEV2ZW50KiBldmVudCkKICNlbmRpZgogICAgICAgICBlbHNlIGlmIChl
dmVudC0+aXNDb21wb3NpdGlvbkV2ZW50KCkpCiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIENvbXBvc2l0aW9uRXZlbnQs
IGV2ZW50KTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBlbHNlIGlmIChldmVu
dC0+aXNUb3VjaEV2ZW50KCkpCisgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpF
Q1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFRvdWNoRXZlbnQsIGV2ZW50KTsKKyNlbmRp
ZgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpFQ1Rf
V1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFVJRXZlbnQsIGV2ZW50KTsKICAgICB9IGVsc2Ug
aWYgKGV2ZW50LT5pc011dGF0aW9uRXZlbnQoKSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBmOWRjOTdmLi5jYjFl
YjNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC0yOTg1LDYgKzI5ODUsMTAgQEAgdm9pZCBEb2N1bWVudDo6YWRk
TGlzdGVuZXJUeXBlSWZOZWVkZWQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCiAgICAg
ICAgIGFkZExpc3RlbmVyVHlwZShUUkFOU0lUSU9ORU5EX0xJU1RFTkVSKTsKICAgICBlbHNlIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCkKICAgICAgICAgYWRk
TGlzdGVuZXJUeXBlKEJFRk9SRUxPQURfTElTVEVORVIpOworICAgIGVsc2UgaWYgKGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkudG91Y2hzdGFydEV2ZW50CisgICAgICAgICAgICAgfHwgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS50b3VjaG1vdmVFdmVudAorICAgICAgICAgICAgIHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCkKKyAgICAgICAgYWRkTGlzdGVuZXJU
eXBlKFRPVUNIX0xJU1RFTkVSKTsKIH0KIAogQ1NTU3R5bGVEZWNsYXJhdGlvbiogRG9jdW1lbnQ6
OmdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAzN2Rh
ZmM5Li4wZjEwOGU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTI1Miw2ICsyNTIsMTEgQEAgcHVibGljOgogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVzZXQpOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoc2VhcmNoKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHNlbGVjdHN0YXJ0KTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hzdGFydCk7CisgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih0b3VjaG1vdmUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIodG91Y2hlbmQpOworI2VuZGlmCiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5
cGUoKSBjb25zdCB7IHJldHVybiBtX2RvY1R5cGUuZ2V0KCk7IH0KIApAQCAtNjIwLDcgKzYyNSw4
IEBAIHB1YmxpYzoKICAgICAgICAgQU5JTUFUSU9OU1RBUlRfTElTVEVORVIgICAgICAgICAgICAg
ID0gMHgyMDAsCiAgICAgICAgIEFOSU1BVElPTklURVJBVElPTl9MSVNURU5FUiAgICAgICAgICA9
IDB4NDAwLAogICAgICAgICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAw
eDgwMCwKLSAgICAgICAgQkVGT1JFTE9BRF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHgx
MDAwCisgICAgICAgIEJFRk9SRUxPQURfTElTVEVORVIgICAgICAgICAgICAgICAgICA9IDB4MTAw
MCwKKyAgICAgICAgVE9VQ0hfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgyMDAw
CiAgICAgfTsKIAogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5l
clR5cGUpIGNvbnN0IHsgcmV0dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0ZW5lclR5cGUpOyB9
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKaW5kZXggMjEwZjVmZi4uNTFkMGJmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCisrKyBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMzIwLDYgKzMy
MCwxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50
TGlzdGVuZXIgb25yZXNldDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0
ZW5lciBvbnNlYXJjaDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5l
ciBvbnNlbGVjdHN0YXJ0OworI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5B
QkxFX1RPVUNIX0VWRU5UUworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3Rl
bmVyIG9udG91Y2hzdGFydDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0
ZW5lciBvbnRvdWNobW92ZTsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0
ZW5lciBvbnRvdWNoZW5kOworI2VuZGlmCiAjZW5kaWYKICNlbmRpZgogICAgIH07CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
OTdkM2ViNC4uMWYwMjVlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtODgsNiArODgsMTEgQEAgcHVibGljOgogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVzZXQpOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoc2VhcmNoKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHNlbGVjdHN0YXJ0KTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hzdGFydCk7CisgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih0b3VjaG1vdmUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIodG91Y2hlbmQpOworI2VuZGlmCiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGdldElEQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwg
Yi9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAppbmRleCBkOTBmODE5Li41OWJmODZhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bApAQCAtMjAzLDYgKzIwMywxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25yZXNldDsKICAgICAgICAgYXR0cmlidXRlIFtEb250
RW51bV0gRXZlbnRMaXN0ZW5lciBvbnNlYXJjaDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51
bV0gRXZlbnRMaXN0ZW5lciBvbnNlbGVjdHN0YXJ0OworI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNI
X0VWRU5UUykgJiYgRU5BQkxFX1RPVUNIX0VWRU5UUworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtXSBFdmVudExpc3RlbmVyIG9udG91Y2hzdGFydDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250
RW51bV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNobW92ZTsKKyAgICAgICAgYXR0cmlidXRlIFtEb250
RW51bV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOworI2VuZGlmCiAjZW5kaWYKICNlbmRpZgog
ICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9XZWJDb3JlL2RvbS9F
dmVudC5jcHAKaW5kZXggZWQxMTQwYS4uYmUyYjM3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
RXZlbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMTg2LDcgKzE4NiwxNCBA
QCBib29sIEV2ZW50Ojppc0Vycm9yRXZlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
ICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgRXZlbnQ6Omlz
VG91Y2hFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJv
b2wgRXZlbnQ6OnN0b3Jlc1Jlc3VsdEFzU3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFs
c2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvV2ViQ29yZS9kb20vRXZlbnQu
aAppbmRleCBlYzc2OGU5Li40NjI0NjYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9FdmVudC5o
CisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50LmgKQEAgLTEyNiw2ICsxMjYsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Vy
cm9yRXZlbnQoKSBjb25zdDsKICNlbmRpZgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1RvdWNoRXZlbnQoKSBjb25zdDsKKyNlbmRpZgogICAgICAgICAK
ICAgICAgICAgYm9vbCBwcm9wYWdhdGlvblN0b3BwZWQoKSBjb25zdCB7IHJldHVybiBtX3Byb3Bh
Z2F0aW9uU3RvcHBlZDsgfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgg
Yi9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggOGMzZTNlNC4uMDhhZjc1MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1dlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaApAQCAtMTQ2LDYgKzE0NiwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAg
IG1hY3JvKG9yaWVudGF0aW9uY2hhbmdlKSBcCiAgICAgXAorICAgIG1hY3JvKHRvdWNoc3RhcnQp
IFwKKyAgICBtYWNybyh0b3VjaG1vdmUpIFwKKyAgICBtYWNybyh0b3VjaGVuZCkgXAorICAgIFwK
IC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIAogICAgIGNsYXNzIEV2ZW50TmFt
ZXMgOiBwdWJsaWMgTm9uY29weWFibGUgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vVG91Y2gu
Y3BwIGIvV2ViQ29yZS9kb20vVG91Y2guY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZkZDJiOGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9Ub3VjaC5jcHAK
QEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVu
IFNvdXJjZSBQcm9qZWN0CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisKKyNpbmNsdWRlICJUb3VjaC5oIgorCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGludCBjb250ZW50c1goRnJh
bWUqIGZyYW1lKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiAwOworICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIWZyYW1lVmlldykK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZyYW1lVmlldy0+c2Nyb2xsWCgpOworfQor
CitzdGF0aWMgaW50IGNvbnRlbnRzWShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmll
dygpOworICAgIGlmICghZnJhbWVWaWV3KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
ZnJhbWVWaWV3LT5zY3JvbGxZKCk7Cit9CisKK1RvdWNoOjpUb3VjaChGcmFtZSogZnJhbWUsIEV2
ZW50VGFyZ2V0KiB0YXJnZXQsIHVuc2lnbmVkIGlkZW50aWZpZXIsIAorICAgICAgICBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZKQorICAgIDogbV9mcmFtZShm
cmFtZSkKKyAgICAsIG1fdGFyZ2V0KHRhcmdldCkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlm
aWVyKQorICAgICwgbV9jbGllbnRYKHBhZ2VYIC0gY29udGVudHNYKG1fZnJhbWUuZ2V0KCkpKQor
ICAgICwgbV9jbGllbnRZKHBhZ2VZIC0gY29udGVudHNZKG1fZnJhbWUuZ2V0KCkpKQorICAgICwg
bV9zY3JlZW5YKHNjcmVlblgpCisgICAgLCBtX3NjcmVlblkoc2NyZWVuWSkKKyAgICAsIG1fcGFn
ZVgocGFnZVgpCisgICAgLCBtX3BhZ2VZKHBhZ2VZKQoreworfQorCit2b2lkIFRvdWNoOjp1cGRh
dGVMb2NhdGlvbihpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZ
KQoreworICAgIG1fY2xpZW50WCA9IHBhZ2VYIC0gY29udGVudHNYKG1fZnJhbWUuZ2V0KCkpOwor
ICAgIG1fY2xpZW50WSA9IHBhZ2VZIC0gY29udGVudHNZKG1fZnJhbWUuZ2V0KCkpOworICAgIG1f
c2NyZWVuWCA9IHNjcmVlblg7CisgICAgbV9zY3JlZW5ZID0gc2NyZWVuWTsKKyAgICBtX3BhZ2VY
ID0gcGFnZVg7CisgICAgbV9wYWdlWSA9IHBhZ2VZOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ub3VjaC5oIGIvV2ViQ29y
ZS9kb20vVG91Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjM5ZmFm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vVG91Y2guaApAQCAtMCwwICsxLDc5IEBA
CisvKgorICogQ29weXJpZ2h0IDIwMDgsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBUT1VDSF9IXworI2RlZmluZSBUT1VDSF9IXworCisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRvdWNoIDogcHVibGljIFJlZkNvdW50ZWQ8VG91Y2g+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUb3VjaD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgRXZlbnRUYXJnZXQq
IHRhcmdldCwKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXIsIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVkpCisgICAgeworICAgICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFRvdWNoKGZyYW1lLCB0YXJnZXQsIGlkZW50aWZpZXIsIHNjcmVlblgsIAor
ICAgICAgICAgICAgICAgIHNjcmVlblksIHBhZ2VYLCBwYWdlWSkpOworICAgIH0KKworICAgIHZv
aWQgdXBkYXRlTG9jYXRpb24oaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGlu
dCBwYWdlWSk7CisKKyAgICBGcmFtZSogZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lLmdl
dCgpOyB9CisgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0
LmdldCgpOyB9CisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIGludCBjbGllbnRYKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRYOyB9
CisgICAgaW50IGNsaWVudFkoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFk7IH0KKyAgICBpbnQg
c2NyZWVuWCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuWDsgfQorICAgIGludCBzY3JlZW5ZKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JlZW5ZOyB9CisgICAgaW50IHBhZ2VYKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlWDsgfQorICAgIGludCBwYWdlWSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVk7IH0K
KworcHJpdmF0ZToKKyAgICBUb3VjaChGcmFtZSogZnJhbWUsIEV2ZW50VGFyZ2V0KiB0YXJnZXQs
IHVuc2lnbmVkIGlkZW50aWZpZXIsCisgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVl
blksIGludCBwYWdlWCwgaW50IHBhZ2VZKTsKKworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsK
KyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IG1fdGFyZ2V0OworICAgIHVuc2lnbmVkIG1faWRlbnRp
ZmllcjsKKyAgICBpbnQgbV9jbGllbnRYOworICAgIGludCBtX2NsaWVudFk7CisgICAgaW50IG1f
c2NyZWVuWDsKKyAgICBpbnQgbV9zY3JlZW5ZOworICAgIGludCBtX3BhZ2VYOworICAgIGludCBt
X3BhZ2VZOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFRPVUNIX0VWRU5UUykKKworI2VuZGlmIC8qIFRPVUNIX0hfICovCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9Ub3VjaC5pZGwgYi9XZWJDb3JlL2RvbS9Ub3VjaC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uMjliZjE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
ZG9tL1RvdWNoLmlkbApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IDIwMDgsIFRo
ZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGV2ZW50cyB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsCisgICAg
ICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFRvdWNoIHsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIGxvbmcgICAgICAgICAgICAgY2xpZW50WDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgICAgICAgICAgICAgY2xpZW50WTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgICAgICAgICAgICAgc2NyZWVuWDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgICAgICAgICAgICAgc2NyZWVuWTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxv
bmcgICAgICAgICAgICAgcGFnZVg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAg
ICAgICAgICAgIHBhZ2VZOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRXZlbnRUYXJnZXQg
ICAgICB0YXJnZXQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAg
IGlkZW50aWZpZXI7CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuY3BwIGIvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNTRmZmYxZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCwgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorCisjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RvdWNoRXZlbnQ6OlRvdWNoRXZlbnQoVG91Y2hMaXN0
KiB0b3VjaGVzLCBUb3VjaExpc3QqIHRhcmdldFRvdWNoZXMsCisgICAgICAgIFRvdWNoTGlzdCog
Y2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgIFBhc3NS
ZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZKQorICAgIDogTW91c2VSZWxhdGVkRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1
ZSwgdmlldywgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAorICAgICAgICAgICAg
ICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpCisgICAgLCBtX3RvdWNoZXMo
dG91Y2hlcykKKyAgICAsIG1fdGFyZ2V0VG91Y2hlcyh0YXJnZXRUb3VjaGVzKQorICAgICwgbV9j
aGFuZ2VkVG91Y2hlcyhjaGFuZ2VkVG91Y2hlcykKK3sKK30KKwordm9pZCBUb3VjaEV2ZW50Ojpp
bml0VG91Y2hFdmVudChUb3VjaExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hl
cywKKyAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCAKKyAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGludCBzY3Jl
ZW5YLCBpbnQgc2NyZWVuWSwgaW50IGNsaWVudFgsIGludCBjbGllbnRZKQoreworICAgIGlmIChk
aXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGluaXRVSUV2ZW50KHR5cGUsIHRy
dWUsIHRydWUsIHZpZXcsIDApOworCisgICAgbV9zY3JlZW5YID0gc2NyZWVuWDsKKyAgICBtX3Nj
cmVlblkgPSBzY3JlZW5ZOworICAgIGluaXRDb29yZGluYXRlcyhjbGllbnRYLCBjbGllbnRZKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VW
RU5UUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaCBiL1dlYkNvcmUvZG9t
L1RvdWNoRXZlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWZjZWJk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5oCkBAIC0wLDAgKzEs
NzggQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFRvdWNoRXZlbnRfaAorI2RlZmluZSBUb3VjaEV2ZW50X2gK
KworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNpbmNsdWRlICJNb3VzZVJlbGF0ZWRFdmVu
dC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFRvdWNoRXZlbnQgOiBwdWJsaWMgTW91c2VSZWxhdGVkRXZlbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFRvdWNoRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFRvdWNoRXZlbnQpOworICAgIH0KKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxUb3VjaEV2ZW50PiBjcmVhdGUoVG91Y2hMaXN0KiB0b3VjaGVzLCAKKyAgICAgICAgICAg
IFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywgCisg
ICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RW
aWV3PiB2aWV3LAorICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFn
ZVgsIGludCBwYWdlWSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVG91Y2hF
dmVudCh0b3VjaGVzLCB0YXJnZXRUb3VjaGVzLCBjaGFuZ2VkVG91Y2hlcywKKyAgICAgICAgICAg
ICAgICB0eXBlLCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVkpKTsKKyAgICB9
CisKKyAgICB2b2lkIGluaXRUb3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlcywgVG91Y2hMaXN0
KiB0YXJnZXRUb3VjaGVzLAorICAgICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAgIFBhc3NSZWZQdHI8QWJzdHJh
Y3RWaWV3PiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIAorICAgICAgICAgICAgaW50
IGNsaWVudFgsIGludCBjbGllbnRZKTsKKworICAgIFRvdWNoTGlzdCogdG91Y2hlcygpIGNvbnN0
IHsgcmV0dXJuIG1fdG91Y2hlcy5nZXQoKTsgfQorICAgIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hl
cygpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0VG91Y2hlcy5nZXQoKTsgfQorICAgIFRvdWNoTGlz
dCogY2hhbmdlZFRvdWNoZXMoKSBjb25zdCB7IHJldHVybiBtX2NoYW5nZWRUb3VjaGVzLmdldCgp
OyB9CisKK3ByaXZhdGU6CisgICAgVG91Y2hFdmVudCgpIHt9CisgICAgVG91Y2hFdmVudChUb3Vj
aExpc3QqIHRvdWNoZXMsIFRvdWNoTGlzdCogdGFyZ2V0VG91Y2hlcywKKyAgICAgICAgICAgIFRv
dWNoTGlzdCogY2hhbmdlZFRvdWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwKKyAgICAg
ICAgICAgIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgaW50IHNjcmVlblgsIGludCBzY3JlZW5Z
LCBpbnQgcGFnZVgsCisgICAgICAgICAgICBpbnQgcGFnZVkpOworCisgICAgdmlydHVhbCBib29s
IGlzVG91Y2hFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFJlZlB0cjxUb3Vj
aExpc3Q+IG1fdG91Y2hlczsKKyAgICBSZWZQdHI8VG91Y2hMaXN0PiBtX3RhcmdldFRvdWNoZXM7
CisgICAgUmVmUHRyPFRvdWNoTGlzdD4gbV9jaGFuZ2VkVG91Y2hlczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRp
ZiAvLyBUb3VjaEV2ZW50X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQuaWRs
IGIvV2ViQ29yZS9kb20vVG91Y2hFdmVudC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYjcxNDhiMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuaWRsCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgZXZlbnRzIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUywKKyAgICAgICAgR2Vu
ZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gVG91Y2hFdmVudCA6IFVJRXZlbnQgeworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgVG91Y2hMaXN0IHRvdWNoZXM7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBUb3VjaExpc3QgdGFyZ2V0VG91Y2hlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFRvdWNoTGlzdCBjaGFuZ2VkVG91Y2hlczsKKworICAgICAgICB2b2lkIGluaXRUb3VjaEV2
ZW50KGluIFRvdWNoTGlzdCB0b3VjaGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFRvdWNoTGlzdCB0YXJnZXRUb3VjaGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IFRvdWNoTGlzdCBjaGFuZ2VkVG91Y2hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBET01XaW5k
b3cgdmlldywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBsb25nIHNjcmVlblgsIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGxvbmcgc2NyZWVuWSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gbG9uZyBjbGllbnRYLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBsb25nIGNsaWVudFkpOworICAgIH07Cit9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2RvbS9Ub3VjaExpc3QuY3BwIGIvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTY3ZTQyCi0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9kb20vVG91Y2hMaXN0LmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0
IDIwMDgsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKworI2luY2x1ZGUgIlRvdWNo
TGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RvdWNoKiBUb3VjaExpc3Q6Oml0ZW0o
dW5zaWduZWQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IG1fdmFsdWVzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fdmFsdWVzW2luZGV4XS5nZXQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1RvdWNoTGlzdC5oIGIvV2ViQ29yZS9kb20vVG91Y2hMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNjEzNTBiMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvZG9t
L1RvdWNoTGlzdC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCwgVGhl
IEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRPVUNITElTVF9I
XworI2RlZmluZSBUT1VDSExJU1RfSF8KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNp
bmNsdWRlICJUb3VjaC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRvdWNoTGlzdCA6
IHB1YmxpYyBSZWZDb3VudGVkPFRvdWNoTGlzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFRvdWNoTGlzdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVG91Y2hMaXN0KTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlcy5zaXplKCk7IH0KKworICAgIFRvdWNoKiBpdGVtKHVuc2lnbmVkKTsK
KworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFBhc3NSZWZQdHI8VG91Y2g+IHRvdWNoKSB7IG1fdmFs
dWVzLmFwcGVuZCh0b3VjaCk7IH0KKworcHJpdmF0ZToKKyAgICBUb3VjaExpc3QoKSB7fQorCisg
ICAgVmVjdG9yPFJlZlB0cjxUb3VjaD4gPiBtX3ZhbHVlczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRpZiAvKiBU
T1VDSExJU1RfSF8gKi8KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1RvdWNoTGlzdC5pZGwgYi9X
ZWJDb3JlL2RvbS9Ub3VjaExpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmMyYWE1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2RvbS9Ub3VjaExpc3QuaWRs
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgZXZlbnRzIHsKKworICAgIGludGVyZmFj
ZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUywKKyAgICAgICAgR2VuZXJhdGVD
b25zdHJ1Y3RvciwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIFRvdWNoTGlzdCB7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKworICAgICAg
ICBUb3VjaCBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIH07Cit9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvV2ViQ29yZS9odG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbgppbmRleCBmOTFhZGFkLi40MjBkNmE3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4KQEAgLTE5OSw2ICsxOTksOSBAQCBvbnN0b3JhZ2UKIG9uc3VzcGVu
ZAogb25zdWJtaXQKIG9udGltZXVwZGF0ZQorb250b3VjaHN0YXJ0CitvbnRvdWNobW92ZQorb250
b3VjaGVuZAogb251bmxvYWQKIG9udm9sdW1lY2hhbmdlCiBvbndhaXRpbmcKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCmluZGV4IGRmM2NiN2QuLmNiNjI4MmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcApAQCAtMjIyLDYg
KzIyMiwxMiBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmlucHV0RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cikpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uaW52YWxpZEF0dHIpIHsKICAg
ICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNoc3RhcnRBdHRyKSB7CisgICAgICAgIHNldEF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoc3RhcnRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisgICAgfSBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gb250b3VjaG1vdmVBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIGF0dHIpKTsKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnRv
dWNoZW5kQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaCBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCAxNDZmMzkwLi5lYmM0NmZkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCkBAIC0zMjIsNiArMzIyLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgREVG
SU5FX01BUFBFRF9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0YW5pbWF0aW9uZW5kLCB3
ZWJraXRBbmltYXRpb25FbmQpOwogICAgICAgICBERUZJTkVfTUFQUEVEX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXR0cmFuc2l0aW9uZW5kLCB3ZWJraXRUcmFuc2l0aW9uRW5kKTsKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIodG91Y2hzdGFydCk7CisgICAgICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIodG91Y2htb3ZlKTsKKyAgICAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih0b3VjaGVuZCk7CisjZW5kaWYKICAgICAgICAgdm9pZCBjYXB0dXJlRXZlbnRzKCk7CiAgICAg
ICAgIHZvaWQgcmVsZWFzZUV2ZW50cygpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCmluZGV4IGY5MjAxNmEuLjI2
MWUyZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC0yOTAsNiArMjkwLDExIEBAIG1vZHVsZSB3aW5kb3cg
ewogI2lmIGRlZmluZWQoRU5BQkxFX09SSUVOVEFUSU9OX0VWRU5UUykgJiYgRU5BQkxFX09SSUVO
VEFUSU9OX0VWRU5UUwogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm9yaWVudGF0
aW9uY2hhbmdlOwogI2VuZGlmCisgI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYg
RU5BQkxFX1RPVUNIX0VWRU5UUworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExp
c3RlbmVyIG9udG91Y2hzdGFydDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRM
aXN0ZW5lciBvbnRvdWNobW92ZTsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRM
aXN0ZW5lciBvbnRvdWNoZW5kOworICNlbmRpZgogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGlu
dGVyZmFjZQogICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3Ry
aW5nIHR5cGUsCkBAIC01NjcsNiArNTcyLDEwIEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAj
ZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5UUykgJiYgRU5BQkxFX1RPVUNI
X0VWRU5UUworICAgICAgICBhdHRyaWJ1dGUgVG91Y2hFdmVudENvbnN0cnVjdG9yIFRvdWNoRXZl
bnQ7CisjZW5kaWYKKwogI2VuZGlmIC8vIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkKIAog
I2lmIGRlZmluZWQoVjhfQklORElORykgJiYgVjhfQklORElORwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9QbGF0Zm9ybVRvdWNoRXZlbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZv
cm1Ub3VjaEV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQzOGY4
YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaEV2ZW50
LmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBQbGF0Zm9y
bVRvdWNoRXZlbnRfaAorI2RlZmluZSBQbGF0Zm9ybVRvdWNoRXZlbnRfaAorCisjaW5jbHVkZSAi
UGxhdGZvcm1Ub3VjaFBvaW50LmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKworI2lmIFBMQVRGT1JNKFFUKQorUVRfQkVHSU5fTkFNRVNQQUNF
CitjbGFzcyBRVG91Y2hFdmVudDsKK1FUX0VORF9OQU1FU1BBQ0UKKyNlbmRpZgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gVG91Y2hFdmVudFR5cGUgeyBUb3VjaFN0YXJ0LCBUb3VjaE1v
dmUsIFRvdWNoRW5kIH07CisKK2NsYXNzIFBsYXRmb3JtVG91Y2hFdmVudCB7CitwdWJsaWM6Cisg
ICAgUGxhdGZvcm1Ub3VjaEV2ZW50KCkgOiBtX3R5cGUoVG91Y2hTdGFydCkge30KKyNpZiBQTEFU
Rk9STShRVCkKKyAgICBQbGF0Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKyNlbmRpZgor
CisgICAgVG91Y2hFdmVudFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAg
IGNvbnN0IFZlY3RvcjxQbGF0Zm9ybVRvdWNoUG9pbnQ+JiB0b3VjaFBvaW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fdG91Y2hQb2ludHM7IH0KKworcHJpdmF0ZToKKyAgICBUb3VjaEV2ZW50VHlwZSBt
X3R5cGU7CisgICAgVmVjdG9yPFBsYXRmb3JtVG91Y2hQb2ludD4gbV90b3VjaFBvaW50czsKK307
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKKyNlbmRpZiAvLyBQbGF0
Zm9ybVRvdWNoRXZlbnRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVRv
dWNoUG9pbnQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUwNjUzZAotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Ub3VjaFBvaW50LmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBQbGF0Zm9ybVRvdWNoUG9pbnRfaAorI2RlZmlu
ZSBQbGF0Zm9ybVRvdWNoUG9pbnRfaAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSA8UVRvdWNoRXZlbnQ+
CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZl
bnQ7CisKK2NsYXNzIFBsYXRmb3JtVG91Y2hQb2ludCB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0
ZSB7CisgICAgICAgIFRvdWNoUmVsZWFzZWQsCisgICAgICAgIFRvdWNoUHJlc3NlZCwKKyAgICAg
ICAgVG91Y2hNb3ZlZCwKKyAgICAgICAgVG91Y2hTdGF0aW9uYXJ5CisgICAgfTsKKworI2lmIFBM
QVRGT1JNKFFUKQorICAgIFBsYXRmb3JtVG91Y2hQb2ludChjb25zdCBRVG91Y2hFdmVudDo6VG91
Y2hQb2ludCYpOworI2VuZGlmCisKKyAgICBpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9
CisgICAgU3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgSW50UG9p
bnQgc2NyZWVuUG9zKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5Qb3M7IH0KKyAgICBJbnRQb2lu
dCBwb3MoKSBjb25zdCB7IHJldHVybiBtX3BvczsgfQorICAgIAorcHJpdmF0ZToKKyAgICBpbnQg
bV9pZDsKKyAgICBTdGF0ZSBtX3N0YXRlOworICAgIEludFBvaW50IG1fc2NyZWVuUG9zOworICAg
IEludFBvaW50IG1fcG9zOworfTsKKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5U
UykKKworI2VuZGlmIC8vIFBsYXRmb3JtVG91Y2hQb2ludF9oCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hFdmVudFF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
cXQvUGxhdGZvcm1Ub3VjaEV2ZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmIzMjliMTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3F0L1Bs
YXRmb3JtVG91Y2hFdmVudFF0LmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0LgorICoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVRvdWNoRXZlbnQuaCIKKworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGxhdGZvcm1Ub3Vj
aEV2ZW50OjpQbGF0Zm9ybVRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQoreworICAgIHN3
aXRjaCAoZXZlbnQtPnR5cGUoKSkgeworICAgIGNhc2UgUUV2ZW50OjpUb3VjaEJlZ2luOiBtX3R5
cGUgPSBUb3VjaFN0YXJ0OyBicmVhazsKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hVcGRhdGU6IG1f
dHlwZSA9IFRvdWNoTW92ZTsgYnJlYWs7CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOiBtX3R5
cGUgPSBUb3VjaEVuZDsgYnJlYWs7CisgICAgfQorICAgIGNvbnN0IFFMaXN0PFFUb3VjaEV2ZW50
OjpUb3VjaFBvaW50PiYgcG9pbnRzID0gZXZlbnQtPnRvdWNoUG9pbnRzKCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBwb2ludHMuY291bnQoKTsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRz
LmFwcGVuZChQbGF0Zm9ybVRvdWNoUG9pbnQocG9pbnRzLmF0KGkpKSk7Cit9CisKK30KKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hQb2ludFF0
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vcXQvUGxhdGZvcm1Ub3VjaFBvaW50UXQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ODhjZWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtVG91Y2hQb2ludFF0LmNwcApAQCAtMCwwICsx
LDQ1IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBwcm9qZWN0Lgor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9y
bVRvdWNoUG9pbnQuaCIKKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworUGxhdGZvcm1Ub3VjaFBvaW50OjpQbGF0Zm9ybVRvdWNoUG9pbnQoY29uc3Qg
UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQmIHBvaW50KQoreworICAgIG1faWQgPSBwb2ludC5pZCgp
OworICAgIHN3aXRjaCAocG9pbnQuc3RhdGUoKSkgeworICAgIGNhc2UgUXQ6OlRvdWNoUG9pbnRS
ZWxlYXNlZDogbV9zdGF0ZSA9IFRvdWNoUmVsZWFzZWQ7IGJyZWFrOworICAgIGNhc2UgUXQ6OlRv
dWNoUG9pbnRNb3ZlZDogbV9zdGF0ZSA9IFRvdWNoTW92ZWQ7IGJyZWFrOworICAgIGNhc2UgUXQ6
OlRvdWNoUG9pbnRQcmVzc2VkOiBtX3N0YXRlID0gVG91Y2hQcmVzc2VkOyBicmVhazsKKyAgICBj
YXNlIFF0OjpUb3VjaFBvaW50U3RhdGlvbmFyeTogbV9zdGF0ZSA9IFRvdWNoU3RhdGlvbmFyeTsg
YnJlYWs7CisgICAgfQorICAgIG1fc2NyZWVuUG9zID0gcG9pbnQuc2NyZWVuUG9zKCkudG9Qb2lu
dCgpOworICAgIG1fcG9zID0gcG9pbnQucG9zKCkudG9Qb2ludCgpOworfQorCit9CisKKyNlbmRp
Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44571</attachid>
            <date>2009-12-09 14:55:57 -0800</date>
            <delta_ts>2009-12-09 14:58:19 -0800</delta_ts>
            <desc>https://bugs.webkit.org/show_bug.cgi?id=32114</desc>
            <filename>bug-32114-20091209235552.patch</filename>
            <type>text/plain</type>
            <size>24563</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZWU2ZTU0Li43ZjNmOTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMTIt
MDkgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTQKKworICAgICAgICBBZGRlZCBiYXNpYyBsYXlvdXQgdGVz
dCBmb3IgRE9NIHRvdWNoIGV2ZW50cy4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL2Jhc2ljLXRv
dWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2Jh
c2ljLXRvdWNoLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvYmFzaWMtdG91Y2gtZXZlbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFwcGVuZEV2
ZW50TG9nKToKKyAgICAgICAgKHZlcmlmeVRvdWNoRXZlbnQpOgorICAgICAgICAodmVyaWZ5VG91
Y2hQb2ludCk6CisgICAgICAgIChzaW5nbGVUb3VjaFNlcXVlbmNlKToKKyAgICAgICAgKG11bHRp
VG91Y2hTZXF1ZW5jZSk6CisgICAgICAgICh0b3VjaFRhcmdldHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDA5LTEyLTA1ICBBZGFtIExhbmdsZXkgIDxh
Z2xAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Jhc2ljLXRvdWNoLWV2ZW50cy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlZGU3NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Jhc2ljLXRvdWNoLWV2ZW50cy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTcgQEAKK1RoaXMgdGVzdHMgYmFzaWMgdG91Y2ggZXZl
bnQgc3VwcG9ydC4KK3NpbmdsZSB0b3VjaCBzZXF1ZW5jZQorUEFTUyBsYXN0RXZlbnQudHlwZSBp
cyAidG91Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1Mg
bGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJn
ZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC5p
ZCBpcyAidG91Y2h0YXJnZXQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VYIGlzIDEw
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50
b3VjaGVzWzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50
WSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1Mg
bGFzdEV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNT
IGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3Vj
aGVzWzBdLnBhZ2VYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDE1
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50
LnRvdWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVu
dGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRvdWNoZW5kIgorUEFTUyBsYXN0
RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDAKK1BB
U1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlzIDIwCitQQVNTIGxhc3RFdmVu
dC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRv
dWNoZXNbMF0uY2xpZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0u
Y2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmll
ciBpcyAwCittdWx0aSB0b3VjaCBzZXF1ZW5jZQorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91
Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2
ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3Vj
aGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAi
dG91Y2h0YXJnZXQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VYIGlzIDEwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
WzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WSBpcyAx
MAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2
ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlz
IDIKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RF
dmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAyCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBd
LnBhZ2VYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNo
ZXNbMF0uY2xpZW50WSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlmaWVy
IGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2
ZW50LnRvdWNoZXNbMV0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0uY2xp
ZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sxXS5jbGllbnRZIGlzIDMwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzFdLmlkZW50aWZpZXIgaXMgMQorUEFTUyBsYXN0RXZlbnQuY2hh
bmdlZFRvdWNoZXNbMF0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVz
WzBdLnBhZ2VZIGlzIDMwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRY
IGlzIDIwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIGlzIDMwCitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDEKK1BBU1MgbGFz
dEV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxh
c3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAyCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
WzBdLnBhZ2VYIGlzIDE1CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDE1CitQ
QVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMTUKK1BBU1MgbGFzdEV2ZW50LnRv
dWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlm
aWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlzIDE1CitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAxNQorUEFTUyBsYXN0RXZl
bnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdl
ZFRvdWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNb
MF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzFdLnBhZ2VYIGlzIDIw
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzFdLnBhZ2VZIGlzIDMwCitQQVNTIGxhc3RFdmVudC50
b3VjaGVzWzFdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0uY2xpZW50
WSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sxXS5pZGVudGlmaWVyIGlzIDEKK1BBU1Mg
bGFzdEV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNT
IGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3Vj
aGVzWzBdLnBhZ2VYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDMw
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50
LnRvdWNoZXNbMF0uY2xpZW50WSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVu
dGlmaWVyIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlzIDE1
CitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAxNQorUEFTUyBsYXN0
RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hh
bmdlZFRvdWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNo
ZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaGVuZCIK
K1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5n
ZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0
aCBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFT
UyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50
LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRU
b3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBd
LmlkZW50aWZpZXIgaXMgMQordmVyaWZ5IHRvdWNoIHRhcmdldHMKK1BBU1MgbGFzdEV2ZW50LnR5
cGUgaXMgInRvdWNoc3RhcnQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAxCitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQu
dGFyZ2V0VG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1sw
XS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2ht
b3ZlIgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQu
Y2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMu
bGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LnRhZ05hbWUgaXMg
IkhUTUwiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWE3M2Q5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRzLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9iYXNpYy10b3VjaC1ldmVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL2Jh
c2ljLXRvdWNoLWV2ZW50cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10ZXN0
cy9iYXNpYy10b3VjaC1ldmVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTAxMDhiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nj
cmlwdC10ZXN0cy9iYXNpYy10b3VjaC1ldmVudHMuanMKQEAgLTAsMCArMSwxNDAgQEAKK2Rlc2Ny
aXB0aW9uID0gIlRoaXMgdGVzdHMgYmFzaWMgdG91Y2ggZXZlbnQgc3VwcG9ydC4iOworCit2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuaWQgPSAidG91Y2h0YXJn
ZXQiOworZGl2LnN0eWxlLndpZHRoID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5oZWlnaHQgPSAiMTAw
cHgiOworZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibHVlIjsKKwordmFyIGxhc3RFdmVu
dCA9IG51bGw7CisKK2Z1bmN0aW9uIGFwcGVuZEV2ZW50TG9nKCkgeworICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGFzdEV2ZW50ID0gZXZlbnQ7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGVidWcoZXZlbnQudHlwZSk7CisgICAgfQorfQorCitkaXYuYWRkRXZlbnRMaXN0
ZW5lcigidG91Y2hzdGFydCIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7CitkaXYuYWRkRXZlbnRM
aXN0ZW5lcigidG91Y2htb3ZlIiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKK2Rpdi5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaGVuZCIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7Citkb2N1bWVudC5i
b2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0
aW9uIHZlcmlmeVRvdWNoRXZlbnQodHlwZSwgdG90YWxUb3VjaENvdW50LCBjaGFuZ2VkVG91Y2hD
b3VudCwgdGFyZ2V0VG91Y2hDb3VudCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxh
c3RFdmVudC50eXBlIiwgdHlwZSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC50b3VjaGVzLmxl
bmd0aCIsIHRvdGFsVG91Y2hDb3VudC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2
ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCIsIGNoYW5nZWRUb3VjaENvdW50LnRvU3RyaW5nKCkp
OworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5ndGgiLCB0YXJnZXRU
b3VjaENvdW50LnRvU3RyaW5nKCkpOworfQorCitmdW5jdGlvbiB2ZXJpZnlUb3VjaFBvaW50KGxp
c3QsIHBvaW50LCB4LCB5LCBpZCkKK3sKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0
ICsgIlsiICsgcG9pbnQgKyAiXS5wYWdlWCIsIHgudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUo
Imxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0ucGFnZVkiLCB5LnRvU3RyaW5n
KCkpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJd
LmNsaWVudFgiLCB4LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuIiArIGxp
c3QgKyAiWyIgKyBwb2ludCArICJdLmNsaWVudFkiLCB5LnRvU3RyaW5nKCkpOworICAgIHNob3Vs
ZEJlKCJsYXN0RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLmlkZW50aWZpZXIiLCBp
ZC50b1N0cmluZygpKTsKK30KKworZnVuY3Rpb24gc2luZ2xlVG91Y2hTZXF1ZW5jZSgpCit7Cisg
ICAgZGVidWcoInNpbmdsZSB0b3VjaCBzZXF1ZW5jZSIpOworCisgICAgZXZlbnRTZW5kZXIuYWRk
VG91Y2hQb2ludCgxMCwgMTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKworICAg
IHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoc3RhcnQiLCAxLCAxLCAxKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdl
dCIpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNoZXMiLCAwLCAxMCwgMTAsIDApOworCisg
ICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAyMCwgMTUpOworICAgIGV2ZW50U2Vu
ZGVyLnRvdWNoTW92ZSgpOworCisgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91Y2htb3ZlIiwgMSwg
MSwgMSk7CisgICAgdmVyaWZ5VG91Y2hQb2ludCgidG91Y2hlcyIsIDAsIDIwLCAxNSwgMCk7CisK
KyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworCisgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91
Y2hlbmQiLCAwLCAxLCAwKTsKKyAgICB2ZXJpZnlUb3VjaFBvaW50KCJjaGFuZ2VkVG91Y2hlcyIs
IDAsIDIwLCAxNSwgMCk7Cit9CisKK2Z1bmN0aW9uIG11bHRpVG91Y2hTZXF1ZW5jZSgpCit7Cisg
ICAgZGVidWcoIm11bHRpIHRvdWNoIHNlcXVlbmNlIik7CisKKyAgICBldmVudFNlbmRlci5hZGRU
b3VjaFBvaW50KDEwLCAxMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAg
dmVyaWZ5VG91Y2hFdmVudCgidG91Y2hzdGFydCIsIDEsIDEsIDEpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygibGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIiwgInRvdWNodGFyZ2V0
Iik7CisgICAgdmVyaWZ5VG91Y2hQb2ludCgidG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisKKyAg
ICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDIwLCAzMCk7CisgICAgZXZlbnRTZW5kZXIudG91
Y2hNb3ZlKCk7CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAyLCAxLCAyKTsK
KyAgICB2ZXJpZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMTAsIDEwLCAwKTsKKyAgICB2ZXJp
ZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMSwgMjAsIDMwLCAxKTsKKyAgICB2ZXJpZnlUb3VjaFBv
aW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDIwLCAzMCwgMSk7CisKKyAgICBldmVudFNlbmRlci51
cGRhdGVUb3VjaFBvaW50KDAsIDE1LCAxNSk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7
CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAyLCAxLCAyKTsKKyAgICB2ZXJp
ZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMTUsIDE1LCAwKTsKKyAgICB2ZXJpZnlUb3VjaFBv
aW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDE1LCAxNSwgMCk7CisgICAgdmVyaWZ5VG91Y2hQb2lu
dCgidG91Y2hlcyIsIDEsIDIwLCAzMCwgMSk7CisKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91
Y2hQb2ludCgwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIHZlcmlmeVRv
dWNoRXZlbnQoInRvdWNobW92ZSIsIDEsIDEsIDEpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoInRv
dWNoZXMiLCAwLCAyMCwgMzAsIDEpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoImNoYW5nZWRUb3Vj
aGVzIiwgMCwgMTUsIDE1LCAwKTsKKworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKKyAg
ICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaGVuZCIsIDAsIDEsIDApOworICAgIHZlcmlmeVRvdWNo
UG9pbnQoImNoYW5nZWRUb3VjaGVzIiwgMCwgMjAsIDMwLCAxKTsKK30KKworZnVuY3Rpb24gdG91
Y2hUYXJnZXRzKCkKK3sKKyAgICBkZWJ1ZygidmVyaWZ5IHRvdWNoIHRhcmdldHMiKTsKKworICAg
IGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoMTAsIDEwKTsKKyAgICBldmVudFNlbmRlci50b3Vj
aFN0YXJ0KCk7CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaHN0YXJ0IiwgMSwgMSwgMSk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS50
YXJnZXQudGFnTmFtZSIsICJESVYiKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9p
bnQoMCwgMTAwMCwgMTAwMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisKKyAgICB2
ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAxLCAxLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkhUTUwiKTsK
K30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGRlYnVnKGRlc2NyaXB0aW9uKTsK
KworICAgIGxhc3RFdmVudCA9IG51bGw7CisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50
cygpOworICAgIHNpbmdsZVRvdWNoU2VxdWVuY2UoKTsKKworICAgIGxhc3RFdmVudCA9IG51bGw7
CisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAgIG11bHRpVG91Y2hTZXF1
ZW5jZSgpOworCisgICAgbGFzdEV2ZW50ID0gbnVsbDsKKyAgICBldmVudFNlbmRlci5jbGVhclRv
dWNoUG9pbnRzKCk7CisgICAgdG91Y2hUYXJnZXRzKCk7CisKK30gZWxzZSB7CisgICAgZGVidWco
IlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRhcCBvbiB0aGUgYmx1ZSByZWN0
IHRvIGxvZy4iKQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKaW5kZXggN2YxNjFjZS4uYjQxYTRmZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKQEAgLTU3MjEsMyArNTcyMSw2IEBAIGh0dHAvdGVzdHMvbG9hZGluZy9zdGF0ZS1v
YmplY3Qtc2VjdXJpdHktZXhjZXB0aW9uLmh0bWwKICMgRmFpbHMgYmVjYXVzZSBvZiBuZXcgYmVo
YXZpb3VyIGVuZm9yY2VkIGJ5IGxpYnNvdXAKICMgU2VlOiBodHRwczovL2J1Z3ppbGxhLmdub21l
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAzODI1CiBmYXN0L2Nvb2tpZXMvbG9jYWwtZmlsZS1jYW4t
c2V0LWNvb2tpZXMuaHRtbAorCisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBzdXBwb3J0Citm
YXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBl
ZAppbmRleCBhMzYyZTk0Li42MDI0NTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAt
MTA4LDMgKzEwOCw2IEBAIHBsdWdpbnMvcmVsb2FkcGx1Z2lucy1uby1wYWdlcy5odG1sCiAKICMg
VGhlc2UgdGVzdCByZXF1aXJlIFF0IFdpZGdldHMKIHBsdWdpbnMvcXQtcXdpZGdldC1wbHVnaW4u
aHRtbAorCisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBzdXBwb3J0CitmYXN0L2V2ZW50cy9i
YXNpYy10b3VjaC1ldmVudHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBmMjU1
YzM4Li5kMmExMjIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtNzIzLDMgKzcyMyw2
IEBAIGluc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKIAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwMzggLSBGbGFreSBvbiBXaW5kb3dz
CiBodHRwL3Rlc3RzL2NhY2hlL3N1YnJlc291cmNlLWZhaWxvdmVyLXRvLW5ldHdvcmsuaHRtbAor
CisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBzdXBwb3J0CitmYXN0L2V2ZW50cy9iYXNpYy10
b3VjaC1ldmVudHMuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhYjBjMDJhLi4xODY5NmIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDIxIEBACiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMTE0CisKKyAgICAgICAgQmFzaWMgY3Jvc3MtcGxh
dGZvcm0gaW1wbGVtZW50YXRpb24gb2YgbWFwcGluZyBwbGF0Zm9ybSB0b3VjaCBldmVudHMKKyAg
ICAgICAgdG8gSmF2YVNjcmlwdCB0b3VjaCBldmVudHMuCisKKyAgICAgICAgVGVzdDogZmFzdC9l
dmVudHMvYmFzaWMtdG91Y2gtZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVu
dCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKworMjAwOS0xMi0wOSAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9u
aG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KwogICAgICAgICBBZGRlZCBpbnRlcmZhY2VzIGZvciB0b3VjaCBldmVudCBzdXBwb3J0IGluIEph
dmFTY3JpcHQuCiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyMTE0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDEyMWE3M2YuLjI3OGQ4N2YgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC03NCw2ICs3NCwxMSBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1l
bnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0
Zm9ybVRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjUzOSw0
ICsyNTQ0LDg0IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVMYXN0U2Nyb2xsYmFyVW5kZXJN
b3VzZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBzZXRMCiAgICAgfQogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZG9jLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlRPVUNIX0xJU1RFTkVS
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFRvdWNoTGlzdD4gdG91Y2hl
cyA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFRvdWNoTGlzdD4gY2hhbmdlZFRv
dWNoZXMgPSBUb3VjaExpc3Q6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxUb3VjaExpc3Q+IHRhcmdl
dFRvdWNoZXMgPSBUb3VjaExpc3Q6OmNyZWF0ZSgpOworCisgICAgY29uc3QgVmVjdG9yPFBsYXRm
b3JtVG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiBwb2ludCA9IHBvaW50c1tpXTsKKworICAgICAgICBJbnRQb2ludCBmcmFt
ZVBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIHBvaW50LnBvcygp
KTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChm
cmFtZVBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlKTsKKworICAgICAgICBOb2Rl
KiB0YXJnZXQgPSByZXN1bHQuaW5uZXJOb2RlKCk7CisgICAgICAgIC8vIFRvdWNoIGV2ZW50cyBz
aG91bGQgbm90IGdvIHRvIHRleHQgbm9kZXMKKyAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQt
PmlzVGV4dE5vZGUoKSkKKyAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC0+cGFyZW50Tm9kZSgp
OworCisgICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2ggPSBUb3VjaDo6Y3JlYXRlKG1fZnJhbWUs
IHRhcmdldCwgcG9pbnQuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9pbnQuc2NyZWVuUG9zKCkueCgpLCBwb2ludC5zY3JlZW5Qb3MoKS55KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lUG9pbnQueCgp
LCBmcmFtZVBvaW50LnkoKSk7CisKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBUb3VjaFN0
YXJ0ICYmICFpKSB7CisgICAgICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXQgPSB0YXJnZXQ7Cisg
ICAgICAgICAgICBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3MgPSBwb2ludC5zY3JlZW5Qb3MoKTsKKyAg
ICAgICAgICAgIG1fZmlyc3RUb3VjaFBhZ2VQb3MgPSBmcmFtZVBvaW50OworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHBvaW50LnN0YXRlKCkgIT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJl
bGVhc2VkKSB7CisgICAgICAgICAgICB0b3VjaGVzLT5hcHBlbmQodG91Y2gpOworCisgICAgICAg
ICAgICBpZiAobV90b3VjaEV2ZW50VGFyZ2V0ID09IHRhcmdldCkKKyAgICAgICAgICAgICAgIHRh
cmdldFRvdWNoZXMtPmFwcGVuZCh0b3VjaCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocG9p
bnQuc3RhdGUoKSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeSkKKyAgICAg
ICAgICAgIGNoYW5nZWRUb3VjaGVzLT5hcHBlbmQodG91Y2gpOworICAgIH0KKworICAgIEF0b21p
Y1N0cmluZyogZXZlbnROYW1lID0gMDsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAg
IGNhc2UgVG91Y2hTdGFydDoKKyAgICAgICAgZXZlbnROYW1lID0gJmV2ZW50TmFtZXMoKS50b3Vj
aHN0YXJ0RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hNb3ZlOgorICAgICAg
ICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFRvdWNoRW5kOgorICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygp
LnRvdWNoZW5kRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghbV90b3Vj
aEV2ZW50VGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8VG91Y2hF
dmVudD4gZXYgPSBUb3VjaEV2ZW50OjpjcmVhdGUodG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91Y2hl
cy5nZXQoKSwgY2hhbmdlZFRvdWNoZXMuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpldmVudE5hbWUsIG1fdG91Y2hFdmVudFRhcmdldC0+ZG9j
dW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9maXJzdFRvdWNoU2NyZWVuUG9zLngoKSwgbV9maXJzdFRvdWNoU2Ny
ZWVuUG9zLnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9maXJzdFRvdWNoUGFnZVBvcy54KCksIG1fZmlyc3RUb3VjaFBhZ2VQb3MueSgpKTsKKwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fdG91Y2hFdmVudFRhcmdldC0+ZGlzcGF0
Y2hFdmVudChldi5nZXQoKSwgZWMpOworCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBUb3VjaEVu
ZCkKKyAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0ID0gMDsKKworICAgIG1fcHJldmlvdXNUb3Vj
aEV2ZW50ID0gZXY7CisKKyAgICByZXR1cm4gZXYtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKK30KKyNl
bmRpZgorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNmNkMGVhYi4uOGQzZDZjYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ7CitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVdo
ZWVsRXZlbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKQEAgLTYw
LDYgKzYxLDcgQEAgY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgU1ZHRWxl
bWVudEluc3RhbmNlOwogY2xhc3MgVGV4dEV2ZW50OworY2xhc3MgVG91Y2hFdmVudDsKIGNsYXNz
IFdpZGdldDsKICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTkxLDYgKzE5Mywx
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5TRXZlbnQgKmN1cnJlbnROU0V2ZW50KCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworI2VuZGlmCisKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICBlbnVtIERyYWdBbmREcm9wSGFuZGxlVHlwZSB7CkBAIC0z
OTgsNiArNDA0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3NlbmRpbmdFdmVudFRvU3Vidmll
dzsKICAgICBpbnQgbV9hY3RpdmF0aW9uRXZlbnROdW1iZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIFJlZlB0cjxOb2RlPiBtX3RvdWNoRXZlbnRUYXJnZXQ7CisgICAg
SW50UG9pbnQgbV9maXJzdFRvdWNoU2NyZWVuUG9zOworICAgIEludFBvaW50IG1fZmlyc3RUb3Vj
aFBhZ2VQb3M7CisgICAgUmVmUHRyPFRvdWNoRXZlbnQ+IG1fcHJldmlvdXNUb3VjaEV2ZW50Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGJh
NmI5ZjMuLmQzYmEzN2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xMDgsNiArMTA4LDExIEBACiAjaW5j
bHVkZSA8UVgxMUluZm8+CiAjZW5kaWYKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9D
SEVDSyg0LCA2LCAwKQorI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgorI2luY2x1ZGUgIlBsYXRmb3Jt
VG91Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpCkBAIC0x
MzM0LDYgKzEzMzksMTggQEAgYm9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhR
S2V5RXZlbnQgKmV2LCBGcmFtZSAqZnJhbWUpCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiB9CiAKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKK3ZvaWQgUVdlYlBhZ2VQ
cml2YXRlOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKG1haW5GcmFtZSk7CisgICAgaWYg
KCFmcmFtZS0+dmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGFjY2VwdGVkID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KFBsYXRmb3JtVG91Y2hFdmVu
dChldmVudCkpOworICAgIGV2ZW50LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7Cit9CisjZW5kaWYK
KwogLyohCiAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGlucHV0IG1ldGhvZCB0byBxdWVy
eSBhIHNldCBvZiBwcm9wZXJ0aWVzIG9mIHRoZSBwYWdlCiAgIHRvIGJlIGFibGUgdG8gc3VwcG9y
dCBjb21wbGV4IGlucHV0IG1ldGhvZCBvcGVyYXRpb25zIGFzIHN1cHBvcnQgZm9yIHN1cnJvdW5k
aW5nCkBAIC0yNTQ4LDYgKzI1NjUsMTMgQEAgYm9vbCBRV2ViUGFnZTo6ZXZlbnQoUUV2ZW50ICpl
dikKICAgICBjYXNlIFFFdmVudDo6TGVhdmU6CiAgICAgICAgIGQtPmxlYXZlRXZlbnQoZXYpOwog
ICAgICAgICBicmVhazsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwg
MCkKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hCZWdpbjoKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hV
cGRhdGU6CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgorICAgICAgICBkLT50b3VjaEV2ZW50
KHN0YXRpY19jYXN0PFFUb3VjaEV2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gUU9iamVjdDo6ZXZlbnQoZXYpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZV9wLmgKaW5kZXggNWQ5N2RhNC4uZmZiZGQ1MSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZV9wLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTEx
NCw2ICsxMTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlU29mdHdhcmVJbnB1dFBhbmVs
KFF0OjpNb3VzZUJ1dHRvbik7CiAgICAgYm9vbCBoYW5kbGVTY3JvbGxpbmcoUUtleUV2ZW50Kiwg
V2ViQ29yZTo6RnJhbWUqKTsKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0
LCA2LCAwKQorICAgIHZvaWQgdG91Y2hFdmVudChRVG91Y2hFdmVudCopOworI2VuZGlmCisKICAg
ICB2b2lkIHNldEluc3BlY3RvcihRV2ViSW5zcGVjdG9yKik7CiAgICAgUVdlYkluc3BlY3Rvciog
Z2V0T3JDcmVhdGVJbnNwZWN0b3IoKTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5ZWYxM2YxLi5kMjBhZWM4IDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAwOS0xMi0wOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3Jn
PiwgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTQKKworICAgICAgICBGb3J3YXJkIFF0IHRvdWNoIGV2
ZW50cyB0byB0aGUgZXZlbnQgaGFuZGxlciBhcyBwbGF0Zm9ybSB0b3VjaCBldmVudHMuCisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp0b3Vj
aEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlX3AuaDoKKwogMjAwOS0xMi0wNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDk3MjAzZGUuLjk3ZThkNGMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAwOS0xMi0wOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdy
w7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MzIxMTQKKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjcmVhdGluZyBz
eW50aGV0aWMgdG91Y2ggZXZlbnRzIHdpdGggRXZlbnRTZW5kZXIKKyAgICAgICAgaW4gUXQncyBE
dW1wUmVuZGVyVHJlZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVy
UXQuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAo
RXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnRv
dWNoU3RhcnQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnRvdWNoTW92ZSk6CisgICAgICAgIChF
dmVudFNlbmRlcjo6dG91Y2hFbmQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmNsZWFyVG91Y2hQ
b2ludHMpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAg
ICAgKEV2ZW50U2VuZGVyOjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvRXZlbnRTZW5kZXJRdC5oOgorCiAyMDA5LTEyLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCmluZGV4IGEwZGEy
NzMuLmJjNmZjMzIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2
ZW50U2VuZGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50
U2VuZGVyUXQuY3BwCkBAIC0yNTEsNiArMjUxLDc1IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVk
dWxlQXN5bmNocm9ub3VzQ2xpY2soKQogICAgIFFBcHBsaWNhdGlvbjo6cG9zdEV2ZW50KG1fcGFn
ZSwgZXZlbnQyKTsKIH0KIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2
LCAwKQorCit2b2lkIEV2ZW50U2VuZGVyOjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKK3sK
KyAgICBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmNvdW50KCk7CisgICAgUVRvdWNoRXZlbnQ6OlRv
dWNoUG9pbnQgcG9pbnQoaWQpOworICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKHBvaW50KTsKKyAg
ICB1cGRhdGVUb3VjaFBvaW50KGlkLCB4LCB5KTsKKyAgICBtX3RvdWNoUG9pbnRzW2lkXS5zZXRT
dGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjp1cGRh
dGVUb3VjaFBvaW50KGludCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIGlmIChpbmRleCA8
IDAgfHwgaW5kZXggPj0gbV90b3VjaFBvaW50cy5jb3VudCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCAmcCA9IG1fdG91Y2hQb2ludHNbaW5kZXhdOwor
ICAgIHAuc2V0UG9zKFFQb2ludEYoeCwgeSkpOworICAgIHAuc2V0U3RhdGUoUXQ6OlRvdWNoUG9p
bnRNb3ZlZCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnRvdWNoU3RhcnQoKQoreworICAgIHNl
bmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hCZWdpbik7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6
OnRvdWNoTW92ZSgpCit7CisgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnRvdWNoRW5kKCkKK3sKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG1fdG91Y2hQb2ludHMuY291bnQoKTsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRz
W2ldLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpOworICAgIHNlbmRUb3VjaEV2ZW50
KFFFdmVudDo6VG91Y2hFbmQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjpjbGVhclRvdWNoUG9p
bnRzKCkKK3sKKyAgICBtX3RvdWNoUG9pbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXI6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCAwIHx8
IGluZGV4ID49IG1fdG91Y2hQb2ludHMuY291bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV90b3VjaFBvaW50c1tpbmRleF0uc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VHlwZSB0eXBlKQor
eworICAgIFFUb3VjaEV2ZW50IGV2ZW50KHR5cGUpOworICAgIGV2ZW50LnNldFRvdWNoUG9pbnRz
KG1fdG91Y2hQb2ludHMpOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fcGFnZSwgJmV2
ZW50KTsKKyAgICBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD46Okl0ZXJhdG9yIGl0ID0g
bV90b3VjaFBvaW50cy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtX3RvdWNoUG9pbnRzLmVu
ZCgpKSB7CisgICAgICAgIGlmIChpdC0+c3RhdGUoKSA9PSBRdDo6VG91Y2hQb2ludFJlbGVhc2Vk
KQorICAgICAgICAgICAgaXQgPSBtX3RvdWNoUG9pbnRzLmVyYXNlKGl0KTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBpdC0+c2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5KTsK
KyAgICAgICAgICAgICsraXQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNlbmRpZgorCiBRV2Vi
RnJhbWUqIEV2ZW50U2VuZGVyOjpmcmFtZVVuZGVyTW91c2UoKSBjb25zdAogewogICAgIFFXZWJG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oCmluZGV4IGZkNzQ0NTUuLjMxYThjNTYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmgKQEAgLTQwLDYg
KzQwLDEwIEBACiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4K
IAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorI2luY2x1ZGUg
PFFUb3VjaEV2ZW50PgorI2VuZGlmCisKIGNsYXNzIEV2ZW50U2VuZGVyIDogcHVibGljIFFPYmpl
Y3QgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CkBAIC01NCwxMSArNTgsMjQgQEAgcHVibGljIHNs
b3RzOgogICAgIHZvaWQgY2xlYXJLaWxsUmluZygpIHt9CiAgICAgdm9pZCBjb250ZXh0Q2xpY2so
KTsKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKKyNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICB2b2lkIGFkZFRvdWNoUG9pbnQoaW50
IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwg
aW50IHkpOworICAgIHZvaWQgdG91Y2hTdGFydCgpOworICAgIHZvaWQgdG91Y2hNb3ZlKCk7Cisg
ICAgdm9pZCB0b3VjaEVuZCgpOworICAgIHZvaWQgY2xlYXJUb3VjaFBvaW50cygpOworICAgIHZv
aWQgcmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KTsKKyNlbmRpZgogCiBwcml2YXRlOgorICAg
IHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlKTsKICAgICBRUG9pbnQgbV9tb3VzZVBv
czsKICAgICBRV2ViUGFnZSogbV9wYWdlOwogICAgIGludCBtX3RpbWVMZWFwOwogICAgIFFXZWJG
cmFtZSogZnJhbWVVbmRlck1vdXNlKCkgY29uc3Q7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDQsIDYsIDApCisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+IG1f
dG91Y2hQb2ludHM7CisjZW5kaWYKIH07CiAjZW5kaWYgLy8gIEV2ZW50U2VuZGVyUXRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44572</attachid>
            <date>2009-12-09 14:57:41 -0800</date>
            <delta_ts>2009-12-11 04:58:51 -0800</delta_ts>
            <desc>https://bugs.webkit.org/show_bug.cgi?id=32114</desc>
            <filename>bug-32114-20091209235735.patch</filename>
            <type>text/plain</type>
            <size>24563</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjZWU2ZTU0Li45OTQ1NzdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMTIt
MDkgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBiYXNpYyBsYXlvdXQgdGVz
dCBmb3IgRE9NIHRvdWNoIGV2ZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTQKKworICAgICAgICAqIGZhc3QvZXZlbnRzL2Jhc2ljLXRv
dWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2Jh
c2ljLXRvdWNoLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvYmFzaWMtdG91Y2gtZXZlbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFwcGVuZEV2
ZW50TG9nKToKKyAgICAgICAgKHZlcmlmeVRvdWNoRXZlbnQpOgorICAgICAgICAodmVyaWZ5VG91
Y2hQb2ludCk6CisgICAgICAgIChzaW5nbGVUb3VjaFNlcXVlbmNlKToKKyAgICAgICAgKG11bHRp
VG91Y2hTZXF1ZW5jZSk6CisgICAgICAgICh0b3VjaFRhcmdldHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDA5LTEyLTA1ICBBZGFtIExhbmdsZXkgIDxh
Z2xAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Jhc2ljLXRvdWNoLWV2ZW50cy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODVlZGU3NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Jhc2ljLXRvdWNoLWV2ZW50cy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMTcgQEAKK1RoaXMgdGVzdHMgYmFzaWMgdG91Y2ggZXZl
bnQgc3VwcG9ydC4KK3NpbmdsZSB0b3VjaCBzZXF1ZW5jZQorUEFTUyBsYXN0RXZlbnQudHlwZSBp
cyAidG91Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1Mg
bGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJn
ZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC5p
ZCBpcyAidG91Y2h0YXJnZXQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VYIGlzIDEw
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50
b3VjaGVzWzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50
WSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1Mg
bGFzdEV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNT
IGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3Vj
aGVzWzBdLnBhZ2VYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDE1
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50
LnRvdWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVu
dGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRvdWNoZW5kIgorUEFTUyBsYXN0
RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMu
bGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDAKK1BB
U1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlzIDIwCitQQVNTIGxhc3RFdmVu
dC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRv
dWNoZXNbMF0uY2xpZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0u
Y2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uaWRlbnRpZmll
ciBpcyAwCittdWx0aSB0b3VjaCBzZXF1ZW5jZQorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91
Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2
ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3Vj
aGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAi
dG91Y2h0YXJnZXQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VYIGlzIDEwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
WzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WSBpcyAx
MAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2
ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlz
IDIKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RF
dmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAyCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBd
LnBhZ2VYIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDEwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNo
ZXNbMF0uY2xpZW50WSBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlmaWVy
IGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2
ZW50LnRvdWNoZXNbMV0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0uY2xp
ZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sxXS5jbGllbnRZIGlzIDMwCitQQVNT
IGxhc3RFdmVudC50b3VjaGVzWzFdLmlkZW50aWZpZXIgaXMgMQorUEFTUyBsYXN0RXZlbnQuY2hh
bmdlZFRvdWNoZXNbMF0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVz
WzBdLnBhZ2VZIGlzIDMwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRY
IGlzIDIwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIGlzIDMwCitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDEKK1BBU1MgbGFz
dEV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3Ro
IGlzIDIKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxh
c3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAyCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
WzBdLnBhZ2VYIGlzIDE1CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDE1CitQ
QVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMTUKK1BBU1MgbGFzdEV2ZW50LnRv
dWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVudGlm
aWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlzIDE1CitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAxNQorUEFTUyBsYXN0RXZl
bnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdl
ZFRvdWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNb
MF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzFdLnBhZ2VYIGlzIDIw
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzFdLnBhZ2VZIGlzIDMwCitQQVNTIGxhc3RFdmVudC50
b3VjaGVzWzFdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0uY2xpZW50
WSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sxXS5pZGVudGlmaWVyIGlzIDEKK1BBU1Mg
bGFzdEV2ZW50LnR5cGUgaXMgInRvdWNobW92ZSIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVu
Z3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNT
IGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50b3Vj
aGVzWzBdLnBhZ2VYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLnBhZ2VZIGlzIDMw
CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50
LnRvdWNoZXNbMF0uY2xpZW50WSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5pZGVu
dGlmaWVyIGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlzIDE1
CitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAxNQorUEFTUyBsYXN0
RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hh
bmdlZFRvdWNoZXNbMF0uY2xpZW50WSBpcyAxNQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNo
ZXNbMF0uaWRlbnRpZmllciBpcyAwCitQQVNTIGxhc3RFdmVudC50eXBlIGlzICJ0b3VjaGVuZCIK
K1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5n
ZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0
aCBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFT
UyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50
LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRU
b3VjaGVzWzBdLmNsaWVudFkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBd
LmlkZW50aWZpZXIgaXMgMQordmVyaWZ5IHRvdWNoIHRhcmdldHMKK1BBU1MgbGFzdEV2ZW50LnR5
cGUgaXMgInRvdWNoc3RhcnQiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAxCitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQu
dGFyZ2V0VG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1sw
XS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2ht
b3ZlIgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQu
Y2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMu
bGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LnRhZ05hbWUgaXMg
IkhUTUwiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRz
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWE3M2Q5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRzLmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9iYXNpYy10b3VjaC1ldmVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL2Jh
c2ljLXRvdWNoLWV2ZW50cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10ZXN0
cy9iYXNpYy10b3VjaC1ldmVudHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTAxMDhiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Nj
cmlwdC10ZXN0cy9iYXNpYy10b3VjaC1ldmVudHMuanMKQEAgLTAsMCArMSwxNDAgQEAKK2Rlc2Ny
aXB0aW9uID0gIlRoaXMgdGVzdHMgYmFzaWMgdG91Y2ggZXZlbnQgc3VwcG9ydC4iOworCit2YXIg
ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuaWQgPSAidG91Y2h0YXJn
ZXQiOworZGl2LnN0eWxlLndpZHRoID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5oZWlnaHQgPSAiMTAw
cHgiOworZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibHVlIjsKKwordmFyIGxhc3RFdmVu
dCA9IG51bGw7CisKK2Z1bmN0aW9uIGFwcGVuZEV2ZW50TG9nKCkgeworICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgbGFzdEV2ZW50ID0gZXZlbnQ7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgZGVidWcoZXZlbnQudHlwZSk7CisgICAgfQorfQorCitkaXYuYWRkRXZlbnRMaXN0
ZW5lcigidG91Y2hzdGFydCIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7CitkaXYuYWRkRXZlbnRM
aXN0ZW5lcigidG91Y2htb3ZlIiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKK2Rpdi5hZGRFdmVu
dExpc3RlbmVyKCJ0b3VjaGVuZCIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7Citkb2N1bWVudC5i
b2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0
aW9uIHZlcmlmeVRvdWNoRXZlbnQodHlwZSwgdG90YWxUb3VjaENvdW50LCBjaGFuZ2VkVG91Y2hD
b3VudCwgdGFyZ2V0VG91Y2hDb3VudCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxh
c3RFdmVudC50eXBlIiwgdHlwZSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC50b3VjaGVzLmxl
bmd0aCIsIHRvdGFsVG91Y2hDb3VudC50b1N0cmluZygpKTsKKyAgICBzaG91bGRCZSgibGFzdEV2
ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCIsIGNoYW5nZWRUb3VjaENvdW50LnRvU3RyaW5nKCkp
OworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5ndGgiLCB0YXJnZXRU
b3VjaENvdW50LnRvU3RyaW5nKCkpOworfQorCitmdW5jdGlvbiB2ZXJpZnlUb3VjaFBvaW50KGxp
c3QsIHBvaW50LCB4LCB5LCBpZCkKK3sKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0
ICsgIlsiICsgcG9pbnQgKyAiXS5wYWdlWCIsIHgudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUo
Imxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0ucGFnZVkiLCB5LnRvU3RyaW5n
KCkpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJd
LmNsaWVudFgiLCB4LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQuIiArIGxp
c3QgKyAiWyIgKyBwb2ludCArICJdLmNsaWVudFkiLCB5LnRvU3RyaW5nKCkpOworICAgIHNob3Vs
ZEJlKCJsYXN0RXZlbnQuIiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLmlkZW50aWZpZXIiLCBp
ZC50b1N0cmluZygpKTsKK30KKworZnVuY3Rpb24gc2luZ2xlVG91Y2hTZXF1ZW5jZSgpCit7Cisg
ICAgZGVidWcoInNpbmdsZSB0b3VjaCBzZXF1ZW5jZSIpOworCisgICAgZXZlbnRTZW5kZXIuYWRk
VG91Y2hQb2ludCgxMCwgMTApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKworICAg
IHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoc3RhcnQiLCAxLCAxLCAxKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdl
dCIpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNoZXMiLCAwLCAxMCwgMTAsIDApOworCisg
ICAgZXZlbnRTZW5kZXIudXBkYXRlVG91Y2hQb2ludCgwLCAyMCwgMTUpOworICAgIGV2ZW50U2Vu
ZGVyLnRvdWNoTW92ZSgpOworCisgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91Y2htb3ZlIiwgMSwg
MSwgMSk7CisgICAgdmVyaWZ5VG91Y2hQb2ludCgidG91Y2hlcyIsIDAsIDIwLCAxNSwgMCk7CisK
KyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworCisgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91
Y2hlbmQiLCAwLCAxLCAwKTsKKyAgICB2ZXJpZnlUb3VjaFBvaW50KCJjaGFuZ2VkVG91Y2hlcyIs
IDAsIDIwLCAxNSwgMCk7Cit9CisKK2Z1bmN0aW9uIG11bHRpVG91Y2hTZXF1ZW5jZSgpCit7Cisg
ICAgZGVidWcoIm11bHRpIHRvdWNoIHNlcXVlbmNlIik7CisKKyAgICBldmVudFNlbmRlci5hZGRU
b3VjaFBvaW50KDEwLCAxMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworCisgICAg
dmVyaWZ5VG91Y2hFdmVudCgidG91Y2hzdGFydCIsIDEsIDEsIDEpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygibGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIiwgInRvdWNodGFyZ2V0
Iik7CisgICAgdmVyaWZ5VG91Y2hQb2ludCgidG91Y2hlcyIsIDAsIDEwLCAxMCwgMCk7CisKKyAg
ICBldmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDIwLCAzMCk7CisgICAgZXZlbnRTZW5kZXIudG91
Y2hNb3ZlKCk7CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAyLCAxLCAyKTsK
KyAgICB2ZXJpZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMTAsIDEwLCAwKTsKKyAgICB2ZXJp
ZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMSwgMjAsIDMwLCAxKTsKKyAgICB2ZXJpZnlUb3VjaFBv
aW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDIwLCAzMCwgMSk7CisKKyAgICBldmVudFNlbmRlci51
cGRhdGVUb3VjaFBvaW50KDAsIDE1LCAxNSk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7
CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAyLCAxLCAyKTsKKyAgICB2ZXJp
ZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMTUsIDE1LCAwKTsKKyAgICB2ZXJpZnlUb3VjaFBv
aW50KCJjaGFuZ2VkVG91Y2hlcyIsIDAsIDE1LCAxNSwgMCk7CisgICAgdmVyaWZ5VG91Y2hQb2lu
dCgidG91Y2hlcyIsIDEsIDIwLCAzMCwgMSk7CisKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91
Y2hQb2ludCgwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKworICAgIHZlcmlmeVRv
dWNoRXZlbnQoInRvdWNobW92ZSIsIDEsIDEsIDEpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoInRv
dWNoZXMiLCAwLCAyMCwgMzAsIDEpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoImNoYW5nZWRUb3Vj
aGVzIiwgMCwgMTUsIDE1LCAwKTsKKworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKKyAg
ICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaGVuZCIsIDAsIDEsIDApOworICAgIHZlcmlmeVRvdWNo
UG9pbnQoImNoYW5nZWRUb3VjaGVzIiwgMCwgMjAsIDMwLCAxKTsKK30KKworZnVuY3Rpb24gdG91
Y2hUYXJnZXRzKCkKK3sKKyAgICBkZWJ1ZygidmVyaWZ5IHRvdWNoIHRhcmdldHMiKTsKKworICAg
IGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoMTAsIDEwKTsKKyAgICBldmVudFNlbmRlci50b3Vj
aFN0YXJ0KCk7CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaHN0YXJ0IiwgMSwgMSwgMSk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudGFyZ2V0VG91Y2hlc1swXS50
YXJnZXQudGFnTmFtZSIsICJESVYiKTsKKworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9p
bnQoMCwgMTAwMCwgMTAwMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisKKyAgICB2
ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1vdmUiLCAxLCAxLCAwKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoImxhc3RFdmVudC50b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkhUTUwiKTsK
K30KKworaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGRlYnVnKGRlc2NyaXB0aW9uKTsK
KworICAgIGxhc3RFdmVudCA9IG51bGw7CisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50
cygpOworICAgIHNpbmdsZVRvdWNoU2VxdWVuY2UoKTsKKworICAgIGxhc3RFdmVudCA9IG51bGw7
CisgICAgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cygpOworICAgIG11bHRpVG91Y2hTZXF1
ZW5jZSgpOworCisgICAgbGFzdEV2ZW50ID0gbnVsbDsKKyAgICBldmVudFNlbmRlci5jbGVhclRv
dWNoUG9pbnRzKCk7CisgICAgdG91Y2hUYXJnZXRzKCk7CisKK30gZWxzZSB7CisgICAgZGVidWco
IlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIFRhcCBvbiB0aGUgYmx1ZSByZWN0
IHRvIGxvZy4iKQorfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKaW5kZXggN2YxNjFjZS4uYjQxYTRmZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKQEAgLTU3MjEsMyArNTcyMSw2IEBAIGh0dHAvdGVzdHMvbG9hZGluZy9zdGF0ZS1v
YmplY3Qtc2VjdXJpdHktZXhjZXB0aW9uLmh0bWwKICMgRmFpbHMgYmVjYXVzZSBvZiBuZXcgYmVo
YXZpb3VyIGVuZm9yY2VkIGJ5IGxpYnNvdXAKICMgU2VlOiBodHRwczovL2J1Z3ppbGxhLmdub21l
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAzODI1CiBmYXN0L2Nvb2tpZXMvbG9jYWwtZmlsZS1jYW4t
c2V0LWNvb2tpZXMuaHRtbAorCisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBzdXBwb3J0Citm
YXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBl
ZAppbmRleCBhMzYyZTk0Li42MDI0NTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAt
MTA4LDMgKzEwOCw2IEBAIHBsdWdpbnMvcmVsb2FkcGx1Z2lucy1uby1wYWdlcy5odG1sCiAKICMg
VGhlc2UgdGVzdCByZXF1aXJlIFF0IFdpZGdldHMKIHBsdWdpbnMvcXQtcXdpZGdldC1wbHVnaW4u
aHRtbAorCisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBzdXBwb3J0CitmYXN0L2V2ZW50cy9i
YXNpYy10b3VjaC1ldmVudHMuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCBmMjU1
YzM4Li5kMmExMjIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtNzIzLDMgKzcyMyw2
IEBAIGluc3BlY3Rvci90aW1lbGluZS1uZXR3b3JrLXJlc291cmNlLmh0bWwKIAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIwMzggLSBGbGFreSBvbiBXaW5kb3dz
CiBodHRwL3Rlc3RzL2NhY2hlL3N1YnJlc291cmNlLWZhaWxvdmVyLXRvLW5ldHdvcmsuaHRtbAor
CisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBzdXBwb3J0CitmYXN0L2V2ZW50cy9iYXNpYy10
b3VjaC1ldmVudHMuaHRtbApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBhYjBjMDJhLi42ZWRiYzlhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMiw2ICsyLDIxIEBACiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQmFzaWMgY3Jvc3MtcGxh
dGZvcm0gaW1wbGVtZW50YXRpb24gb2YgbWFwcGluZyBwbGF0Zm9ybSB0b3VjaCBldmVudHMKKyAg
ICAgICAgdG8gSmF2YVNjcmlwdCB0b3VjaCBldmVudHMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMTE0CisKKyAgICAgICAgVGVzdDogZmFzdC9l
dmVudHMvYmFzaWMtdG91Y2gtZXZlbnRzLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVu
dCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKworMjAwOS0xMi0wOSAgU2ltb24g
SGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9u
aG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KwogICAgICAgICBBZGRlZCBpbnRlcmZhY2VzIGZvciB0b3VjaCBldmVudCBzdXBwb3J0IGluIEph
dmFTY3JpcHQuCiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMyMTE0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDEyMWE3M2YuLjI3OGQ4N2YgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC03NCw2ICs3NCwxMSBAQAogI2luY2x1ZGUgIlNWR1VzZUVsZW1l
bnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJQbGF0
Zm9ybVRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCisjZW5kaWYKKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjUzOSw0
ICsyNTQ0LDg0IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVMYXN0U2Nyb2xsYmFyVW5kZXJN
b3VzZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBzZXRMCiAgICAgfQogfQogCisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKK2Jvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUb3VjaEV2ZW50KGNv
bnN0IFBsYXRmb3JtVG91Y2hFdmVudCYgZXZlbnQpCit7CisgICAgRG9jdW1lbnQqIGRvYyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZG9jLT5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OlRPVUNIX0xJU1RFTkVS
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVmUHRyPFRvdWNoTGlzdD4gdG91Y2hl
cyA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPFRvdWNoTGlzdD4gY2hhbmdlZFRv
dWNoZXMgPSBUb3VjaExpc3Q6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxUb3VjaExpc3Q+IHRhcmdl
dFRvdWNoZXMgPSBUb3VjaExpc3Q6OmNyZWF0ZSgpOworCisgICAgY29uc3QgVmVjdG9yPFBsYXRm
b3JtVG91Y2hQb2ludD4mIHBvaW50cyA9IGV2ZW50LnRvdWNoUG9pbnRzKCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgUGxhdGZv
cm1Ub3VjaFBvaW50JiBwb2ludCA9IHBvaW50c1tpXTsKKworICAgICAgICBJbnRQb2ludCBmcmFt
ZVBvaW50ID0gZG9jdW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIHBvaW50LnBvcygp
KTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQgPSBoaXRUZXN0UmVzdWx0QXRQb2ludChm
cmFtZVBvaW50LCAvKmFsbG93U2hhZG93Q29udGVudCovIGZhbHNlKTsKKworICAgICAgICBOb2Rl
KiB0YXJnZXQgPSByZXN1bHQuaW5uZXJOb2RlKCk7CisgICAgICAgIC8vIFRvdWNoIGV2ZW50cyBz
aG91bGQgbm90IGdvIHRvIHRleHQgbm9kZXMKKyAgICAgICAgaWYgKHRhcmdldCAmJiB0YXJnZXQt
PmlzVGV4dE5vZGUoKSkKKyAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC0+cGFyZW50Tm9kZSgp
OworCisgICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2ggPSBUb3VjaDo6Y3JlYXRlKG1fZnJhbWUs
IHRhcmdldCwgcG9pbnQuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcG9pbnQuc2NyZWVuUG9zKCkueCgpLCBwb2ludC5zY3JlZW5Qb3MoKS55KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lUG9pbnQueCgp
LCBmcmFtZVBvaW50LnkoKSk7CisKKyAgICAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBUb3VjaFN0
YXJ0ICYmICFpKSB7CisgICAgICAgICAgICBtX3RvdWNoRXZlbnRUYXJnZXQgPSB0YXJnZXQ7Cisg
ICAgICAgICAgICBtX2ZpcnN0VG91Y2hTY3JlZW5Qb3MgPSBwb2ludC5zY3JlZW5Qb3MoKTsKKyAg
ICAgICAgICAgIG1fZmlyc3RUb3VjaFBhZ2VQb3MgPSBmcmFtZVBvaW50OworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHBvaW50LnN0YXRlKCkgIT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaFJl
bGVhc2VkKSB7CisgICAgICAgICAgICB0b3VjaGVzLT5hcHBlbmQodG91Y2gpOworCisgICAgICAg
ICAgICBpZiAobV90b3VjaEV2ZW50VGFyZ2V0ID09IHRhcmdldCkKKyAgICAgICAgICAgICAgIHRh
cmdldFRvdWNoZXMtPmFwcGVuZCh0b3VjaCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocG9p
bnQuc3RhdGUoKSAhPSBQbGF0Zm9ybVRvdWNoUG9pbnQ6OlRvdWNoU3RhdGlvbmFyeSkKKyAgICAg
ICAgICAgIGNoYW5nZWRUb3VjaGVzLT5hcHBlbmQodG91Y2gpOworICAgIH0KKworICAgIEF0b21p
Y1N0cmluZyogZXZlbnROYW1lID0gMDsKKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgeworICAg
IGNhc2UgVG91Y2hTdGFydDoKKyAgICAgICAgZXZlbnROYW1lID0gJmV2ZW50TmFtZXMoKS50b3Vj
aHN0YXJ0RXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVG91Y2hNb3ZlOgorICAgICAg
ICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFRvdWNoRW5kOgorICAgICAgICBldmVudE5hbWUgPSAmZXZlbnROYW1lcygp
LnRvdWNoZW5kRXZlbnQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICghbV90b3Vj
aEV2ZW50VGFyZ2V0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBSZWZQdHI8VG91Y2hF
dmVudD4gZXYgPSBUb3VjaEV2ZW50OjpjcmVhdGUodG91Y2hlcy5nZXQoKSwgdGFyZ2V0VG91Y2hl
cy5nZXQoKSwgY2hhbmdlZFRvdWNoZXMuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpldmVudE5hbWUsIG1fdG91Y2hFdmVudFRhcmdldC0+ZG9j
dW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9maXJzdFRvdWNoU2NyZWVuUG9zLngoKSwgbV9maXJzdFRvdWNoU2Ny
ZWVuUG9zLnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9maXJzdFRvdWNoUGFnZVBvcy54KCksIG1fZmlyc3RUb3VjaFBhZ2VQb3MueSgpKTsKKwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIG1fdG91Y2hFdmVudFRhcmdldC0+ZGlzcGF0
Y2hFdmVudChldi5nZXQoKSwgZWMpOworCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBUb3VjaEVu
ZCkKKyAgICAgICAgbV90b3VjaEV2ZW50VGFyZ2V0ID0gMDsKKworICAgIG1fcHJldmlvdXNUb3Vj
aEV2ZW50ID0gZXY7CisKKyAgICByZXR1cm4gZXYtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKK30KKyNl
bmRpZgorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggNmNkMGVhYi4uOGQzZDZjYSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ7CitjbGFzcyBQbGF0Zm9ybVRvdWNoRXZlbnQ7CiBjbGFzcyBQbGF0Zm9ybVdo
ZWVsRXZlbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9iamVjdDsKQEAgLTYw
LDYgKzYxLDcgQEAgY2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU3RyaW5nOwogY2xhc3MgU1ZHRWxl
bWVudEluc3RhbmNlOwogY2xhc3MgVGV4dEV2ZW50OworY2xhc3MgVG91Y2hFdmVudDsKIGNsYXNz
IFdpZGdldDsKICAgICAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpAQCAtMTkxLDYgKzE5Mywx
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE5TRXZlbnQgKmN1cnJlbnROU0V2ZW50KCk7CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50
KGNvbnN0IFBsYXRmb3JtVG91Y2hFdmVudCYpOworI2VuZGlmCisKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKICAgICBlbnVtIERyYWdBbmREcm9wSGFuZGxlVHlwZSB7CkBAIC0z
OTgsNiArNDA0LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3NlbmRpbmdFdmVudFRvU3Vidmll
dzsKICAgICBpbnQgbV9hY3RpdmF0aW9uRXZlbnROdW1iZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIFJlZlB0cjxOb2RlPiBtX3RvdWNoRXZlbnRUYXJnZXQ7CisgICAg
SW50UG9pbnQgbV9maXJzdFRvdWNoU2NyZWVuUG9zOworICAgIEludFBvaW50IG1fZmlyc3RUb3Vj
aFBhZ2VQb3M7CisgICAgUmVmUHRyPFRvdWNoRXZlbnQ+IG1fcHJldmlvdXNUb3VjaEV2ZW50Owor
I2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IGJh
NmI5ZjMuLmQzYmEzN2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCisr
KyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xMDgsNiArMTA4LDExIEBACiAjaW5j
bHVkZSA8UVgxMUluZm8+CiAjZW5kaWYKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9D
SEVDSyg0LCA2LCAwKQorI2luY2x1ZGUgPFFUb3VjaEV2ZW50PgorI2luY2x1ZGUgIlBsYXRmb3Jt
VG91Y2hFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFFXRUJLSVRfRVhQT1JUIHF0X2RydF9vdmVyd3JpdGVQbHVnaW5EaXJlY3RvcmllcygpCkBAIC0x
MzM0LDYgKzEzMzksMTggQEAgYm9vbCBRV2ViUGFnZVByaXZhdGU6OmhhbmRsZVNjcm9sbGluZyhR
S2V5RXZlbnQgKmV2LCBGcmFtZSAqZnJhbWUpCiAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS0+c2Nyb2xsUmVjdXJzaXZlbHkoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CiB9CiAKKyNp
ZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKK3ZvaWQgUVdlYlBhZ2VQ
cml2YXRlOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBXZWJDb3JlOjpG
cmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpjb3JlKG1haW5GcmFtZSk7CisgICAgaWYg
KCFmcmFtZS0+dmlldygpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29sIGFjY2VwdGVkID0g
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5oYW5kbGVUb3VjaEV2ZW50KFBsYXRmb3JtVG91Y2hFdmVu
dChldmVudCkpOworICAgIGV2ZW50LT5zZXRBY2NlcHRlZChhY2NlcHRlZCk7Cit9CisjZW5kaWYK
KwogLyohCiAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIGlucHV0IG1ldGhvZCB0byBxdWVy
eSBhIHNldCBvZiBwcm9wZXJ0aWVzIG9mIHRoZSBwYWdlCiAgIHRvIGJlIGFibGUgdG8gc3VwcG9y
dCBjb21wbGV4IGlucHV0IG1ldGhvZCBvcGVyYXRpb25zIGFzIHN1cHBvcnQgZm9yIHN1cnJvdW5k
aW5nCkBAIC0yNTQ4LDYgKzI1NjUsMTMgQEAgYm9vbCBRV2ViUGFnZTo6ZXZlbnQoUUV2ZW50ICpl
dikKICAgICBjYXNlIFFFdmVudDo6TGVhdmU6CiAgICAgICAgIGQtPmxlYXZlRXZlbnQoZXYpOwog
ICAgICAgICBicmVhazsKKyNpZiBRVF9WRVJTSU9OID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwg
MCkKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hCZWdpbjoKKyAgICBjYXNlIFFFdmVudDo6VG91Y2hV
cGRhdGU6CisgICAgY2FzZSBRRXZlbnQ6OlRvdWNoRW5kOgorICAgICAgICBkLT50b3VjaEV2ZW50
KHN0YXRpY19jYXN0PFFUb3VjaEV2ZW50Kj4oZXYpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
ICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gUU9iamVjdDo6ZXZlbnQoZXYpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oIGIvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZV9wLmgKaW5kZXggNWQ5N2RhNC4uZmZiZGQ1MSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZV9wLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2VicGFnZV9wLmgKQEAgLTEx
NCw2ICsxMTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgaGFuZGxlU29mdHdhcmVJbnB1dFBhbmVs
KFF0OjpNb3VzZUJ1dHRvbik7CiAgICAgYm9vbCBoYW5kbGVTY3JvbGxpbmcoUUtleUV2ZW50Kiwg
V2ViQ29yZTo6RnJhbWUqKTsKIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0
LCA2LCAwKQorICAgIHZvaWQgdG91Y2hFdmVudChRVG91Y2hFdmVudCopOworI2VuZGlmCisKICAg
ICB2b2lkIHNldEluc3BlY3RvcihRV2ViSW5zcGVjdG9yKik7CiAgICAgUVdlYkluc3BlY3Rvciog
Z2V0T3JDcmVhdGVJbnNwZWN0b3IoKTsKICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQ2hhbmdlTG9n
IGIvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5ZWYxM2YxLi41NmRjNTUyIDEwMDY0NAotLS0g
YS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAwOS0xMi0wOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3Jn
PiwgS2ltIEdyw7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGb3J3YXJkIFF0IHRvdWNoIGV2
ZW50cyB0byB0aGUgZXZlbnQgaGFuZGxlciBhcyBwbGF0Zm9ybSB0b3VjaCBldmVudHMuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyMTE0CisKKyAg
ICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjp0b3Vj
aEV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlOjpldmVudCk6CisgICAgICAgICogQXBpL3F3ZWJw
YWdlX3AuaDoKKwogMjAwOS0xMi0wNCAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290
dGVAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDk3MjAzZGUuLjc2YzVkZjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAwOS0xMi0wOSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdy
w7ZuaG9sbSAgPGtpbS5ncm9uaG9sbUBub21vdm9rLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBjcmVhdGluZyBz
eW50aGV0aWMgdG91Y2ggZXZlbnRzIHdpdGggRXZlbnRTZW5kZXIKKyAgICAgICAgaW4gUXQncyBE
dW1wUmVuZGVyVHJlZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzIxMTQKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVy
UXQuY3BwOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmFkZFRvdWNoUG9pbnQpOgorICAgICAgICAo
RXZlbnRTZW5kZXI6OnVwZGF0ZVRvdWNoUG9pbnQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnRv
dWNoU3RhcnQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnRvdWNoTW92ZSk6CisgICAgICAgIChF
dmVudFNlbmRlcjo6dG91Y2hFbmQpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OmNsZWFyVG91Y2hQ
b2ludHMpOgorICAgICAgICAoRXZlbnRTZW5kZXI6OnJlbGVhc2VUb3VjaFBvaW50KToKKyAgICAg
ICAgKEV2ZW50U2VuZGVyOjpzZW5kVG91Y2hFdmVudCk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvcXQvRXZlbnRTZW5kZXJRdC5oOgorCiAyMDA5LTEyLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmNwcCBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuY3BwCmluZGV4IGEwZGEy
NzMuLmJjNmZjMzIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2
ZW50U2VuZGVyUXQuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50
U2VuZGVyUXQuY3BwCkBAIC0yNTEsNiArMjUxLDc1IEBAIHZvaWQgRXZlbnRTZW5kZXI6OnNjaGVk
dWxlQXN5bmNocm9ub3VzQ2xpY2soKQogICAgIFFBcHBsaWNhdGlvbjo6cG9zdEV2ZW50KG1fcGFn
ZSwgZXZlbnQyKTsKIH0KIAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2
LCAwKQorCit2b2lkIEV2ZW50U2VuZGVyOjphZGRUb3VjaFBvaW50KGludCB4LCBpbnQgeSkKK3sK
KyAgICBpbnQgaWQgPSBtX3RvdWNoUG9pbnRzLmNvdW50KCk7CisgICAgUVRvdWNoRXZlbnQ6OlRv
dWNoUG9pbnQgcG9pbnQoaWQpOworICAgIG1fdG91Y2hQb2ludHMuYXBwZW5kKHBvaW50KTsKKyAg
ICB1cGRhdGVUb3VjaFBvaW50KGlkLCB4LCB5KTsKKyAgICBtX3RvdWNoUG9pbnRzW2lkXS5zZXRT
dGF0ZShRdDo6VG91Y2hQb2ludFByZXNzZWQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjp1cGRh
dGVUb3VjaFBvaW50KGludCBpbmRleCwgaW50IHgsIGludCB5KQoreworICAgIGlmIChpbmRleCA8
IDAgfHwgaW5kZXggPj0gbV90b3VjaFBvaW50cy5jb3VudCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBRVG91Y2hFdmVudDo6VG91Y2hQb2ludCAmcCA9IG1fdG91Y2hQb2ludHNbaW5kZXhdOwor
ICAgIHAuc2V0UG9zKFFQb2ludEYoeCwgeSkpOworICAgIHAuc2V0U3RhdGUoUXQ6OlRvdWNoUG9p
bnRNb3ZlZCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnRvdWNoU3RhcnQoKQoreworICAgIHNl
bmRUb3VjaEV2ZW50KFFFdmVudDo6VG91Y2hCZWdpbik7Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6
OnRvdWNoTW92ZSgpCit7CisgICAgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUb3VjaFVwZGF0ZSk7
Cit9CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnRvdWNoRW5kKCkKK3sKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IG1fdG91Y2hQb2ludHMuY291bnQoKTsgKytpKQorICAgICAgICBtX3RvdWNoUG9pbnRz
W2ldLnNldFN0YXRlKFF0OjpUb3VjaFBvaW50UmVsZWFzZWQpOworICAgIHNlbmRUb3VjaEV2ZW50
KFFFdmVudDo6VG91Y2hFbmQpOworfQorCit2b2lkIEV2ZW50U2VuZGVyOjpjbGVhclRvdWNoUG9p
bnRzKCkKK3sKKyAgICBtX3RvdWNoUG9pbnRzLmNsZWFyKCk7Cit9CisKK3ZvaWQgRXZlbnRTZW5k
ZXI6OnJlbGVhc2VUb3VjaFBvaW50KGludCBpbmRleCkKK3sKKyAgICBpZiAoaW5kZXggPCAwIHx8
IGluZGV4ID49IG1fdG91Y2hQb2ludHMuY291bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV90b3VjaFBvaW50c1tpbmRleF0uc2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRSZWxlYXNlZCk7Cit9
CisKK3ZvaWQgRXZlbnRTZW5kZXI6OnNlbmRUb3VjaEV2ZW50KFFFdmVudDo6VHlwZSB0eXBlKQor
eworICAgIFFUb3VjaEV2ZW50IGV2ZW50KHR5cGUpOworICAgIGV2ZW50LnNldFRvdWNoUG9pbnRz
KG1fdG91Y2hQb2ludHMpOworICAgIFFBcHBsaWNhdGlvbjo6c2VuZEV2ZW50KG1fcGFnZSwgJmV2
ZW50KTsKKyAgICBRTGlzdDxRVG91Y2hFdmVudDo6VG91Y2hQb2ludD46Okl0ZXJhdG9yIGl0ID0g
bV90b3VjaFBvaW50cy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtX3RvdWNoUG9pbnRzLmVu
ZCgpKSB7CisgICAgICAgIGlmIChpdC0+c3RhdGUoKSA9PSBRdDo6VG91Y2hQb2ludFJlbGVhc2Vk
KQorICAgICAgICAgICAgaXQgPSBtX3RvdWNoUG9pbnRzLmVyYXNlKGl0KTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBpdC0+c2V0U3RhdGUoUXQ6OlRvdWNoUG9pbnRTdGF0aW9uYXJ5KTsK
KyAgICAgICAgICAgICsraXQ7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNlbmRpZgorCiBRV2Vi
RnJhbWUqIEV2ZW50U2VuZGVyOjpmcmFtZVVuZGVyTW91c2UoKSBjb25zdAogewogICAgIFFXZWJG
cmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvRXZlbnRTZW5kZXJRdC5oCmluZGV4IGZkNzQ0NTUuLjMxYThjNTYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0V2ZW50U2VuZGVyUXQuaAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9FdmVudFNlbmRlclF0LmgKQEAgLTQwLDYg
KzQwLDEwIEBACiAjaW5jbHVkZSA8cXdlYnBhZ2UuaD4KICNpbmNsdWRlIDxxd2ViZnJhbWUuaD4K
IAorI2lmIFFUX1ZFUlNJT04gPj0gUVRfVkVSU0lPTl9DSEVDSyg0LCA2LCAwKQorI2luY2x1ZGUg
PFFUb3VjaEV2ZW50PgorI2VuZGlmCisKIGNsYXNzIEV2ZW50U2VuZGVyIDogcHVibGljIFFPYmpl
Y3QgewogICAgIFFfT0JKRUNUCiBwdWJsaWM6CkBAIC01NCwxMSArNTgsMjQgQEAgcHVibGljIHNs
b3RzOgogICAgIHZvaWQgY2xlYXJLaWxsUmluZygpIHt9CiAgICAgdm9pZCBjb250ZXh0Q2xpY2so
KTsKICAgICB2b2lkIHNjaGVkdWxlQXN5bmNocm9ub3VzQ2xpY2soKTsKKyNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICB2b2lkIGFkZFRvdWNoUG9pbnQoaW50
IHgsIGludCB5KTsKKyAgICB2b2lkIHVwZGF0ZVRvdWNoUG9pbnQoaW50IGluZGV4LCBpbnQgeCwg
aW50IHkpOworICAgIHZvaWQgdG91Y2hTdGFydCgpOworICAgIHZvaWQgdG91Y2hNb3ZlKCk7Cisg
ICAgdm9pZCB0b3VjaEVuZCgpOworICAgIHZvaWQgY2xlYXJUb3VjaFBvaW50cygpOworICAgIHZv
aWQgcmVsZWFzZVRvdWNoUG9pbnQoaW50IGluZGV4KTsKKyNlbmRpZgogCiBwcml2YXRlOgorICAg
IHZvaWQgc2VuZFRvdWNoRXZlbnQoUUV2ZW50OjpUeXBlKTsKICAgICBRUG9pbnQgbV9tb3VzZVBv
czsKICAgICBRV2ViUGFnZSogbV9wYWdlOwogICAgIGludCBtX3RpbWVMZWFwOwogICAgIFFXZWJG
cmFtZSogZnJhbWVVbmRlck1vdXNlKCkgY29uc3Q7CisjaWYgUVRfVkVSU0lPTiA+PSBRVF9WRVJT
SU9OX0NIRUNLKDQsIDYsIDApCisgICAgUUxpc3Q8UVRvdWNoRXZlbnQ6OlRvdWNoUG9pbnQ+IG1f
dG91Y2hQb2ludHM7CisjZW5kaWYKIH07CiAjZW5kaWYgLy8gIEV2ZW50U2VuZGVyUXRfaAo=
</data>
<flag name="review"
          id="26463"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44676</attachid>
            <date>2009-12-11 04:58:10 -0800</date>
            <delta_ts>2009-12-11 06:15:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32114-20091211135808.patch</filename>
            <type>text/plain</type>
            <size>11957</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZTllMzRkLi4yZDRiYTBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMTIt
MTEgIFNpbW9uIEhhdXNtYW5uICA8aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBiYXNpYyBsYXlvdXQgdGVz
dCBmb3IgRE9NIHRvdWNoIGV2ZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzIxMTQKKworICAgICAgICAqIGZhc3QvZXZlbnRzL2Jhc2ljLXRv
dWNoLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2Jh
c2ljLXRvdWNoLWV2ZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvYmFzaWMtdG91Y2gtZXZlbnRzLmpzOiBBZGRlZC4KKyAgICAgICAgKGFwcGVuZEV2
ZW50TG9nKToKKyAgICAgICAgKHZlcmlmeVRvdWNoRXZlbnQpOgorICAgICAgICAodmVyaWZ5VG91
Y2hQb2ludCk6CisgICAgICAgIChzaW5nbGVUb3VjaFNlcXVlbmNlKToKKyAgICAgICAgKG11bHRp
VG91Y2hTZXF1ZW5jZSk6CisgICAgICAgICh0b3VjaFRhcmdldHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorCiAyMDA5LTEyLTExICBGdW1pdG9zaGkgVWthaSAg
PHVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gtZXZlbnRz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWVkZTc1
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYmFzaWMtdG91Y2gt
ZXZlbnRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExNyBAQAorVGhpcyB0ZXN0cyBiYXNpYyB0
b3VjaCBldmVudCBzdXBwb3J0Lgorc2luZ2xlIHRvdWNoIHNlcXVlbmNlCitQQVNTIGxhc3RFdmVu
dC50eXBlIGlzICJ0b3VjaHN0YXJ0IgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGggaXMg
MQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2
ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0u
dGFyZ2V0LmlkIGlzICJ0b3VjaHRhcmdldCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFn
ZVggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1MgbGFz
dEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sw
XS5jbGllbnRZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmlkZW50aWZpZXIgaXMg
MAorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2htb3ZlIgorUEFTUyBsYXN0RXZlbnQudG91
Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlz
IDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2
ZW50LnRvdWNoZXNbMF0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFn
ZVkgaXMgMTUKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAyMAorUEFTUyBs
YXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRZIGlzIDE1CitQQVNTIGxhc3RFdmVudC50b3VjaGVz
WzBdLmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2hlbmQiCitQ
QVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2Vk
VG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFyZ2V0VG91Y2hlcy5sZW5ndGgg
aXMgMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVggaXMgMjAKK1BBU1Mg
bGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZIGlzIDE1CitQQVNTIGxhc3RFdmVudC5j
aGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYIGlzIDIwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91
Y2hlc1swXS5jbGllbnRZIGlzIDE1CitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5p
ZGVudGlmaWVyIGlzIDAKK211bHRpIHRvdWNoIHNlcXVlbmNlCitQQVNTIGxhc3RFdmVudC50eXBl
IGlzICJ0b3VjaHN0YXJ0IgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMQorUEFT
UyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRh
cmdldFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0
LmlkIGlzICJ0b3VjaHRhcmdldCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVggaXMg
MTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkgaXMgMTAKK1BBU1MgbGFzdEV2ZW50
LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS5jbGll
bnRZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMAorUEFT
UyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2htb3ZlIgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5s
ZW5ndGggaXMgMgorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BB
U1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDIKK1BBU1MgbGFzdEV2ZW50LnRv
dWNoZXNbMF0ucGFnZVggaXMgMTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkgaXMg
MTAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAxMAorUEFTUyBsYXN0RXZl
bnQudG91Y2hlc1swXS5jbGllbnRZIGlzIDEwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBdLmlk
ZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sxXS5wYWdlWCBpcyAyMAorUEFT
UyBsYXN0RXZlbnQudG91Y2hlc1sxXS5wYWdlWSBpcyAzMAorUEFTUyBsYXN0RXZlbnQudG91Y2hl
c1sxXS5jbGllbnRYIGlzIDIwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzFdLmNsaWVudFkgaXMg
MzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0uaWRlbnRpZmllciBpcyAxCitQQVNTIGxhc3RF
dmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWCBpcyAyMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdl
ZFRvdWNoZXNbMF0ucGFnZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBd
LmNsaWVudFggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkg
aXMgMzAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLmlkZW50aWZpZXIgaXMgMQor
UEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2htb3ZlIgorUEFTUyBsYXN0RXZlbnQudG91Y2hl
cy5sZW5ndGggaXMgMgorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEK
K1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDIKK1BBU1MgbGFzdEV2ZW50
LnRvdWNoZXNbMF0ucGFnZVggaXMgMTUKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFnZVkg
aXMgMTUKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAxNQorUEFTUyBsYXN0
RXZlbnQudG91Y2hlc1swXS5jbGllbnRZIGlzIDE1CitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzBd
LmlkZW50aWZpZXIgaXMgMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVgg
aXMgMTUKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZIGlzIDE1CitQQVNT
IGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYIGlzIDE1CitQQVNTIGxhc3RFdmVu
dC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIGlzIDE1CitQQVNTIGxhc3RFdmVudC5jaGFuZ2Vk
VG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0ucGFn
ZVggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMV0ucGFnZVkgaXMgMzAKK1BBU1MgbGFz
dEV2ZW50LnRvdWNoZXNbMV0uY2xpZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1sx
XS5jbGllbnRZIGlzIDMwCitQQVNTIGxhc3RFdmVudC50b3VjaGVzWzFdLmlkZW50aWZpZXIgaXMg
MQorUEFTUyBsYXN0RXZlbnQudHlwZSBpcyAidG91Y2htb3ZlIgorUEFTUyBsYXN0RXZlbnQudG91
Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlz
IDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2
ZW50LnRvdWNoZXNbMF0ucGFnZVggaXMgMjAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0ucGFn
ZVkgaXMgMzAKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCBpcyAyMAorUEFTUyBs
YXN0RXZlbnQudG91Y2hlc1swXS5jbGllbnRZIGlzIDMwCitQQVNTIGxhc3RFdmVudC50b3VjaGVz
WzBdLmlkZW50aWZpZXIgaXMgMQorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFn
ZVggaXMgMTUKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VZIGlzIDE1CitQ
QVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYIGlzIDE1CitQQVNTIGxhc3RF
dmVudC5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZIGlzIDE1CitQQVNTIGxhc3RFdmVudC5jaGFu
Z2VkVG91Y2hlc1swXS5pZGVudGlmaWVyIGlzIDAKK1BBU1MgbGFzdEV2ZW50LnR5cGUgaXMgInRv
dWNoZW5kIgorUEFTUyBsYXN0RXZlbnQudG91Y2hlcy5sZW5ndGggaXMgMAorUEFTUyBsYXN0RXZl
bnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIGlzIDEKK1BBU1MgbGFzdEV2ZW50LnRhcmdldFRvdWNo
ZXMubGVuZ3RoIGlzIDAKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIGlz
IDIwCitQQVNTIGxhc3RFdmVudC5jaGFuZ2VkVG91Y2hlc1swXS5wYWdlWSBpcyAzMAorUEFTUyBs
YXN0RXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCBpcyAyMAorUEFTUyBsYXN0RXZlbnQu
Y2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSBpcyAzMAorUEFTUyBsYXN0RXZlbnQuY2hhbmdlZFRv
dWNoZXNbMF0uaWRlbnRpZmllciBpcyAxCit2ZXJpZnkgdG91Y2ggdGFyZ2V0cworUEFTUyBsYXN0
RXZlbnQudHlwZSBpcyAidG91Y2hzdGFydCIKK1BBU1MgbGFzdEV2ZW50LnRvdWNoZXMubGVuZ3Ro
IGlzIDEKK1BBU1MgbGFzdEV2ZW50LmNoYW5nZWRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxh
c3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxhc3RFdmVudC50YXJnZXRU
b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJESVYiCitQQVNTIGxhc3RFdmVudC50eXBlIGlz
ICJ0b3VjaG1vdmUiCitQQVNTIGxhc3RFdmVudC50b3VjaGVzLmxlbmd0aCBpcyAxCitQQVNTIGxh
c3RFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggaXMgMQorUEFTUyBsYXN0RXZlbnQudGFyZ2V0
VG91Y2hlcy5sZW5ndGggaXMgMAorUEFTUyBsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQudGFn
TmFtZSBpcyAiSFRNTCIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iYXNpYy10b3Vj
aC1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2Jhc2ljLXRvdWNoLWV2ZW50
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YTczZDkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxw
IGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL2Jhc2ljLXRvdWNoLWV2ZW50cy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQt
dGVzdHMvYmFzaWMtdG91Y2gtZXZlbnRzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Ny
aXB0LXRlc3RzL2Jhc2ljLXRvdWNoLWV2ZW50cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hMDEwOGI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc2NyaXB0LXRlc3RzL2Jhc2ljLXRvdWNoLWV2ZW50cy5qcwpAQCAtMCwwICsxLDE0MCBA
QAorZGVzY3JpcHRpb24gPSAiVGhpcyB0ZXN0cyBiYXNpYyB0b3VjaCBldmVudCBzdXBwb3J0LiI7
CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0
b3VjaHRhcmdldCI7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdo
dCA9ICIxMDBweCI7CitkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCit2YXIg
bGFzdEV2ZW50ID0gbnVsbDsKKworZnVuY3Rpb24gYXBwZW5kRXZlbnRMb2coKSB7CisgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBsYXN0RXZlbnQgPSBldmVudDsKKyAgICB9
IGVsc2UgeworICAgICAgICBkZWJ1ZyhldmVudC50eXBlKTsKKyAgICB9Cit9CisKK2Rpdi5hZGRF
dmVudExpc3RlbmVyKCJ0b3VjaHN0YXJ0IiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKK2Rpdi5h
ZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBhcHBlbmRFdmVudExvZywgZmFsc2UpOworZGl2
LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKK2Rv
Y3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsK
KworZnVuY3Rpb24gdmVyaWZ5VG91Y2hFdmVudCh0eXBlLCB0b3RhbFRvdWNoQ291bnQsIGNoYW5n
ZWRUb3VjaENvdW50LCB0YXJnZXRUb3VjaENvdW50KQoreworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygibGFzdEV2ZW50LnR5cGUiLCB0eXBlKTsKKyAgICBzaG91bGRCZSgibGFzdEV2ZW50LnRv
dWNoZXMubGVuZ3RoIiwgdG90YWxUb3VjaENvdW50LnRvU3RyaW5nKCkpOworICAgIHNob3VsZEJl
KCJsYXN0RXZlbnQuY2hhbmdlZFRvdWNoZXMubGVuZ3RoIiwgY2hhbmdlZFRvdWNoQ291bnQudG9T
dHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC50YXJnZXRUb3VjaGVzLmxlbmd0aCIs
IHRhcmdldFRvdWNoQ291bnQudG9TdHJpbmcoKSk7Cit9CisKK2Z1bmN0aW9uIHZlcmlmeVRvdWNo
UG9pbnQobGlzdCwgcG9pbnQsIHgsIHksIGlkKQoreworICAgIHNob3VsZEJlKCJsYXN0RXZlbnQu
IiArIGxpc3QgKyAiWyIgKyBwb2ludCArICJdLnBhZ2VYIiwgeC50b1N0cmluZygpKTsKKyAgICBz
aG91bGRCZSgibGFzdEV2ZW50LiIgKyBsaXN0ICsgIlsiICsgcG9pbnQgKyAiXS5wYWdlWSIsIHku
dG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBv
aW50ICsgIl0uY2xpZW50WCIsIHgudG9TdHJpbmcoKSk7CisgICAgc2hvdWxkQmUoImxhc3RFdmVu
dC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0uY2xpZW50WSIsIHkudG9TdHJpbmcoKSk7Cisg
ICAgc2hvdWxkQmUoImxhc3RFdmVudC4iICsgbGlzdCArICJbIiArIHBvaW50ICsgIl0uaWRlbnRp
ZmllciIsIGlkLnRvU3RyaW5nKCkpOworfQorCitmdW5jdGlvbiBzaW5nbGVUb3VjaFNlcXVlbmNl
KCkKK3sKKyAgICBkZWJ1Zygic2luZ2xlIHRvdWNoIHNlcXVlbmNlIik7CisKKyAgICBldmVudFNl
bmRlci5hZGRUb3VjaFBvaW50KDEwLCAxMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgp
OworCisgICAgdmVyaWZ5VG91Y2hFdmVudCgidG91Y2hzdGFydCIsIDEsIDEsIDEpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygibGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LmlkIiwgInRv
dWNodGFyZ2V0Iik7CisgICAgdmVyaWZ5VG91Y2hQb2ludCgidG91Y2hlcyIsIDAsIDEwLCAxMCwg
MCk7CisKKyAgICBldmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIDIwLCAxNSk7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaG1v
dmUiLCAxLCAxLCAxKTsKKyAgICB2ZXJpZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMjAsIDE1
LCAwKTsKKworICAgIGV2ZW50U2VuZGVyLnRvdWNoRW5kKCk7CisKKyAgICB2ZXJpZnlUb3VjaEV2
ZW50KCJ0b3VjaGVuZCIsIDAsIDEsIDApOworICAgIHZlcmlmeVRvdWNoUG9pbnQoImNoYW5nZWRU
b3VjaGVzIiwgMCwgMjAsIDE1LCAwKTsKK30KKworZnVuY3Rpb24gbXVsdGlUb3VjaFNlcXVlbmNl
KCkKK3sKKyAgICBkZWJ1ZygibXVsdGkgdG91Y2ggc2VxdWVuY2UiKTsKKworICAgIGV2ZW50U2Vu
ZGVyLmFkZFRvdWNoUG9pbnQoMTAsIDEwKTsKKyAgICBldmVudFNlbmRlci50b3VjaFN0YXJ0KCk7
CisKKyAgICB2ZXJpZnlUb3VjaEV2ZW50KCJ0b3VjaHN0YXJ0IiwgMSwgMSwgMSk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJsYXN0RXZlbnQudG91Y2hlc1swXS50YXJnZXQuaWQiLCAidG91
Y2h0YXJnZXQiKTsKKyAgICB2ZXJpZnlUb3VjaFBvaW50KCJ0b3VjaGVzIiwgMCwgMTAsIDEwLCAw
KTsKKworICAgIGV2ZW50U2VuZGVyLmFkZFRvdWNoUG9pbnQoMjAsIDMwKTsKKyAgICBldmVudFNl
bmRlci50b3VjaE1vdmUoKTsKKworICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNobW92ZSIsIDIs
IDEsIDIpOworICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNoZXMiLCAwLCAxMCwgMTAsIDApOwor
ICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNoZXMiLCAxLCAyMCwgMzAsIDEpOworICAgIHZlcmlm
eVRvdWNoUG9pbnQoImNoYW5nZWRUb3VjaGVzIiwgMCwgMjAsIDMwLCAxKTsKKworICAgIGV2ZW50
U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgMTUsIDE1KTsKKyAgICBldmVudFNlbmRlci50b3Vj
aE1vdmUoKTsKKworICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNobW92ZSIsIDIsIDEsIDIpOwor
ICAgIHZlcmlmeVRvdWNoUG9pbnQoInRvdWNoZXMiLCAwLCAxNSwgMTUsIDApOworICAgIHZlcmlm
eVRvdWNoUG9pbnQoImNoYW5nZWRUb3VjaGVzIiwgMCwgMTUsIDE1LCAwKTsKKyAgICB2ZXJpZnlU
b3VjaFBvaW50KCJ0b3VjaGVzIiwgMSwgMjAsIDMwLCAxKTsKKworICAgIGV2ZW50U2VuZGVyLnJl
bGVhc2VUb3VjaFBvaW50KDApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoTW92ZSgpOworCisgICAg
dmVyaWZ5VG91Y2hFdmVudCgidG91Y2htb3ZlIiwgMSwgMSwgMSk7CisgICAgdmVyaWZ5VG91Y2hQ
b2ludCgidG91Y2hlcyIsIDAsIDIwLCAzMCwgMSk7CisgICAgdmVyaWZ5VG91Y2hQb2ludCgiY2hh
bmdlZFRvdWNoZXMiLCAwLCAxNSwgMTUsIDApOworCisgICAgZXZlbnRTZW5kZXIudG91Y2hFbmQo
KTsKKworICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoZW5kIiwgMCwgMSwgMCk7CisgICAgdmVy
aWZ5VG91Y2hQb2ludCgiY2hhbmdlZFRvdWNoZXMiLCAwLCAyMCwgMzAsIDEpOworfQorCitmdW5j
dGlvbiB0b3VjaFRhcmdldHMoKQoreworICAgIGRlYnVnKCJ2ZXJpZnkgdG91Y2ggdGFyZ2V0cyIp
OworCisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCgxMCwgMTApOworICAgIGV2ZW50U2Vu
ZGVyLnRvdWNoU3RhcnQoKTsKKworICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNoc3RhcnQiLCAx
LCAxLCAxKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImxhc3RFdmVudC50YXJnZXRUb3Vj
aGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOworCisgICAgZXZlbnRTZW5kZXIudXBkYXRl
VG91Y2hQb2ludCgwLCAxMDAwLCAxMDAwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsK
KworICAgIHZlcmlmeVRvdWNoRXZlbnQoInRvdWNobW92ZSIsIDEsIDEsIDApOworICAgIHNob3Vs
ZEJlRXF1YWxUb1N0cmluZygibGFzdEV2ZW50LnRvdWNoZXNbMF0udGFyZ2V0LnRhZ05hbWUiLCAi
SFRNTCIpOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZGVidWcoZGVzY3Jp
cHRpb24pOworCisgICAgbGFzdEV2ZW50ID0gbnVsbDsKKyAgICBldmVudFNlbmRlci5jbGVhclRv
dWNoUG9pbnRzKCk7CisgICAgc2luZ2xlVG91Y2hTZXF1ZW5jZSgpOworCisgICAgbGFzdEV2ZW50
ID0gbnVsbDsKKyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgbXVsdGlU
b3VjaFNlcXVlbmNlKCk7CisKKyAgICBsYXN0RXZlbnQgPSBudWxsOworICAgIGV2ZW50U2VuZGVy
LmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICB0b3VjaFRhcmdldHMoKTsKKworfSBlbHNlIHsKKyAg
ICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgVGFwIG9uIHRoZSBi
bHVlIHJlY3QgdG8gbG9nLiIpCit9CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA0ZjkyZGVhLi4wOGExYzI2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTcyNSwzICs1NzI1LDYgQEAgaHR0cC90ZXN0cy9sb2FkaW5n
L3N0YXRlLW9iamVjdC1zZWN1cml0eS1leGNlcHRpb24uaHRtbAogIyBGYWlscyBiZWNhdXNlIG9m
IG5ldyBiZWhhdmlvdXIgZW5mb3JjZWQgYnkgbGlic291cAogIyBTZWU6IGh0dHBzOi8vYnVnemls
bGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02MDM4MjUKIGZhc3QvY29va2llcy9sb2NhbC1m
aWxlLWNhbi1zZXQtY29va2llcy5odG1sCisKKyMgVGhpcyB0ZXN0IHJlcXVpcmVzIHRvdWNoIHN1
cHBvcnQKK2Zhc3QvZXZlbnRzL2Jhc2ljLXRvdWNoLWV2ZW50cy5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkCmluZGV4IGU2NTE3YWQuLmExOWVlMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC0xMTQsMyArMTE0LDYgQEAgbWVkaWEvbWVkaWEtY2FuLXBsYXktb2dnLmh0bWwKIAog
IyBUaGlzIHRlc3QgcmVxdWlyZXMgbmV3IHB5d2Vic29ja2V0CiB3ZWJzb2NrZXQvdGVzdHMvc3Vi
LXByb3RvY29sLXdpdGgtc3BhY2UuaHRtbAorCisjIFRoaXMgdGVzdCByZXF1aXJlcyB0b3VjaCBz
dXBwb3J0CitmYXN0L2V2ZW50cy9iYXNpYy10b3VjaC1ldmVudHMuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>