<?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>102824</bug_id>
          
          <creation_ts>2012-11-20 10:26:22 -0800</creation_ts>
          <short_desc>[Skia] Add missing OpaqueRegionSkia notifier calls</short_desc>
          <delta_ts>2012-11-29 05:35:28 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>102694</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Florin Malita">fmalita</reporter>
          <assigned_to name="Florin Malita">fmalita</assigned_to>
          <cc>alokp</cc>
    
    <cc>danakj</cc>
    
    <cc>junov</cc>
    
    <cc>reed</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>771974</commentid>
    <comment_count>0</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-20 10:26:22 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=102694#c3

Per comments, didDraw... calls should be added to all PlatformContextSkia&apos;s draw wrappers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772028</commentid>
    <comment_count>1</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-20 11:10:45 -0800</bug_when>
    <thetext>If there are any places that were currently calling didDraw, and now will no longer in 102694, then we could see regressions with artifacts appearing on screen. So, if that&apos;s the case this really shouldn&apos;t be done as a separate after-step. If not, then we should be alright.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772045</commentid>
    <comment_count>2</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-20 11:31:03 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; If there are any places that were currently calling didDraw, and now will no longer in 102694, then we could see regressions with artifacts appearing on screen. So, if that&apos;s the case this really shouldn&apos;t be done as a separate after-step. If not, then we should be alright.

102694 should not produce any functional changes: it just relocates existing didDraw calls for drawOval(), drawPath(), drawPoints() &amp; drawRect() into the corresponding PlatformContextSkia wrappers. For the cases you mentioned, no didDraw calls were in place previously.

I take it it&apos;s still a good idea to add these though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772046</commentid>
    <comment_count>3</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-20 11:32:35 -0800</bug_when>
    <thetext>Yes absolutely!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777152</commentid>
    <comment_count>4</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-27 13:07:55 -0800</bug_when>
    <thetext>I&apos;ve talked with Alok about this - being able to compute a bounding rects for positioned text in particular, to avoid doing an unbounded invalidation.

Currently there is no good API for that purpose, so it would take some work on the Skia side to get it in place. On the other hand, Alok mentioned he&apos;s hacking in this area and his patches would either

a) provide a better way to get bounding info from the WK text-handling methods (which already have that).

or

b) eliminate the need for opaque region notifications at this level altogether by refactoring the subsystem.

I&apos;ll let Alok share the details if needed, but the agreement was to wait for a bit to see what comes out of his work before pushing too hard on this.

Does that sound like a good plan, or would you prefer we try an interim fix? Maybe just add the notifiers for non-text related draw calls as a start?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777159</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-27 13:14:18 -0800</bug_when>
    <thetext>I think we should add calls for correctness, or new callers of these methods may cause really bad rendering artifacts (compositor thinks something is opaque but it is not). If we don&apos;t have good data for text, we should didDrawUnbounded with a FIXME to do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777161</commentid>
    <comment_count>6</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-27 13:15:55 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I think we should add calls for correctness, or new callers of these methods may cause really bad rendering artifacts (compositor thinks something is opaque but it is not). If we don&apos;t have good data for text, we should didDrawUnbounded with a FIXME to do better.

Alright, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777390</commentid>
    <comment_count>7</comment_count>
      <attachid>176371</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-27 17:03:25 -0800</bug_when>
    <thetext>Created attachment 176371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777415</commentid>
    <comment_count>8</comment_count>
      <attachid>176371</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-27 17:40:56 -0800</bug_when>
    <thetext>Comment on attachment 176371
Patch

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

&gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.h:387
&gt; +        m_opaqueRegion.didDrawRect(this, dst, *paint, &amp;bitmap);

If dst is larger than the bitmap, does it get stretched or does it only fill the top/left?

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:850
&gt; +    EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), platformContext.opaqueRegion().asRect());

Since the opaque region isn&apos;t changing, it&apos;s not clear that the tracking did anything at all here.

There seems to be a number of cases like that. Splitting this up into more tests and/or doing a clear/drwa and verifying the opaque region/pixels in between would help.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777797</commentid>
    <comment_count>9</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-28 05:35:50 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.h:387
&gt; &gt; +        m_opaqueRegion.didDrawRect(this, dst, *paint, &amp;bitmap);
&gt; 
&gt; If dst is larger than the bitmap, does it get stretched or does it only fill the top/left?

It gets scaled/resampled.

&gt; &gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:850
&gt; &gt; +    EXPECT_EQ_RECT(IntRect(10, 10, 90, 90), platformContext.opaqueRegion().asRect());
&gt; 
&gt; Since the opaque region isn&apos;t changing, it&apos;s not clear that the tracking did anything at all here.


The intent was to guard against false positives. But I guess that path is thoroughly covered in the other unit tests - I&apos;ll clean them up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777841</commentid>
    <comment_count>10</comment_count>
      <attachid>176474</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-28 06:10:42 -0800</bug_when>
    <thetext>Created attachment 176474
Patch

Updated per comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778025</commentid>
    <comment_count>11</comment_count>
      <attachid>176474</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-28 10:22:31 -0800</bug_when>
    <thetext>Comment on attachment 176474
Patch

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

Thanks! A couple comments on beefing up the tests, and then I&apos;m good with it!

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:749
&gt; +    platformContext.drawPosTextH(&quot;A&quot;, 1, &amp;pointX, 0, alphaPaint);

add cases with an opaquePaint, that shows it doesn&apos;t mark anything opaque, but doesn&apos;t destroy opaque areas?

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:807
&gt; +    platformContext.writePixels(alphaBitmap, 10, 50);

Checking (10, 0) = no change and (10, 1) = drops the left edge, might be better here, to show that the height of the bitmap is being respected.

Similar for (0, 10) and (1, 10).

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:857
&gt; +    platformContext.drawBitmap(alphaBitmap, 50, 10, &amp;paint);

similar as writePixels, this doesn&apos;t really demonstrate that the bitmap&apos;s width/height is being used correctly yet.

&gt; Source/WebKit/chromium/tests/PlatformContextSkiaTest.cpp:903
&gt; +    platformContext.drawBitmapRect(alphaBitmap, 0, SkRect::MakeXYWH(10, 10, 50, 10), &amp;paint);

Same idea again, but maybe (10, 0, 10, 10), (10, 0, 10, 11), (0, 10, 10, 10), and (0, 10, 11, 10).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778298</commentid>
    <comment_count>12</comment_count>
      <attachid>176566</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-28 13:51:16 -0800</bug_when>
    <thetext>Created attachment 176566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778300</commentid>
    <comment_count>13</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-11-28 13:52:17 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Thanks! A couple comments on beefing up the tests, and then I&apos;m good with it!

Thanks, updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778308</commentid>
    <comment_count>14</comment_count>
      <attachid>176566</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-11-28 13:57:02 -0800</bug_when>
    <thetext>Comment on attachment 176566
Patch

Thanks :) LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778328</commentid>
    <comment_count>15</comment_count>
      <attachid>176566</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-11-28 14:11:32 -0800</bug_when>
    <thetext>Comment on attachment 176566
Patch

Looks good (bots willing).  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778946</commentid>
    <comment_count>16</comment_count>
      <attachid>176566</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 05:35:24 -0800</bug_when>
    <thetext>Comment on attachment 176566
Patch

Clearing flags on attachment: 176566

Committed r136125: &lt;http://trac.webkit.org/changeset/136125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778947</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-29 05:35:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176371</attachid>
            <date>2012-11-27 17:03:25 -0800</date>
            <delta_ts>2012-11-28 06:10:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102824-20121127200101.patch</filename>
            <type>text/plain</type>
            <size>17145</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmZjQ4YTNjZTBhNzAz
ODgyOWNjMjQ0ZTk3NjFiMGU3ZDNlY2I4NC4uNDY3NzE4MjcyOWQ2N2QyZGY3YTRmNTRlMDc1ZTEx
YmJkNGY4OGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTExLTI3ICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NraWFdIEFkZCBt
aXNzaW5nIE9wYXF1ZVJlZ2lvblNraWEgbm90aWZpZXIgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzEzNTM5MCBleHBvc2VkIHNvbWUgY2FudmFzIGRyYXcgY2xpZW50cyB3aGljaCBhcmUg
bm90CisgICAgICAgIHVwZGF0aW5nIHRoZSBvcGFxdWUgcmVnaW9uIHRyYWNrZXIuIFRoaXMgcGF0
Y2ggYWRkcyB0aGUgcmVxdWlyZWQgbm90aWZpZXIgY2FsbHMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOiBwbGF0Zm9ybSB1bml0IHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmg6CisgICAgICAgIChPcGFxdWVSZWdpb25Ta2lh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OndyaXRlUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdCaXRtYXApOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd0JpdG1hcFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd0lSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0SCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkcmF3VGV4dE9uUGF0aCk6CisKIDIwMTItMTEtMjcg
IE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdp
b25zXSBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgcmVnaW9ucyBkbyBub3QgZXhwYW5kIHRvIGZpbGwg
dGhlaXIgY29udGFpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg1NWE1NzBlODMw
ZmM3N2QzNTg0YzY3MGQwYzBiMjA3Y2MyNzdmOWIuLjMxYTA0ODU4ZjFkNWFmNTJiMjcxMTcyMmNl
MDBjYWVlMDA2ZTAxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTItMTEtMjcgIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbU2tpYV0gQWRkIG1pc3NpbmcgT3BhcXVlUmVnaW9uU2tpYSBub3RpZmllciBjYWxs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9w
YXF1ZSByZWdpb24gdHJhY2tpbmcgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBQbGF0Zm9ybUNvbnRl
eHRTa2lhIGRyYXcgbWV0aG9kcy4KKworICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNr
aWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTItMTEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzU3ODYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tp
YS5oCmluZGV4IDdiZDgwMzkxODc5MzNhMjQ2ZGE5YjliYmZiY2E1MGVhNDBmNmFkNTkuLmRjYzFm
Y2I5NzhmNjU3ZDg1NzQ2NzRiMTVmZGI2MjZlNTljYTU2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBA
IC01NywxNiArNTcsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbWFnZU1hc2soY29uc3Qg
U2tSZWN0JiBpbWFnZU9wYXF1ZVJlY3QpOwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0
IFNrQml0bWFwKiBzb3VyY2VCaXRtYXApOwotICAgIHZvaWQgZGlkRHJhd1BhdGgoY29uc3QgUGxh
dGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2
b2lkIGRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIFNrQ2FudmFzOjpQ
b2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYp
OwotICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNv
bnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKLQogICAgIGVudW0gRHJhd1R5cGUgewogICAg
ICAgICBGaWxsT25seSwKICAgICAgICAgRmlsbE9yU3Ryb2tlCiAgICAgfTsKIAorICAgIHZvaWQg
ZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYsIGNv
bnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCogc291cmNlQml0bWFwKTsKKyAgICB2b2lkIGRp
ZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1BhdGgmLCBjb25z
dCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50
W10sIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9p
ZCBkaWREcmF3VW5ib3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1Bh
aW50JiwgRHJhd1R5cGUpOworCiAgICAgc3RydWN0IENhbnZhc0xheWVyU3RhdGUgewogICAgICAg
ICBDYW52YXNMYXllclN0YXRlKCkKICAgICAgICAgICAgIDogaGFzSW1hZ2VNYXNrKGZhbHNlKQpA
QCAtODUsNyArODYsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWREcmF3KGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jiwg
Y29uc3QgU2tCaXRtYXAqIHNvdXJjZUJpdG1hcCwgYm9vbCBmaWxsc0JvdW5kcywgRHJhd1R5cGUp
OwotICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwg
Y29uc3QgU2tQYWludCYsIERyYXdUeXBlKTsKICAgICB2b2lkIGFwcGx5T3BhcXVlUmVnaW9uRnJv
bUxheWVyKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmIGxheWVyT3Bh
cXVlUmVjdCwgY29uc3QgU2tQYWludCYpOwogICAgIHZvaWQgbWFya1JlY3RBc09wYXF1ZShjb25z
dCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFxdWUoY29uc3QgU2tSZWN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
UGxhdGZvcm1Db250ZXh0U2tpYS5oCmluZGV4IDQ5NGExMzhiODY0YTBkZGFhZGIxNmNmYzFmMTE2
NDc4MDlkOGU4MmMuLjUwMWFjMDU1Mjk2MTY0MDY0YThlZTEzMDJhYmNlNzUyZDkyNzI1MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
UGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0zMDIsNiArMzAyLDE0IEBAIGlubGluZSB2b2lkIFBs
YXRmb3JtQ29udGV4dFNraWE6OndyaXRlUGl4ZWxzKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGlu
dCB4LCBpbnQKICAgICBTa0NhbnZhczo6Q29uZmlnODg4OCBjb25maWc4ODg4KQogewogICAgIG1f
Y2FudmFzLT53cml0ZVBpeGVscyhiaXRtYXAsIHgsIHksIGNvbmZpZzg4ODgpOworCisgICAgaWYg
KG1fdHJhY2tPcGFxdWVSZWdpb24pIHsKKyAgICAgICAgU2tSZWN0IHJlY3QgPSBTa1JlY3Q6Ok1h
a2VYWVdIKHgsIHksIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVpZ2h0KCkpOworICAgICAgICBT
a1BhaW50IHBhaW50OworCisgICAgICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2Rl
OjprU3JjX01vZGUpOworICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3UmVjdCh0aGlzLCBy
ZWN0LCBwYWludCwgJmJpdG1hcCk7CisgICAgfQogfQogCiBpbmxpbmUgYm9vbCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjppc0RyYXdpbmdUb0xheWVyKCkgY29uc3QKQEAgLTM2MywxMiArMzcxLDIwIEBA
IGlubGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdCaXRtYXAoY29uc3QgU2tCaXRt
YXAmIGJpdG1hcCwgU2tTY2FsYXIgbGVmCiAgICAgY29uc3QgU2tQYWludCogcGFpbnQpCiB7CiAg
ICAgbV9jYW52YXMtPmRyYXdCaXRtYXAoYml0bWFwLCBsZWZ0LCB0b3AsIHBhaW50KTsKKworICAg
IGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKSB7CisgICAgICAgIFNrUmVjdCByZWN0ID0gU2tSZWN0
OjpNYWtlWFlXSChsZWZ0LCB0b3AsIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVpZ2h0KCkpOwor
ICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3UmVjdCh0aGlzLCByZWN0LCAqcGFpbnQsICZi
aXRtYXApOworICAgIH0KIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJh
d0JpdG1hcFJlY3QoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgY29uc3QgU2tJUmVjdCogaXNyYywK
ICAgICBjb25zdCBTa1JlY3QmIGRzdCwgY29uc3QgU2tQYWludCogcGFpbnQpCiB7CiAgICAgbV9j
YW52YXMtPmRyYXdCaXRtYXBSZWN0KGJpdG1hcCwgaXNyYywgZHN0LCBwYWludCk7CisKKyAgICBp
ZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1Jl
Y3QodGhpcywgZHN0LCAqcGFpbnQsICZiaXRtYXApOwogfQogCiBpbmxpbmUgdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpkcmF3T3ZhbChjb25zdCBTa1JlY3QmIG92YWwsIGNvbnN0IFNrUGFpbnQm
IHBhaW50KQpAQCAtNDA3LDI0ICs0MjMsNDEgQEAgaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6ZHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWkKIGlu
bGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdJUmVjdChjb25zdCBTa0lSZWN0JiBy
ZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJl
Y3QsIHBhaW50KTsKKworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKSB7CisgICAgICAgIFNr
UmVjdCByID0gU2tSZWN0OjpNYWtlRnJvbUlSZWN0KHJlY3QpOworICAgICAgICBtX29wYXF1ZVJl
Z2lvbi5kaWREcmF3UmVjdCh0aGlzLCByLCBwYWludCwgMCk7CisgICAgfQogfQogCiBpbmxpbmUg
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkcmF3UG9zVGV4dChjb25zdCB2b2lkKiB0ZXh0LCBz
aXplX3QgYnl0ZUxlbmd0aCwKICAgICBjb25zdCBTa1BvaW50IHBvc1tdLCBjb25zdCBTa1BhaW50
JiBwYWludCkKIHsKICAgICBtX2NhbnZhcy0+ZHJhd1Bvc1RleHQodGV4dCwgYnl0ZUxlbmd0aCwg
cG9zLCBwYWludCk7CisKKyAgICAvLyBGSVhNRTogY29tcHV0ZSBib3VuZHMgZm9yIHBvc2l0aW9u
ZWQgdGV4dC4KKyAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVS
ZWdpb24uZGlkRHJhd1VuYm91bmRlZCh0aGlzLCBwYWludCwgT3BhcXVlUmVnaW9uU2tpYTo6Rmls
bE9yU3Ryb2tlKTsKIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd1Bv
c1RleHRIKGNvbnN0IHZvaWQqIHRleHQsIHNpemVfdCBieXRlTGVuZ3RoLAogICAgIGNvbnN0IFNr
U2NhbGFyIHhwb3NbXSwgU2tTY2FsYXIgY29uc3RZLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsK
ICAgICBtX2NhbnZhcy0+ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0
WSwgcGFpbnQpOworCisgICAgLy8gRklYTUU6IGNvbXB1dGUgYm91bmRzIGZvciBwb3NpdGlvbmVk
IHRleHQuCisgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdpb24pCisgICAgICAgIG1fb3BhcXVlUmVn
aW9uLmRpZERyYXdVbmJvdW5kZWQodGhpcywgcGFpbnQsIE9wYXF1ZVJlZ2lvblNraWE6OkZpbGxP
clN0cm9rZSk7CiB9CiAKIGlubGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdUZXh0
T25QYXRoKGNvbnN0IHZvaWQqIHRleHQsIHNpemVfdCBieXRlTGVuZ3RoLAogICAgIGNvbnN0IFNr
UGF0aCYgcGF0aCwgY29uc3QgU2tNYXRyaXgqIG1hdHJpeCwgY29uc3QgU2tQYWludCYgcGFpbnQp
CiB7CiAgICAgbV9jYW52YXMtPmRyYXdUZXh0T25QYXRoKHRleHQsIGJ5dGVMZW5ndGgsIHBhdGgs
IG1hdHJpeCwgcGFpbnQpOworCisgICAgLy8gRklYTUU6IGNvbXB1dGUgYm91bmRzIGZvciBwb3Np
dGlvbmVkIHRleHQuCisgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdpb24pCisgICAgICAgIG1fb3Bh
cXVlUmVnaW9uLmRpZERyYXdVbmJvdW5kZWQodGhpcywgcGFpbnQsIE9wYXF1ZVJlZ2lvblNraWE6
OkZpbGxPclN0cm9rZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKaW5kZXggYzczYjYxNDlhY2I0
OGE0OGJiMGQzZjVkMzllMjY2Y2M5YTM5OTNhZi4uMGM3ZmQyMWRlZDUxMTQzMzkzYTRjNTJiMzVl
OWE3ZDZmZDY1NTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKQEAgLTY2NCw2ICs2NjQsMjAxIEBAIFRF
U1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlT3ZhbFRlc3QpCiAgICAgRVhQ
RUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVl
SVJlY3RUZXN0KQoreworICAgIFNrQml0bWFwIGJpdG1hcDsKKyAgICBiaXRtYXAuc2V0Q29uZmln
KFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMjAwLCAyMDApOworICAgIGJpdG1hcC5hbGxv
Y1BpeGVscygpOworICAgIGJpdG1hcC5lcmFzZUNvbG9yKDApOworICAgIFNrQ2FudmFzIGNhbnZh
cyhiaXRtYXApOworCisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoJmNh
bnZhcyk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKHRydWUpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29s
b3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIENvbG9yIGFscGhhKDAuMGYs
IDAuMGYsIDAuMGYsIDAuMGYpOworCisgICAgU2tQYWludCBvcGFxdWVQYWludDsKKyAgICBvcGFx
dWVQYWludC5zZXRDb2xvcihvcGFxdWUucmdiKCkpOworICAgIG9wYXF1ZVBhaW50LnNldFhmZXJt
b2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworICAgIFNrUGFpbnQgYWxwaGFQYWludDsK
KyAgICBhbHBoYVBhaW50LnNldENvbG9yKGFscGhhLnJnYigpKTsKKyAgICBhbHBoYVBhaW50LnNl
dFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworCisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3SVJl
Y3QoU2tJUmVjdDo6TWFrZVhZV0goMTAsIDEwLCA5MCwgOTApLCBvcGFxdWVQYWludCk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5v
cGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAs
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9y
bUNvbnRleHQuZHJhd0lSZWN0KFNrSVJlY3Q6Ok1ha2VYWVdIKDIwLCAyMCwgNzAsIDcwKSwgb3Bh
cXVlUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA5MCwgOTApLCBw
bGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhF
TFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkp
OworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdJUmVjdChTa0lSZWN0OjpNYWtlWFlXSCgwLCAw
LCAxMDAsIDEwKSwgYWxwaGFQYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwg
MTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Cisg
ICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdp
b24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0lSZWN0KFNrSVJlY3Q6
Ok1ha2VYWVdIKDAsIDAsIDEwMCwgMjApLCBhbHBoYVBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigp
LmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250
ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3
SVJlY3QoU2tJUmVjdDo6TWFrZVhZV0goNTAsIDAsIDUwLCAxMDApLCBhbHBoYVBhaW50KTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgNDAsIDgwKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1h
cCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKworVEVTVChQ
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVUZXh0VGVzdCkKK3sKKyAgICBTa0Jp
dG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAu
ZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKworICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3JtQ29u
dGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKKyAgICBDb2xvciBhbHBoYSgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKwor
ICAgIFNrUGFpbnQgb3BhcXVlUGFpbnQ7CisgICAgb3BhcXVlUGFpbnQuc2V0Q29sb3Iob3BhcXVl
LnJnYigpKTsKKyAgICBvcGFxdWVQYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a1Ny
Y19Nb2RlKTsKKyAgICBTa1BhaW50IGFscGhhUGFpbnQ7CisgICAgYWxwaGFQYWludC5zZXRDb2xv
cihhbHBoYS5yZ2IoKSk7CisgICAgYWxwaGFQYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9k
ZTo6a1NyY19Nb2RlKTsKKworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwg
OTAsIDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVy
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENI
KGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAg
IFNrUG9pbnQgcG9pbnQgPSBTa1BvaW50OjpNYWtlKDAsIDApOworICAgIFNrU2NhbGFyIHBvaW50
WCA9IDA7CisgICAgU2tQYXRoIHBhdGg7CisgICAgcGF0aC5tb3ZlVG8oU2tQb2ludDo6TWFrZSgw
LCAwKSk7CisgICAgcGF0aC5saW5lVG8oU2tQb2ludDo6TWFrZSgxMDAsIDApKTsKKyAgICBTa01h
dHJpeCBtYXRyaXg7CisgICAgbWF0cml4LnJlc2V0KCk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQu
ZHJhd1Bvc1RleHQoIkEiLCAxLCAmcG9pbnQsIG9wYXF1ZVBhaW50KTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5k
cmF3UG9zVGV4dCgiQSIsIDEsICZwb2ludCwgYWxwaGFQYWludCk7CisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRS
ZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3Np
dGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkw
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1Rf
UElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3UG9zVGV4dEgoIkEiLCAxLCAmcG9pbnRY
LCAwLCBvcGFxdWVQYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkw
LCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQ
RUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd1Bvc1RleHRIKCJBIiwgMSwgJnBv
aW50WCwgMCwgYWxwaGFQYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAw
LCAwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBF
Q1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKKworICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkw
KSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1h
cCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRm
b3JtQ29udGV4dC5kcmF3VGV4dE9uUGF0aCgiQSIsIDEsIHBhdGgsICZtYXRyaXgsIG9wYXF1ZVBh
aW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZv
cm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01B
VENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKwor
ICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3VGV4dE9uUGF0aCgiQSIsIDEsIHBhdGgsICZtYXRyaXgs
IGFscGhhUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIHBs
YXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVM
U19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
Cit9CisKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlQml0bWFwVGVz
dCkKK3sKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1h
cDo6a0FSR0JfODg4OF9Db25maWcsIDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMo
KTsKKyAgICBiaXRtYXAuZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFw
KTsKKworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOwor
ICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFw
aGljc0NvbnRleHQgY29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1
ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgIFNrQml0bWFwIG9wYXF1ZUJpdG1hcDsK
KyAgICBvcGFxdWVCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywg
MTAsIDEwKTsKKyAgICBvcGFxdWVCaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBvcGFxdWVCaXRt
YXAuc2V0SXNPcGFxdWUodHJ1ZSk7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBvcGFxdWVCaXRt
YXAuaGVpZ2h0KCk7ICsreSkKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBvcGFxdWVCaXRt
YXAud2lkdGgoKTsgKyt4KQorICAgICAgICAgICAgKm9wYXF1ZUJpdG1hcC5nZXRBZGRyMzIoeCwg
eSkgPSAweEZGRkZGRkZGOworCisgICAgU2tCaXRtYXAgYWxwaGFCaXRtYXA7CisgICAgYWxwaGFC
aXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAsIDEwKTsKKyAg
ICBhbHBoYUJpdG1hcC5hbGxvY1BpeGVscygpOworICAgIGFscGhhQml0bWFwLnNldElzT3BhcXVl
KGZhbHNlKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGFscGhhQml0bWFwLmhlaWdodCgpOyAr
K3kpCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgYWxwaGFCaXRtYXAud2lkdGgoKTsgKyt4
KQorICAgICAgICAgICAgKmFscGhhQml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4MDAwMDAwMDA7
CisKKyAgICBTa1BhaW50IHBhaW50OworICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJt
b2RlOjprU3JjX01vZGUpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEw
LCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA5MCwgOTApLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisg
ICAgcGxhdGZvcm1Db250ZXh0LndyaXRlUGl4ZWxzKG9wYXF1ZUJpdG1hcCwgNTAsIDUwKTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1h
cCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRm
b3JtQ29udGV4dC53cml0ZVBpeGVscyhhbHBoYUJpdG1hcCwgMCwgMCk7CisgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdp
b24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3Jt
Q29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQu
d3JpdGVQaXhlbHMoYWxwaGFCaXRtYXAsIDEwLCA1MCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMCwgMTAsIDgwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1Jl
Y3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5v
cGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVj
dCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRl
U291cmNlT3Zlcik7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCks
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJ
WEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0JpdG1hcChvcGFxdWVCaXRtYXAsIDEwLCAx
MCwgJnBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwg
cGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElY
RUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgp
KTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3Qml0bWFwKGFscGhhQml0bWFwLCAwLCAwLCAm
cGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA5MCwgOTApLCBwbGF0
Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNf
TUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwor
CisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdCaXRtYXAoYWxwaGFCaXRtYXAsIDUwLCAxMCwgJnBh
aW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgcGxhdGZv
cm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01B
VENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKwor
ICAgIGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5k
cmF3Qml0bWFwUmVjdChvcGFxdWVCaXRtYXAsIDAsIFNrUmVjdDo6TWFrZVhZV0goMTAsIDEwLCA5
MCwgOTApLCAmcGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA5MCwg
OTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVD
VF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdCaXRtYXBSZWN0KGFscGhhQml0bWFw
LCAwLCBTa1JlY3Q6Ok1ha2VYWVdIKDAsIDAsIDEwLCAxMCksICZwYWludCk7CisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVS
ZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRl
eHQuZHJhd0JpdG1hcFJlY3QoYWxwaGFCaXRtYXAsIDAsIFNrUmVjdDo6TWFrZVhZV0goMTAsIDEw
LCA1MCwgMTApLCAmcGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5
MCwgODApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVY
UEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworfQorCiBURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBjb250ZXh0VHJh
bnNwYXJlbmN5TGF5ZXJUZXN0KQogewogICAgIFNrQml0bWFwIGJpdG1hcDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176474</attachid>
            <date>2012-11-28 06:10:42 -0800</date>
            <delta_ts>2012-11-28 13:51:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102824-20121128090817.patch</filename>
            <type>text/plain</type>
            <size>18221</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzRmZjQ4YTNjZTBhNzAz
ODgyOWNjMjQ0ZTk3NjFiMGU3ZDNlY2I4NC4uNDY3NzE4MjcyOWQ2N2QyZGY3YTRmNTRlMDc1ZTEx
YmJkNGY4OGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTExLTI3ICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NraWFdIEFkZCBt
aXNzaW5nIE9wYXF1ZVJlZ2lvblNraWEgbm90aWZpZXIgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzEzNTM5MCBleHBvc2VkIHNvbWUgY2FudmFzIGRyYXcgY2xpZW50cyB3aGljaCBhcmUg
bm90CisgICAgICAgIHVwZGF0aW5nIHRoZSBvcGFxdWUgcmVnaW9uIHRyYWNrZXIuIFRoaXMgcGF0
Y2ggYWRkcyB0aGUgcmVxdWlyZWQgbm90aWZpZXIgY2FsbHMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOiBwbGF0Zm9ybSB1bml0IHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmg6CisgICAgICAgIChPcGFxdWVSZWdpb25Ta2lh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OndyaXRlUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdCaXRtYXApOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd0JpdG1hcFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd0lSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0SCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkcmF3VGV4dE9uUGF0aCk6CisKIDIwMTItMTEtMjcg
IE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBSZWdp
b25zXSBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQgcmVnaW9ucyBkbyBub3QgZXhwYW5kIHRvIGZpbGwg
dGhlaXIgY29udGFpbmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDg1NWE1NzBlODMw
ZmM3N2QzNTg0YzY3MGQwYzBiMjA3Y2MyNzdmOWIuLjMxYTA0ODU4ZjFkNWFmNTJiMjcxMTcyMmNl
MDBjYWVlMDA2ZTAxZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTItMTEtMjcgIEZsb3JpbiBNYWxpdGEgIDxmbWFsaXRhQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbU2tpYV0gQWRkIG1pc3NpbmcgT3BhcXVlUmVnaW9uU2tpYSBub3RpZmllciBjYWxs
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAyODI0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG9w
YXF1ZSByZWdpb24gdHJhY2tpbmcgdW5pdCB0ZXN0cyBmb3IgdGhlIG5ldyBQbGF0Zm9ybUNvbnRl
eHRTa2lhIGRyYXcgbWV0aG9kcy4KKworICAgICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNr
aWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAoV2ViQ29yZSk6
CisKIDIwMTItMTEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzU3ODYuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tp
YS5oCmluZGV4IDdiZDgwMzkxODc5MzNhMjQ2ZGE5YjliYmZiY2E1MGVhNDBmNmFkNTkuLmRjYzFm
Y2I5NzhmNjU3ZDg1NzQ2NzRiMTVmZGI2MjZlNTljYTU2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBA
IC01NywxNiArNTcsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJbWFnZU1hc2soY29uc3Qg
U2tSZWN0JiBpbWFnZU9wYXF1ZVJlY3QpOwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0
IFNrQml0bWFwKiBzb3VyY2VCaXRtYXApOwotICAgIHZvaWQgZGlkRHJhd1BhdGgoY29uc3QgUGxh
dGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2
b2lkIGRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIFNrQ2FudmFzOjpQ
b2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYp
OwotICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNv
bnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKLQogICAgIGVudW0gRHJhd1R5cGUgewogICAg
ICAgICBGaWxsT25seSwKICAgICAgICAgRmlsbE9yU3Ryb2tlCiAgICAgfTsKIAorICAgIHZvaWQg
ZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUmVjdCYsIGNv
bnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCogc291cmNlQml0bWFwKTsKKyAgICB2b2lkIGRp
ZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1BhdGgmLCBjb25z
dCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4
dFNraWEqLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50
W10sIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9p
ZCBkaWREcmF3VW5ib3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1Bh
aW50JiwgRHJhd1R5cGUpOworCiAgICAgc3RydWN0IENhbnZhc0xheWVyU3RhdGUgewogICAgICAg
ICBDYW52YXNMYXllclN0YXRlKCkKICAgICAgICAgICAgIDogaGFzSW1hZ2VNYXNrKGZhbHNlKQpA
QCAtODUsNyArODYsNiBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBkaWREcmF3KGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jiwg
Y29uc3QgU2tCaXRtYXAqIHNvdXJjZUJpdG1hcCwgYm9vbCBmaWxsc0JvdW5kcywgRHJhd1R5cGUp
OwotICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwg
Y29uc3QgU2tQYWludCYsIERyYXdUeXBlKTsKICAgICB2b2lkIGFwcGx5T3BhcXVlUmVnaW9uRnJv
bUxheWVyKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmIGxheWVyT3Bh
cXVlUmVjdCwgY29uc3QgU2tQYWludCYpOwogICAgIHZvaWQgbWFya1JlY3RBc09wYXF1ZShjb25z
dCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFxdWUoY29uc3QgU2tSZWN0Jik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
UGxhdGZvcm1Db250ZXh0U2tpYS5oCmluZGV4IDQ5NGExMzhiODY0YTBkZGFhZGIxNmNmYzFmMTE2
NDc4MDlkOGU4MmMuLjUwMWFjMDU1Mjk2MTY0MDY0YThlZTEzMDJhYmNlNzUyZDkyNzI1MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
UGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC0zMDIsNiArMzAyLDE0IEBAIGlubGluZSB2b2lkIFBs
YXRmb3JtQ29udGV4dFNraWE6OndyaXRlUGl4ZWxzKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGlu
dCB4LCBpbnQKICAgICBTa0NhbnZhczo6Q29uZmlnODg4OCBjb25maWc4ODg4KQogewogICAgIG1f
Y2FudmFzLT53cml0ZVBpeGVscyhiaXRtYXAsIHgsIHksIGNvbmZpZzg4ODgpOworCisgICAgaWYg
KG1fdHJhY2tPcGFxdWVSZWdpb24pIHsKKyAgICAgICAgU2tSZWN0IHJlY3QgPSBTa1JlY3Q6Ok1h
a2VYWVdIKHgsIHksIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVpZ2h0KCkpOworICAgICAgICBT
a1BhaW50IHBhaW50OworCisgICAgICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2Rl
OjprU3JjX01vZGUpOworICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3UmVjdCh0aGlzLCBy
ZWN0LCBwYWludCwgJmJpdG1hcCk7CisgICAgfQogfQogCiBpbmxpbmUgYm9vbCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjppc0RyYXdpbmdUb0xheWVyKCkgY29uc3QKQEAgLTM2MywxMiArMzcxLDIwIEBA
IGlubGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdCaXRtYXAoY29uc3QgU2tCaXRt
YXAmIGJpdG1hcCwgU2tTY2FsYXIgbGVmCiAgICAgY29uc3QgU2tQYWludCogcGFpbnQpCiB7CiAg
ICAgbV9jYW52YXMtPmRyYXdCaXRtYXAoYml0bWFwLCBsZWZ0LCB0b3AsIHBhaW50KTsKKworICAg
IGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKSB7CisgICAgICAgIFNrUmVjdCByZWN0ID0gU2tSZWN0
OjpNYWtlWFlXSChsZWZ0LCB0b3AsIGJpdG1hcC53aWR0aCgpLCBiaXRtYXAuaGVpZ2h0KCkpOwor
ICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3UmVjdCh0aGlzLCByZWN0LCAqcGFpbnQsICZi
aXRtYXApOworICAgIH0KIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJh
d0JpdG1hcFJlY3QoY29uc3QgU2tCaXRtYXAmIGJpdG1hcCwgY29uc3QgU2tJUmVjdCogaXNyYywK
ICAgICBjb25zdCBTa1JlY3QmIGRzdCwgY29uc3QgU2tQYWludCogcGFpbnQpCiB7CiAgICAgbV9j
YW52YXMtPmRyYXdCaXRtYXBSZWN0KGJpdG1hcCwgaXNyYywgZHN0LCBwYWludCk7CisKKyAgICBp
ZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1Jl
Y3QodGhpcywgZHN0LCAqcGFpbnQsICZiaXRtYXApOwogfQogCiBpbmxpbmUgdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpkcmF3T3ZhbChjb25zdCBTa1JlY3QmIG92YWwsIGNvbnN0IFNrUGFpbnQm
IHBhaW50KQpAQCAtNDA3LDI0ICs0MjMsNDEgQEAgaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6ZHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWkKIGlu
bGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdJUmVjdChjb25zdCBTa0lSZWN0JiBy
ZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBtX2NhbnZhcy0+ZHJhd0lSZWN0KHJl
Y3QsIHBhaW50KTsKKworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKSB7CisgICAgICAgIFNr
UmVjdCByID0gU2tSZWN0OjpNYWtlRnJvbUlSZWN0KHJlY3QpOworICAgICAgICBtX29wYXF1ZVJl
Z2lvbi5kaWREcmF3UmVjdCh0aGlzLCByLCBwYWludCwgMCk7CisgICAgfQogfQogCiBpbmxpbmUg
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkcmF3UG9zVGV4dChjb25zdCB2b2lkKiB0ZXh0LCBz
aXplX3QgYnl0ZUxlbmd0aCwKICAgICBjb25zdCBTa1BvaW50IHBvc1tdLCBjb25zdCBTa1BhaW50
JiBwYWludCkKIHsKICAgICBtX2NhbnZhcy0+ZHJhd1Bvc1RleHQodGV4dCwgYnl0ZUxlbmd0aCwg
cG9zLCBwYWludCk7CisKKyAgICAvLyBGSVhNRTogY29tcHV0ZSBib3VuZHMgZm9yIHBvc2l0aW9u
ZWQgdGV4dC4KKyAgICBpZiAobV90cmFja09wYXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVS
ZWdpb24uZGlkRHJhd1VuYm91bmRlZCh0aGlzLCBwYWludCwgT3BhcXVlUmVnaW9uU2tpYTo6Rmls
bE9yU3Ryb2tlKTsKIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd1Bv
c1RleHRIKGNvbnN0IHZvaWQqIHRleHQsIHNpemVfdCBieXRlTGVuZ3RoLAogICAgIGNvbnN0IFNr
U2NhbGFyIHhwb3NbXSwgU2tTY2FsYXIgY29uc3RZLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsK
ICAgICBtX2NhbnZhcy0+ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0
WSwgcGFpbnQpOworCisgICAgLy8gRklYTUU6IGNvbXB1dGUgYm91bmRzIGZvciBwb3NpdGlvbmVk
IHRleHQuCisgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdpb24pCisgICAgICAgIG1fb3BhcXVlUmVn
aW9uLmRpZERyYXdVbmJvdW5kZWQodGhpcywgcGFpbnQsIE9wYXF1ZVJlZ2lvblNraWE6OkZpbGxP
clN0cm9rZSk7CiB9CiAKIGlubGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdUZXh0
T25QYXRoKGNvbnN0IHZvaWQqIHRleHQsIHNpemVfdCBieXRlTGVuZ3RoLAogICAgIGNvbnN0IFNr
UGF0aCYgcGF0aCwgY29uc3QgU2tNYXRyaXgqIG1hdHJpeCwgY29uc3QgU2tQYWludCYgcGFpbnQp
CiB7CiAgICAgbV9jYW52YXMtPmRyYXdUZXh0T25QYXRoKHRleHQsIGJ5dGVMZW5ndGgsIHBhdGgs
IG1hdHJpeCwgcGFpbnQpOworCisgICAgLy8gRklYTUU6IGNvbXB1dGUgYm91bmRzIGZvciBwb3Np
dGlvbmVkIHRleHQuCisgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdpb24pCisgICAgICAgIG1fb3Bh
cXVlUmVnaW9uLmRpZERyYXdVbmJvdW5kZWQodGhpcywgcGFpbnQsIE9wYXF1ZVJlZ2lvblNraWE6
OkZpbGxPclN0cm9rZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKaW5kZXggYzczYjYxNDlhY2I0
OGE0OGJiMGQzZjVkMzllMjY2Y2M5YTM5OTNhZi4uZmNlZWE4YzlhNjE3YTQ2ZGUyZTU3MWYzNzE3
NWFkNzQxYzJhNmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKQEAgLTY2NCw2ICs2NjQsMjQ3IEBAIFRF
U1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlT3ZhbFRlc3QpCiAgICAgRVhQ
RUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKSk7CiB9CiAKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVl
SVJlY3RUZXN0KQoreworICAgIFNrQml0bWFwIGJpdG1hcDsKKyAgICBiaXRtYXAuc2V0Q29uZmln
KFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMjAwLCAyMDApOworICAgIGJpdG1hcC5hbGxv
Y1BpeGVscygpOworICAgIGJpdG1hcC5lcmFzZUNvbG9yKDApOworICAgIFNrQ2FudmFzIGNhbnZh
cyhiaXRtYXApOworCisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoJmNh
bnZhcyk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3BhcXVlUmVnaW9uKHRydWUpOwor
ICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOworCisgICAgQ29s
b3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAgIENvbG9yIGFscGhhKDAuMGYs
IDAuMGYsIDAuMGYsIDAuMGYpOworCisgICAgU2tQYWludCBvcGFxdWVQYWludDsKKyAgICBvcGFx
dWVQYWludC5zZXRDb2xvcihvcGFxdWUucmdiKCkpOworICAgIG9wYXF1ZVBhaW50LnNldFhmZXJt
b2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworICAgIFNrUGFpbnQgYWxwaGFQYWludDsK
KyAgICBhbHBoYVBhaW50LnNldENvbG9yKGFscGhhLnJnYigpKTsKKyAgICBhbHBoYVBhaW50LnNl
dFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworCisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3SVJl
Y3QoU2tJUmVjdDo6TWFrZVhZV0goMTAsIDEwLCA5MCwgOTApLCBvcGFxdWVQYWludCk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5v
cGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAs
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9y
bUNvbnRleHQuZHJhd0lSZWN0KFNrSVJlY3Q6Ok1ha2VYWVdIKDAsIDAsIDEwMCwgMTApLCBhbHBo
YVBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxh
dGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxT
X01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsK
KworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3SVJlY3QoU2tJUmVjdDo6TWFrZVhZV0goMCwgMCwg
MTAwLCAyMCksIGFscGhhUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIw
LCA5MCwgODApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAg
IEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9u
KCkuYXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdJUmVjdChTa0lSZWN0OjpN
YWtlWFlXSCg1MCwgMCwgNTAsIDEwMCksIGFscGhhUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDIwLCA0MCwgODApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworfQorCitURVNUKFBsYXRmb3JtQ29udGV4dFNr
aWFUZXN0LCB0cmFja09wYXF1ZVRleHRUZXN0KQoreworICAgIFNrQml0bWFwIGJpdG1hcDsKKyAg
ICBiaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMjAwLCAyMDAp
OworICAgIGJpdG1hcC5hbGxvY1BpeGVscygpOworICAgIGJpdG1hcC5lcmFzZUNvbG9yKDApOwor
ICAgIFNrQ2FudmFzIGNhbnZhcyhiaXRtYXApOworCisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBw
bGF0Zm9ybUNvbnRleHQoJmNhbnZhcyk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3Bh
cXVlUmVnaW9uKHRydWUpOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNv
bnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworICAg
IENvbG9yIGFscGhhKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOworCisgICAgU2tQYWludCBvcGFx
dWVQYWludDsKKyAgICBvcGFxdWVQYWludC5zZXRDb2xvcihvcGFxdWUucmdiKCkpOworICAgIG9w
YXF1ZVBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworICAgIFNr
UGFpbnQgYWxwaGFQYWludDsKKyAgICBhbHBoYVBhaW50LnNldENvbG9yKGFscGhhLnJnYigpKTsK
KyAgICBhbHBoYVBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOwor
CisgICAgU2tQb2ludCBwb2ludCA9IFNrUG9pbnQ6Ok1ha2UoMCwgMCk7CisgICAgU2tTY2FsYXIg
cG9pbnRYID0gMDsKKyAgICBTa1BhdGggcGF0aDsKKyAgICBwYXRoLm1vdmVUbyhTa1BvaW50OjpN
YWtlKDAsIDApKTsKKyAgICBwYXRoLmxpbmVUbyhTa1BvaW50OjpNYWtlKDEwMCwgMCkpOworCisg
ICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENv
bG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoMTAsIDEwLCA5MCwgOTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9u
KCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRy
YXdQb3NUZXh0KCJBIiwgMSwgJnBvaW50LCBhbHBoYVBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDAsIDApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJl
Y3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0
ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA5MCwgOTAp
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9Q
SVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdQb3NUZXh0SCgiQSIsIDEsICZwb2ludFgs
IDAsIGFscGhhUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCks
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJ
WEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CisKKyAgICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9w
YXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFx
dWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBs
YXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNv
bnRleHQuZHJhd1RleHRPblBhdGgoIkEiLCAxLCBwYXRoLCAwLCBhbHBoYVBhaW50KTsKKyAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVl
UmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0
Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworfQorCitURVNUKFBsYXRmb3Jt
Q29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZVdyaXRlUGl4ZWxzVGVzdCkKK3sKKyAgICBTa0Jp
dG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9D
b25maWcsIDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAu
ZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKworICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3JtQ29u
dGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29u
dGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKKworICAgIFNrQml0bWFwIG9wYXF1ZUJpdG1hcDsKKyAgICBvcGFxdWVCaXRt
YXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAsIDEwKTsKKyAgICBv
cGFxdWVCaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBvcGFxdWVCaXRtYXAuc2V0SXNPcGFxdWUo
dHJ1ZSk7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBvcGFxdWVCaXRtYXAuaGVpZ2h0KCk7ICsr
eSkKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBvcGFxdWVCaXRtYXAud2lkdGgoKTsgKyt4
KQorICAgICAgICAgICAgKm9wYXF1ZUJpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZG
OworCisgICAgU2tCaXRtYXAgYWxwaGFCaXRtYXA7CisgICAgYWxwaGFCaXRtYXAuc2V0Q29uZmln
KFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAsIDEwKTsKKyAgICBhbHBoYUJpdG1hcC5h
bGxvY1BpeGVscygpOworICAgIGFscGhhQml0bWFwLnNldElzT3BhcXVlKGZhbHNlKTsKKyAgICBm
b3IgKGludCB5ID0gMDsgeSA8IGFscGhhQml0bWFwLmhlaWdodCgpOyArK3kpCisgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgYWxwaGFCaXRtYXAud2lkdGgoKTsgKyt4KQorICAgICAgICAgICAg
KmFscGhhQml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4MDAwMDAwMDA7CisKKyAgICBTa1BhaW50
IHBhaW50OworICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUp
OworCisgICAgcGxhdGZvcm1Db250ZXh0LndyaXRlUGl4ZWxzKG9wYXF1ZUJpdG1hcCwgNTAsIDUw
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgMTAsIDEwKSwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENI
KGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAg
IGNvbnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBDb21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigp
LmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250
ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC53cml0
ZVBpeGVscyhhbHBoYUJpdG1hcCwgMCwgMCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVS
ZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQud3JpdGVQaXhlbHMoYWxw
aGFCaXRtYXAsIDEwLCA1MCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgyMCwgMTAsIDgw
LCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQ
RUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKSk7Cit9CisKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVl
RHJhd0JpdG1hcFRlc3QpCit7CisgICAgU2tCaXRtYXAgYml0bWFwOworICAgIGJpdG1hcC5zZXRD
b25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCAyMDAsIDIwMCk7CisgICAgYml0bWFw
LmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQ29sb3IoMCk7CisgICAgU2tDYW52YXMg
Y2FudmFzKGJpdG1hcCk7CisKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4
dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tPcGFxdWVSZWdpb24odHJ1
ZSk7CisgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7CisKKyAg
ICBDb2xvciBvcGFxdWUoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisKKyAgICBTa0JpdG1hcCBv
cGFxdWVCaXRtYXA7CisgICAgb3BhcXVlQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0Jf
ODg4OF9Db25maWcsIDEwLCAxMCk7CisgICAgb3BhcXVlQml0bWFwLmFsbG9jUGl4ZWxzKCk7Cisg
ICAgb3BhcXVlQml0bWFwLnNldElzT3BhcXVlKHRydWUpOworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgb3BhcXVlQml0bWFwLmhlaWdodCgpOyArK3kpCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4
IDwgb3BhcXVlQml0bWFwLndpZHRoKCk7ICsreCkKKyAgICAgICAgICAgICpvcGFxdWVCaXRtYXAu
Z2V0QWRkcjMyKHgsIHkpID0gMHhGRkZGRkZGRjsKKworICAgIFNrQml0bWFwIGFscGhhQml0bWFw
OworICAgIGFscGhhQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcs
IDEwLCAxMCk7CisgICAgYWxwaGFCaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBhbHBoYUJpdG1h
cC5zZXRJc09wYXF1ZShmYWxzZSk7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBhbHBoYUJpdG1h
cC5oZWlnaHQoKTsgKyt5KQorICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGFscGhhQml0bWFw
LndpZHRoKCk7ICsreCkKKyAgICAgICAgICAgICphbHBoYUJpdG1hcC5nZXRBZGRyMzIoeCwgeSkg
PSAweDAwMDAwMDAwOworCisgICAgU2tQYWludCBwYWludDsKKyAgICBwYWludC5zZXRYZmVybW9k
ZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3
Qml0bWFwKG9wYXF1ZUJpdG1hcCwgMTAsIDEwLCAmcGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAsIDEwLCAxMCwgMTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9h
dFJlY3QoMTAsIDEwLCA5MCwgOTApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBv
c2l0ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA5MCwg
OTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVD
VF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdCaXRtYXAoYWxwaGFCaXRtYXAsIDAs
IDAsICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCks
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJ
WEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0JpdG1hcChhbHBoYUJpdG1hcCwgNTAsIDEw
LCAmcGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDIwLCA5MCwgODApLCBw
bGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhF
TFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkp
OworfQorCitURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZURyYXdCaXRt
YXBSZWN0VGVzdCkKK3sKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZp
ZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxs
b2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52
YXMoYml0bWFwKTsKKworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZj
YW52YXMpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsK
KyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENv
bG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKworICAgIFNrQml0bWFwIG9wYXF1
ZUJpdG1hcDsKKyAgICBvcGFxdWVCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4
X0NvbmZpZywgMTAsIDEwKTsKKyAgICBvcGFxdWVCaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBv
cGFxdWVCaXRtYXAuc2V0SXNPcGFxdWUodHJ1ZSk7CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBv
cGFxdWVCaXRtYXAuaGVpZ2h0KCk7ICsreSkKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBv
cGFxdWVCaXRtYXAud2lkdGgoKTsgKyt4KQorICAgICAgICAgICAgKm9wYXF1ZUJpdG1hcC5nZXRB
ZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZGOworCisgICAgU2tCaXRtYXAgYWxwaGFCaXRtYXA7Cisg
ICAgYWxwaGFCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAs
IDEwKTsKKyAgICBhbHBoYUJpdG1hcC5hbGxvY1BpeGVscygpOworICAgIGFscGhhQml0bWFwLnNl
dElzT3BhcXVlKGZhbHNlKTsKKyAgICBmb3IgKGludCB5ID0gMDsgeSA8IGFscGhhQml0bWFwLmhl
aWdodCgpOyArK3kpCisgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgYWxwaGFCaXRtYXAud2lk
dGgoKTsgKyt4KQorICAgICAgICAgICAgKmFscGhhQml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4
MDAwMDAwMDA7CisKKyAgICBTa1BhaW50IHBhaW50OworICAgIHBhaW50LnNldFhmZXJtb2RlTW9k
ZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdCaXRt
YXBSZWN0KG9wYXF1ZUJpdG1hcCwgMCwgU2tSZWN0OjpNYWtlWFlXSCgxMCwgMTAsIDkwLCA5MCks
ICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBs
YXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVM
U19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0JpdG1hcFJlY3QoYWxwaGFCaXRtYXAsIDAsIFNr
UmVjdDo6TWFrZVhZV0goMCwgMCwgMTAsIDEwKSwgJnBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigp
LmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250
ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3
Qml0bWFwUmVjdChhbHBoYUJpdG1hcCwgMCwgU2tSZWN0OjpNYWtlWFlXSCgxMCwgMTAsIDUwLCAx
MCksICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMjAsIDkwLCA4MCks
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJ
WEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7Cit9CisKIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVu
Y3lMYXllclRlc3QpCiB7CiAgICAgU2tCaXRtYXAgYml0bWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176566</attachid>
            <date>2012-11-28 13:51:16 -0800</date>
            <delta_ts>2012-11-29 05:35:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102824-20121128164850.patch</filename>
            <type>text/plain</type>
            <size>20293</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQwNDRhN2QxNDE3YzA1
YTAyMzEyNDM0YzAyMWEzN2MyZmU0ZTViNy4uYmQxNGJjY2QxY2ZjYzVlYmM5NWM5YjBlYmZkOWI3
ZTJiMDM1M2JjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEyLTExLTI3ICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NraWFdIEFkZCBt
aXNzaW5nIE9wYXF1ZVJlZ2lvblNraWEgbm90aWZpZXIgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjgyNAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzEzNTM5MCBleHBvc2VkIHNvbWUgY2FudmFzIGRyYXcgY2xpZW50cyB3aGljaCBhcmUg
bm90CisgICAgICAgIHVwZGF0aW5nIHRoZSBvcGFxdWUgcmVnaW9uIHRyYWNrZXIuIFRoaXMgcGF0
Y2ggYWRkcyB0aGUgcmVxdWlyZWQgbm90aWZpZXIgY2FsbHMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzOiBwbGF0Zm9ybSB1bml0IHRlc3RzIGFkZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmg6CisgICAgICAgIChPcGFxdWVSZWdpb25Ta2lh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OndyaXRlUGl4ZWxzKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdCaXRtYXApOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd0JpdG1hcFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd0lSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0KToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0SCk6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpkcmF3VGV4dE9uUGF0aCk6CisKIDIwMTItMTEtMjgg
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAg
ICAgTW92ZSBjaGlsZHJlbkFmZmVjdGVkQnkgYml0cyBmcm9tIFJlbmRlclN0eWxlIHRvIEVsZW1l
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZDBkMDUyOTE5YTU1MTk3YTlkZmMyOGZj
NDIxYTVmNDRlNzcyZGM1OC4uNjc4MTcyOTg5MmJjZDM2Mzg1NmZjMDBjYTdiOGRkNGMxYmRjMGRh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0y
NyAgRmxvcmluIE1hbGl0YSAgPGZtYWxpdGFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTa2lh
XSBBZGQgbWlzc2luZyBPcGFxdWVSZWdpb25Ta2lhIG5vdGlmaWVyIGNhbGxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI4MjQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgb3BhcXVlIHJlZ2lvbiB0
cmFja2luZyB1bml0IHRlc3RzIGZvciB0aGUgbmV3IFBsYXRmb3JtQ29udGV4dFNraWEgZHJhdyBt
ZXRob2RzLgorCisgICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMS0y
OCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA3YmQ4MDM5MTg3
OTMzYTI0NmRhOWI5YmJmYmNhNTBlYTQwZjZhZDU5Li5kY2MxZmNiOTc4ZjY1N2Q4NTc0Njc0YjE1
ZmRiNjI2ZTU5Y2E1NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNTcsMTYgKzU3LDE3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0SW1hZ2VNYXNrKGNvbnN0IFNrUmVjdCYgaW1hZ2VPcGFxdWVS
ZWN0KTsKIAotICAgIHZvaWQgZGlkRHJhd1JlY3QoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSos
IGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCogc291cmNlQml0
bWFwKTsKLSAgICB2b2lkIGRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBj
b25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWREcmF3UG9pbnRzKGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9p
bnRzLCBjb25zdCBTa1BvaW50W10sIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2b2lkIGRpZERyYXdC
b3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBT
a1BhaW50Jik7Ci0KICAgICBlbnVtIERyYXdUeXBlIHsKICAgICAgICAgRmlsbE9ubHksCiAgICAg
ICAgIEZpbGxPclN0cm9rZQogICAgIH07CiAKKyAgICB2b2lkIGRpZERyYXdSZWN0KGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3Qg
U2tCaXRtYXAqIHNvdXJjZUJpdG1hcCk7CisgICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOworICAgIHZv
aWQgZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgU2tDYW52YXM6OlBv
aW50TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7
CisgICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29u
c3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChj
b25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgU2tQYWludCYsIERyYXdUeXBlKTsKKwog
ICAgIHN0cnVjdCBDYW52YXNMYXllclN0YXRlIHsKICAgICAgICAgQ2FudmFzTGF5ZXJTdGF0ZSgp
CiAgICAgICAgICAgICA6IGhhc0ltYWdlTWFzayhmYWxzZSkKQEAgLTg1LDcgKzg2LDYgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRT
a2lhKiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKiBzb3Vy
Y2VCaXRtYXAsIGJvb2wgZmlsbHNCb3VuZHMsIERyYXdUeXBlKTsKLSAgICB2b2lkIGRpZERyYXdV
bmJvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IFNrUGFpbnQmLCBEcmF3
VHlwZSk7CiAgICAgdm9pZCBhcHBseU9wYXF1ZVJlZ2lvbkZyb21MYXllcihjb25zdCBQbGF0Zm9y
bUNvbnRleHRTa2lhKiwgY29uc3QgU2tSZWN0JiBsYXllck9wYXF1ZVJlY3QsIGNvbnN0IFNrUGFp
bnQmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNPcGFxdWUoY29uc3QgU2tSZWN0Jik7CiAgICAgdm9p
ZCBtYXJrUmVjdEFzTm9uT3BhcXVlKGNvbnN0IFNrUmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
aAppbmRleCA0OTRhMTM4Yjg2NGEwZGRhYWRiMTZjZmMxZjExNjQ3ODA5ZDhlODJjLi41MDFhYzA1
NTI5NjE2NDA2NGE4ZWUxMzAyYWJjZTc1MmQ5MjcyNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
aApAQCAtMzAyLDYgKzMwMiwxNCBAQCBpbmxpbmUgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjp3
cml0ZVBpeGVscyhjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBpbnQgeCwgaW50CiAgICAgU2tDYW52
YXM6OkNvbmZpZzg4ODggY29uZmlnODg4OCkKIHsKICAgICBtX2NhbnZhcy0+d3JpdGVQaXhlbHMo
Yml0bWFwLCB4LCB5LCBjb25maWc4ODg4KTsKKworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9u
KSB7CisgICAgICAgIFNrUmVjdCByZWN0ID0gU2tSZWN0OjpNYWtlWFlXSCh4LCB5LCBiaXRtYXAu
d2lkdGgoKSwgYml0bWFwLmhlaWdodCgpKTsKKyAgICAgICAgU2tQYWludCBwYWludDsKKworICAg
ICAgICBwYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKKyAgICAg
ICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1JlY3QodGhpcywgcmVjdCwgcGFpbnQsICZiaXRtYXAp
OworICAgIH0KIH0KIAogaW5saW5lIGJvb2wgUGxhdGZvcm1Db250ZXh0U2tpYTo6aXNEcmF3aW5n
VG9MYXllcigpIGNvbnN0CkBAIC0zNjMsMTIgKzM3MSwyMCBAQCBpbmxpbmUgdm9pZCBQbGF0Zm9y
bUNvbnRleHRTa2lhOjpkcmF3Qml0bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIFNrU2NhbGFy
IGxlZgogICAgIGNvbnN0IFNrUGFpbnQqIHBhaW50KQogewogICAgIG1fY2FudmFzLT5kcmF3Qml0
bWFwKGJpdG1hcCwgbGVmdCwgdG9wLCBwYWludCk7CisKKyAgICBpZiAobV90cmFja09wYXF1ZVJl
Z2lvbikgeworICAgICAgICBTa1JlY3QgcmVjdCA9IFNrUmVjdDo6TWFrZVhZV0gobGVmdCwgdG9w
LCBiaXRtYXAud2lkdGgoKSwgYml0bWFwLmhlaWdodCgpKTsKKyAgICAgICAgbV9vcGFxdWVSZWdp
b24uZGlkRHJhd1JlY3QodGhpcywgcmVjdCwgKnBhaW50LCAmYml0bWFwKTsKKyAgICB9CiB9CiAK
IGlubGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdCaXRtYXBSZWN0KGNvbnN0IFNr
Qml0bWFwJiBiaXRtYXAsIGNvbnN0IFNrSVJlY3QqIGlzcmMsCiAgICAgY29uc3QgU2tSZWN0JiBk
c3QsIGNvbnN0IFNrUGFpbnQqIHBhaW50KQogewogICAgIG1fY2FudmFzLT5kcmF3Qml0bWFwUmVj
dChiaXRtYXAsIGlzcmMsIGRzdCwgcGFpbnQpOworCisgICAgaWYgKG1fdHJhY2tPcGFxdWVSZWdp
b24pCisgICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdSZWN0KHRoaXMsIGRzdCwgKnBhaW50
LCAmYml0bWFwKTsKIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6ZHJhd092
YWwoY29uc3QgU2tSZWN0JiBvdmFsLCBjb25zdCBTa1BhaW50JiBwYWludCkKQEAgLTQwNywyNCAr
NDIzLDQxIEBAIGlubGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdSZWN0KGNvbnN0
IFNrUmVjdCYgcmVjdCwgY29uc3QgU2tQYWludCYgcGFpCiBpbmxpbmUgdm9pZCBQbGF0Zm9ybUNv
bnRleHRTa2lhOjpkcmF3SVJlY3QoY29uc3QgU2tJUmVjdCYgcmVjdCwgY29uc3QgU2tQYWludCYg
cGFpbnQpCiB7CiAgICAgbV9jYW52YXMtPmRyYXdJUmVjdChyZWN0LCBwYWludCk7CisKKyAgICBp
ZiAobV90cmFja09wYXF1ZVJlZ2lvbikgeworICAgICAgICBTa1JlY3QgciA9IFNrUmVjdDo6TWFr
ZUZyb21JUmVjdChyZWN0KTsKKyAgICAgICAgbV9vcGFxdWVSZWdpb24uZGlkRHJhd1JlY3QodGhp
cywgciwgcGFpbnQsIDApOworICAgIH0KIH0KIAogaW5saW5lIHZvaWQgUGxhdGZvcm1Db250ZXh0
U2tpYTo6ZHJhd1Bvc1RleHQoY29uc3Qgdm9pZCogdGV4dCwgc2l6ZV90IGJ5dGVMZW5ndGgsCiAg
ICAgY29uc3QgU2tQb2ludCBwb3NbXSwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgbV9j
YW52YXMtPmRyYXdQb3NUZXh0KHRleHQsIGJ5dGVMZW5ndGgsIHBvcywgcGFpbnQpOworCisgICAg
Ly8gRklYTUU6IGNvbXB1dGUgYm91bmRzIGZvciBwb3NpdGlvbmVkIHRleHQuCisgICAgaWYgKG1f
dHJhY2tPcGFxdWVSZWdpb24pCisgICAgICAgIG1fb3BhcXVlUmVnaW9uLmRpZERyYXdVbmJvdW5k
ZWQodGhpcywgcGFpbnQsIE9wYXF1ZVJlZ2lvblNraWE6OkZpbGxPclN0cm9rZSk7CiB9CiAKIGlu
bGluZSB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRyYXdQb3NUZXh0SChjb25zdCB2b2lkKiB0
ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwKICAgICBjb25zdCBTa1NjYWxhciB4cG9zW10sIFNrU2Nh
bGFyIGNvbnN0WSwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgbV9jYW52YXMtPmRyYXdQ
b3NUZXh0SCh0ZXh0LCBieXRlTGVuZ3RoLCB4cG9zLCBjb25zdFksIHBhaW50KTsKKworICAgIC8v
IEZJWE1FOiBjb21wdXRlIGJvdW5kcyBmb3IgcG9zaXRpb25lZCB0ZXh0LgorICAgIGlmIChtX3Ry
YWNrT3BhcXVlUmVnaW9uKQorICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3VW5ib3VuZGVk
KHRoaXMsIHBhaW50LCBPcGFxdWVSZWdpb25Ta2lhOjpGaWxsT3JTdHJva2UpOwogfQogCiBpbmxp
bmUgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpkcmF3VGV4dE9uUGF0aChjb25zdCB2b2lkKiB0
ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwKICAgICBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNr
TWF0cml4KiBtYXRyaXgsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIG1fY2FudmFzLT5k
cmF3VGV4dE9uUGF0aCh0ZXh0LCBieXRlTGVuZ3RoLCBwYXRoLCBtYXRyaXgsIHBhaW50KTsKKwor
ICAgIC8vIEZJWE1FOiBjb21wdXRlIGJvdW5kcyBmb3IgcG9zaXRpb25lZCB0ZXh0LgorICAgIGlm
IChtX3RyYWNrT3BhcXVlUmVnaW9uKQorICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3VW5i
b3VuZGVkKHRoaXMsIHBhaW50LCBPcGFxdWVSZWdpb25Ta2lhOjpGaWxsT3JTdHJva2UpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1BsYXRmb3JtQ29u
dGV4dFNraWFUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1D
b250ZXh0U2tpYVRlc3QuY3BwCmluZGV4IGM3M2I2MTQ5YWNiNDhhNDhiYjBkM2Y1ZDM5ZTI2NmNj
OWEzOTkzYWYuLjUyOWFhN2YwNzM1MGQ1ZmQ0MWJiZmJjMjJiNjIwNzA0YmM4NGI2MWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0
U2tpYVRlc3QuY3BwCkBAIC02NjQsNiArNjY0LDI4MyBAQCBURVNUKFBsYXRmb3JtQ29udGV4dFNr
aWFUZXN0LCB0cmFja09wYXF1ZU92YWxUZXN0KQogICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0
bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwogfQogCitURVNU
KFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCB0cmFja09wYXF1ZUlSZWN0VGVzdCkKK3sKKyAgICBT
a0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4
OF9Db25maWcsIDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRt
YXAuZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKworICAgIFBs
YXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3Jt
Q29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQg
Y29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBm
LCAwLjBmLCAxLjBmKTsKKyAgICBDb2xvciBhbHBoYSgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsK
KworICAgIFNrUGFpbnQgb3BhcXVlUGFpbnQ7CisgICAgb3BhcXVlUGFpbnQuc2V0Q29sb3Iob3Bh
cXVlLnJnYigpKTsKKyAgICBvcGFxdWVQYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6
a1NyY19Nb2RlKTsKKyAgICBTa1BhaW50IGFscGhhUGFpbnQ7CisgICAgYWxwaGFQYWludC5zZXRD
b2xvcihhbHBoYS5yZ2IoKSk7CisgICAgYWxwaGFQYWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVy
bW9kZTo6a1NyY19Nb2RlKTsKKworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwg
MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNU
X1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1Jl
Y3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0lSZWN0KFNrSVJlY3Q6Ok1ha2VYWVdI
KDEwLCAxMCwgOTAsIDkwKSwgb3BhcXVlUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAsIDEwLCA5MCwgOTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdJUmVjdChT
a0lSZWN0OjpNYWtlWFlXSCgwLCAwLCAxMDAsIDEwKSwgYWxwaGFQYWludCk7CisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVS
ZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRl
eHQuZHJhd0lSZWN0KFNrSVJlY3Q6Ok1ha2VYWVdIKDAsIDAsIDEwMCwgMjApLCBhbHBoYVBhaW50
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgOTAsIDgwKSwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENI
KGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAg
IHBsYXRmb3JtQ29udGV4dC5kcmF3SVJlY3QoU2tJUmVjdDo6TWFrZVhZV0goNTAsIDAsIDUwLCAx
MDApLCBhbHBoYVBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAyMCwgNDAs
IDgwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBF
Q1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFz
UmVjdCgpKTsKK30KKworVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVU
ZXh0VGVzdCkKK3sKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxsb2NQ
aXhlbHMoKTsKKyAgICBiaXRtYXAuZXJhc2VDb2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMo
Yml0bWFwKTsKKworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52
YXMpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAg
ICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9y
IG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAgICBDb2xvciBhbHBoYSgwLjBmLCAw
LjBmLCAwLjBmLCAwLjBmKTsKKworICAgIFNrUGFpbnQgb3BhcXVlUGFpbnQ7CisgICAgb3BhcXVl
UGFpbnQuc2V0Q29sb3Iob3BhcXVlLnJnYigpKTsKKyAgICBvcGFxdWVQYWludC5zZXRYZmVybW9k
ZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKKyAgICBTa1BhaW50IGFscGhhUGFpbnQ7Cisg
ICAgYWxwaGFQYWludC5zZXRDb2xvcihhbHBoYS5yZ2IoKSk7CisgICAgYWxwaGFQYWludC5zZXRY
ZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKKworICAgIFNrUG9pbnQgcG9pbnQg
PSBTa1BvaW50OjpNYWtlKDAsIDApOworICAgIFNrU2NhbGFyIHBvaW50WCA9IDA7CisgICAgU2tQ
YXRoIHBhdGg7CisgICAgcGF0aC5tb3ZlVG8oU2tQb2ludDo6TWFrZSgwLCAwKSk7CisgICAgcGF0
aC5saW5lVG8oU2tQb2ludDo6TWFrZSgxMDAsIDApKTsKKworICAgIGNvbnRleHQuZmlsbFJlY3Qo
RmxvYXRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgb3BhcXVlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBD
b21wb3NpdGVTb3VyY2VPdmVyKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwg
NTAsIDUwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBF
WFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigp
LmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3UG9zVGV4dCgiQSIsIDEsICZw
b2ludCwgb3BhcXVlUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1
MCwgNTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVY
UEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdQb3NUZXh0KCJBIiwgMSwgJnBv
aW50LCBhbHBoYVBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDAp
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9Q
SVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOworCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoNTAsIDUwLCA1MCwgNTApLCBv
cGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDUwLCA1MCwgNTApLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBw
bGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1D
b250ZXh0LmRyYXdQb3NUZXh0SCgiQSIsIDEsICZwb2ludFgsIDAsIG9wYXF1ZVBhaW50KTsKKyAg
ICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCA1MCwgNTAsIDUwKSwgcGxhdGZvcm1Db250ZXh0
Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1h
cCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRm
b3JtQ29udGV4dC5kcmF3UG9zVGV4dEgoIkEiLCAxLCAmcG9pbnRYLCAwLCBhbHBoYVBhaW50KTsK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFw
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgY29udGV4
dC5maWxsUmVjdChGbG9hdFJlY3QoNTAsIDUwLCA1MCwgNTApLCBvcGFxdWUsIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoNTAsIDUwLCA1MCwgNTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdUZXh0T25Q
YXRoKCJBIiwgMSwgcGF0aCwgMCwgb3BhcXVlUGFpbnQpOworICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoNTAsIDUwLCA1MCwgNTApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQu
b3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgcGxhdGZvcm1Db250ZXh0LmRyYXdUZXh0
T25QYXRoKCJBIiwgMSwgcGF0aCwgMCwgYWxwaGFQYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgwLCAwLCAwLCAwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9w
YXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKworVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVz
dCwgdHJhY2tPcGFxdWVXcml0ZVBpeGVsc1Rlc3QpCit7CisgICAgU2tCaXRtYXAgYml0bWFwOwor
ICAgIGJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCAyMDAsIDIw
MCk7CisgICAgYml0bWFwLmFsbG9jUGl4ZWxzKCk7CisgICAgYml0bWFwLmVyYXNlQ29sb3IoMCk7
CisgICAgU2tDYW52YXMgY2FudmFzKGJpdG1hcCk7CisKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lh
IHBsYXRmb3JtQ29udGV4dCgmY2FudmFzKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuc2V0VHJhY2tP
cGFxdWVSZWdpb24odHJ1ZSk7CisgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQoJnBsYXRmb3Jt
Q29udGV4dCk7CisKKyAgICBDb2xvciBvcGFxdWUoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7CisK
KyAgICBTa0JpdG1hcCBvcGFxdWVCaXRtYXA7CisgICAgb3BhcXVlQml0bWFwLnNldENvbmZpZyhT
a0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDEwLCAxMCk7CisgICAgb3BhcXVlQml0bWFwLmFs
bG9jUGl4ZWxzKCk7CisgICAgb3BhcXVlQml0bWFwLnNldElzT3BhcXVlKHRydWUpOworICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgb3BhcXVlQml0bWFwLmhlaWdodCgpOyArK3kpCisgICAgICAgIGZv
ciAoaW50IHggPSAwOyB4IDwgb3BhcXVlQml0bWFwLndpZHRoKCk7ICsreCkKKyAgICAgICAgICAg
ICpvcGFxdWVCaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID0gMHhGRkZGRkZGRjsKKworICAgIFNrQml0
bWFwIGFscGhhQml0bWFwOworICAgIGFscGhhQml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FS
R0JfODg4OF9Db25maWcsIDEwLCAxMCk7CisgICAgYWxwaGFCaXRtYXAuYWxsb2NQaXhlbHMoKTsK
KyAgICBhbHBoYUJpdG1hcC5zZXRJc09wYXF1ZShmYWxzZSk7CisgICAgZm9yIChpbnQgeSA9IDA7
IHkgPCBhbHBoYUJpdG1hcC5oZWlnaHQoKTsgKyt5KQorICAgICAgICBmb3IgKGludCB4ID0gMDsg
eCA8IGFscGhhQml0bWFwLndpZHRoKCk7ICsreCkKKyAgICAgICAgICAgICphbHBoYUJpdG1hcC5n
ZXRBZGRyMzIoeCwgeSkgPSAweDAwMDAwMDAwOworCisgICAgU2tQYWludCBwYWludDsKKyAgICBw
YWludC5zZXRYZmVybW9kZU1vZGUoU2tYZmVybW9kZTo6a1NyY19Nb2RlKTsKKworICAgIHBsYXRm
b3JtQ29udGV4dC53cml0ZVBpeGVscyhvcGFxdWVCaXRtYXAsIDUwLCA1MCk7CisgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg1MCwgNTAsIDEwLCAxMCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVS
ZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRm
b3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBjb250ZXh0LmZpbGxS
ZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJH
QiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwg
MTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7Cisg
ICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdp
b24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQud3JpdGVQaXhlbHMoYWxwaGFC
aXRtYXAsIDEwLCAwKTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkw
KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1Rf
UElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC53cml0ZVBpeGVscyhhbHBoYUJpdG1hcCwgMTAs
IDEpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDExLCA5MCwgODkpLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0goYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisg
ICAgcGxhdGZvcm1Db250ZXh0LndyaXRlUGl4ZWxzKGFscGhhQml0bWFwLCAwLCAxMCk7CisgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTEsIDkwLCA4OSksIHBsYXRmb3JtQ29udGV4dC5v
cGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAs
IHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9y
bUNvbnRleHQud3JpdGVQaXhlbHMoYWxwaGFCaXRtYXAsIDEsIDEwKTsKKyAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDExLCAxMSwgODksIDg5KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lv
bigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKworVEVTVChQbGF0Zm9ybUNvbnRl
eHRTa2lhVGVzdCwgdHJhY2tPcGFxdWVEcmF3Qml0bWFwVGVzdCkKK3sKKyAgICBTa0JpdG1hcCBi
aXRtYXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcs
IDIwMCwgMjAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJhc2VD
b2xvcigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKworICAgIFBsYXRmb3JtQ29u
dGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3JtQ29udGV4dC5z
ZXRUcmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgm
cGxhdGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAx
LjBmKTsKKworICAgIFNrQml0bWFwIG9wYXF1ZUJpdG1hcDsKKyAgICBvcGFxdWVCaXRtYXAuc2V0
Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAsIDEwKTsKKyAgICBvcGFxdWVC
aXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBvcGFxdWVCaXRtYXAuc2V0SXNPcGFxdWUodHJ1ZSk7
CisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBvcGFxdWVCaXRtYXAuaGVpZ2h0KCk7ICsreSkKKyAg
ICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBvcGFxdWVCaXRtYXAud2lkdGgoKTsgKyt4KQorICAg
ICAgICAgICAgKm9wYXF1ZUJpdG1hcC5nZXRBZGRyMzIoeCwgeSkgPSAweEZGRkZGRkZGOworCisg
ICAgU2tCaXRtYXAgYWxwaGFCaXRtYXA7CisgICAgYWxwaGFCaXRtYXAuc2V0Q29uZmlnKFNrQml0
bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMTAsIDEwKTsKKyAgICBhbHBoYUJpdG1hcC5hbGxvY1Bp
eGVscygpOworICAgIGFscGhhQml0bWFwLnNldElzT3BhcXVlKGZhbHNlKTsKKyAgICBmb3IgKGlu
dCB5ID0gMDsgeSA8IGFscGhhQml0bWFwLmhlaWdodCgpOyArK3kpCisgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgYWxwaGFCaXRtYXAud2lkdGgoKTsgKyt4KQorICAgICAgICAgICAgKmFscGhh
Qml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4MDAwMDAwMDA7CisKKyAgICBTa1BhaW50IHBhaW50
OworICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprU3JjX01vZGUpOworCisg
ICAgcGxhdGZvcm1Db250ZXh0LmRyYXdCaXRtYXAob3BhcXVlQml0bWFwLCAxMCwgMTAsICZwYWlu
dCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMCwgMTAsIDEwLCAxMCksIHBsYXRmb3Jt
Q29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRD
SChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAg
ICBjb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDkwLCA5MCksIG9wYXF1ZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24o
KS5hc1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29u
dGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJh
d0JpdG1hcChhbHBoYUJpdG1hcCwgMTAsIDAsICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgxMCwgMTAsIDkwLCA5MCksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5h
c1JlY3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4
dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0Jp
dG1hcChhbHBoYUJpdG1hcCwgMTAsIDEsICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgxMCwgMTEsIDkwLCA4OSksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1Jl
Y3QoKSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5v
cGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0JpdG1h
cChhbHBoYUJpdG1hcCwgMCwgMTAsICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgxMCwgMTEsIDkwLCA4OSksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3Qo
KSk7CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFx
dWVSZWdpb24oKS5hc1JlY3QoKSk7CisKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd0JpdG1hcChh
bHBoYUJpdG1hcCwgMSwgMTAsICZwYWludCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MSwgMTEsIDg5LCA4OSksIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVSZWdpb24oKS5hc1JlY3QoKSk7
CisgICAgRVhQRUNUX1BJWEVMU19NQVRDSChiaXRtYXAsIHBsYXRmb3JtQ29udGV4dC5vcGFxdWVS
ZWdpb24oKS5hc1JlY3QoKSk7Cit9CisKK1RFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRy
YWNrT3BhcXVlRHJhd0JpdG1hcFJlY3RUZXN0KQoreworICAgIFNrQml0bWFwIGJpdG1hcDsKKyAg
ICBiaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0NvbmZpZywgMjAwLCAyMDAp
OworICAgIGJpdG1hcC5hbGxvY1BpeGVscygpOworICAgIGJpdG1hcC5lcmFzZUNvbG9yKDApOwor
ICAgIFNrQ2FudmFzIGNhbnZhcyhiaXRtYXApOworCisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBw
bGF0Zm9ybUNvbnRleHQoJmNhbnZhcyk7CisgICAgcGxhdGZvcm1Db250ZXh0LnNldFRyYWNrT3Bh
cXVlUmVnaW9uKHRydWUpOworICAgIEdyYXBoaWNzQ29udGV4dCBjb250ZXh0KCZwbGF0Zm9ybUNv
bnRleHQpOworCisgICAgQ29sb3Igb3BhcXVlKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOworCisg
ICAgU2tCaXRtYXAgb3BhcXVlQml0bWFwOworICAgIG9wYXF1ZUJpdG1hcC5zZXRDb25maWcoU2tC
aXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCAxMCwgMTApOworICAgIG9wYXF1ZUJpdG1hcC5hbGxv
Y1BpeGVscygpOworICAgIG9wYXF1ZUJpdG1hcC5zZXRJc09wYXF1ZSh0cnVlKTsKKyAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IG9wYXF1ZUJpdG1hcC5oZWlnaHQoKTsgKyt5KQorICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IG9wYXF1ZUJpdG1hcC53aWR0aCgpOyArK3gpCisgICAgICAgICAgICAq
b3BhcXVlQml0bWFwLmdldEFkZHIzMih4LCB5KSA9IDB4RkZGRkZGRkY7CisKKyAgICBTa0JpdG1h
cCBhbHBoYUJpdG1hcDsKKyAgICBhbHBoYUJpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnLCAxMCwgMTApOworICAgIGFscGhhQml0bWFwLmFsbG9jUGl4ZWxzKCk7Cisg
ICAgYWxwaGFCaXRtYXAuc2V0SXNPcGFxdWUoZmFsc2UpOworICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgYWxwaGFCaXRtYXAuaGVpZ2h0KCk7ICsreSkKKyAgICAgICAgZm9yIChpbnQgeCA9IDA7IHgg
PCBhbHBoYUJpdG1hcC53aWR0aCgpOyArK3gpCisgICAgICAgICAgICAqYWxwaGFCaXRtYXAuZ2V0
QWRkcjMyKHgsIHkpID0gMHgwMDAwMDAwMDsKKworICAgIFNrUGFpbnQgcGFpbnQ7CisgICAgcGFp
bnQuc2V0WGZlcm1vZGVNb2RlKFNrWGZlcm1vZGU6OmtTcmNfTW9kZSk7CisKKyAgICBwbGF0Zm9y
bUNvbnRleHQuZHJhd0JpdG1hcFJlY3Qob3BhcXVlQml0bWFwLCAwLCBTa1JlY3Q6Ok1ha2VYWVdI
KDEwLCAxMCwgOTAsIDkwKSwgJnBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEw
LCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsK
KyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJl
Z2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3Qml0bWFwUmVjdChh
bHBoYUJpdG1hcCwgMCwgU2tSZWN0OjpNYWtlWFlXSCgxMCwgMCwgMTAsIDEwKSwgJnBhaW50KTsK
KyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMCwgOTAsIDkwKSwgcGxhdGZvcm1Db250
ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJp
dG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBs
YXRmb3JtQ29udGV4dC5kcmF3Qml0bWFwUmVjdChhbHBoYUJpdG1hcCwgMCwgU2tSZWN0OjpNYWtl
WFlXSCgxMCwgMCwgMTAsIDExKSwgJnBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0
KDEwLCAxMSwgOTAsIDg5KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgp
KTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1
ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAgIHBsYXRmb3JtQ29udGV4dC5kcmF3Qml0bWFwUmVj
dChhbHBoYUJpdG1hcCwgMCwgU2tSZWN0OjpNYWtlWFlXSCgwLCAxMCwgMTAsIDEwKSwgJnBhaW50
KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwLCAxMSwgOTAsIDg5KSwgcGxhdGZvcm1D
b250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENI
KGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKKworICAg
IHBsYXRmb3JtQ29udGV4dC5kcmF3Qml0bWFwUmVjdChhbHBoYUJpdG1hcCwgMCwgU2tSZWN0OjpN
YWtlWFlXSCgwLCAxMCwgMTEsIDEwKSwgJnBhaW50KTsKKyAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDExLCAxMSwgODksIDg5KSwgcGxhdGZvcm1Db250ZXh0Lm9wYXF1ZVJlZ2lvbigpLmFzUmVj
dCgpKTsKKyAgICBFWFBFQ1RfUElYRUxTX01BVENIKGJpdG1hcCwgcGxhdGZvcm1Db250ZXh0Lm9w
YXF1ZVJlZ2lvbigpLmFzUmVjdCgpKTsKK30KKwogVEVTVChQbGF0Zm9ybUNvbnRleHRTa2lhVGVz
dCwgY29udGV4dFRyYW5zcGFyZW5jeUxheWVyVGVzdCkKIHsKICAgICBTa0JpdG1hcCBiaXRtYXA7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>